mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-03 05:54:33 +00:00
Add: floordiv
This commit is contained in:
parent
c7aa6bd904
commit
900a5bb38e
3 changed files with 13 additions and 0 deletions
|
@ -52,6 +52,7 @@ fn try_get_op_kind_from_token(kind: TokenKind) -> EvalResult<OpKind> {
|
|||
TokenKind::Minus => Ok(OpKind::Sub),
|
||||
TokenKind::Star => Ok(OpKind::Mul),
|
||||
TokenKind::Slash => Ok(OpKind::Div),
|
||||
TokenKind::FloorDiv => Ok(OpKind::FloorDiv),
|
||||
TokenKind::Pow => Ok(OpKind::Pow),
|
||||
TokenKind::Mod => Ok(OpKind::Mod),
|
||||
TokenKind::DblEq => Ok(OpKind::Eq),
|
||||
|
@ -78,6 +79,7 @@ fn op_to_name(op: OpKind) -> &'static str {
|
|||
OpKind::Sub => "__sub__",
|
||||
OpKind::Mul => "__mul__",
|
||||
OpKind::Div => "__div__",
|
||||
OpKind::FloorDiv => "__floordiv__",
|
||||
OpKind::Mod => "__mod__",
|
||||
OpKind::Pow => "__pow__",
|
||||
OpKind::Pos => "__pos__",
|
||||
|
@ -664,6 +666,13 @@ impl Context {
|
|||
line!(),
|
||||
))
|
||||
}),
|
||||
FloorDiv => lhs.try_floordiv(rhs).ok_or_else(|| {
|
||||
EvalErrors::from(EvalError::unreachable(
|
||||
self.cfg.input.clone(),
|
||||
fn_name!(),
|
||||
line!(),
|
||||
))
|
||||
}),
|
||||
Gt => lhs.try_gt(rhs).ok_or_else(|| {
|
||||
EvalErrors::from(EvalError::unreachable(
|
||||
self.cfg.input.clone(),
|
||||
|
|
|
@ -25,6 +25,7 @@ pub fn binop_to_dname(op: &str) -> &str {
|
|||
"-" => "__sub__",
|
||||
"*" => "__mul__",
|
||||
"/" => "__div__",
|
||||
"//" => "__floordiv__",
|
||||
"**" => "__pow__",
|
||||
"%" => "__mod__",
|
||||
".." => "__rng__",
|
||||
|
@ -66,6 +67,7 @@ pub fn readable_name(name: &str) -> &str {
|
|||
"__sub__" => "`-`",
|
||||
"__mul__" => "`*`",
|
||||
"__div__" => "`/`",
|
||||
"__floordiv__" => "`//`",
|
||||
"__pow__" => "`**`",
|
||||
"__mod__" => "`%`",
|
||||
"__rng__" => "`..`",
|
||||
|
|
|
@ -17,6 +17,7 @@ pub enum OpKind {
|
|||
Sub,
|
||||
Mul,
|
||||
Div,
|
||||
FloorDiv,
|
||||
Pow,
|
||||
Mod,
|
||||
Pos,
|
||||
|
@ -45,6 +46,7 @@ impl fmt::Display for OpKind {
|
|||
Self::Sub => write!(f, "-"),
|
||||
Self::Mul => write!(f, "*"),
|
||||
Self::Div => write!(f, "/"),
|
||||
Self::FloorDiv => write!(f, "//"),
|
||||
Self::Pow => write!(f, "**"),
|
||||
Self::Mod => write!(f, "%"),
|
||||
Self::Pos => write!(f, "+"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue