mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-03 14:04: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::Minus => Ok(OpKind::Sub),
|
||||||
TokenKind::Star => Ok(OpKind::Mul),
|
TokenKind::Star => Ok(OpKind::Mul),
|
||||||
TokenKind::Slash => Ok(OpKind::Div),
|
TokenKind::Slash => Ok(OpKind::Div),
|
||||||
|
TokenKind::FloorDiv => Ok(OpKind::FloorDiv),
|
||||||
TokenKind::Pow => Ok(OpKind::Pow),
|
TokenKind::Pow => Ok(OpKind::Pow),
|
||||||
TokenKind::Mod => Ok(OpKind::Mod),
|
TokenKind::Mod => Ok(OpKind::Mod),
|
||||||
TokenKind::DblEq => Ok(OpKind::Eq),
|
TokenKind::DblEq => Ok(OpKind::Eq),
|
||||||
|
@ -78,6 +79,7 @@ fn op_to_name(op: OpKind) -> &'static str {
|
||||||
OpKind::Sub => "__sub__",
|
OpKind::Sub => "__sub__",
|
||||||
OpKind::Mul => "__mul__",
|
OpKind::Mul => "__mul__",
|
||||||
OpKind::Div => "__div__",
|
OpKind::Div => "__div__",
|
||||||
|
OpKind::FloorDiv => "__floordiv__",
|
||||||
OpKind::Mod => "__mod__",
|
OpKind::Mod => "__mod__",
|
||||||
OpKind::Pow => "__pow__",
|
OpKind::Pow => "__pow__",
|
||||||
OpKind::Pos => "__pos__",
|
OpKind::Pos => "__pos__",
|
||||||
|
@ -664,6 +666,13 @@ impl Context {
|
||||||
line!(),
|
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(|| {
|
Gt => lhs.try_gt(rhs).ok_or_else(|| {
|
||||||
EvalErrors::from(EvalError::unreachable(
|
EvalErrors::from(EvalError::unreachable(
|
||||||
self.cfg.input.clone(),
|
self.cfg.input.clone(),
|
||||||
|
|
|
@ -25,6 +25,7 @@ pub fn binop_to_dname(op: &str) -> &str {
|
||||||
"-" => "__sub__",
|
"-" => "__sub__",
|
||||||
"*" => "__mul__",
|
"*" => "__mul__",
|
||||||
"/" => "__div__",
|
"/" => "__div__",
|
||||||
|
"//" => "__floordiv__",
|
||||||
"**" => "__pow__",
|
"**" => "__pow__",
|
||||||
"%" => "__mod__",
|
"%" => "__mod__",
|
||||||
".." => "__rng__",
|
".." => "__rng__",
|
||||||
|
@ -66,6 +67,7 @@ pub fn readable_name(name: &str) -> &str {
|
||||||
"__sub__" => "`-`",
|
"__sub__" => "`-`",
|
||||||
"__mul__" => "`*`",
|
"__mul__" => "`*`",
|
||||||
"__div__" => "`/`",
|
"__div__" => "`/`",
|
||||||
|
"__floordiv__" => "`//`",
|
||||||
"__pow__" => "`**`",
|
"__pow__" => "`**`",
|
||||||
"__mod__" => "`%`",
|
"__mod__" => "`%`",
|
||||||
"__rng__" => "`..`",
|
"__rng__" => "`..`",
|
||||||
|
|
|
@ -17,6 +17,7 @@ pub enum OpKind {
|
||||||
Sub,
|
Sub,
|
||||||
Mul,
|
Mul,
|
||||||
Div,
|
Div,
|
||||||
|
FloorDiv,
|
||||||
Pow,
|
Pow,
|
||||||
Mod,
|
Mod,
|
||||||
Pos,
|
Pos,
|
||||||
|
@ -45,6 +46,7 @@ impl fmt::Display for OpKind {
|
||||||
Self::Sub => write!(f, "-"),
|
Self::Sub => write!(f, "-"),
|
||||||
Self::Mul => write!(f, "*"),
|
Self::Mul => write!(f, "*"),
|
||||||
Self::Div => write!(f, "/"),
|
Self::Div => write!(f, "/"),
|
||||||
|
Self::FloorDiv => write!(f, "//"),
|
||||||
Self::Pow => write!(f, "**"),
|
Self::Pow => write!(f, "**"),
|
||||||
Self::Mod => write!(f, "%"),
|
Self::Mod => write!(f, "%"),
|
||||||
Self::Pos => write!(f, "+"),
|
Self::Pos => write!(f, "+"),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue