feat: 添加取模运算符支持,更新解析器、解释器、词法分析器和相关示例以处理相关语法

This commit is contained in:
0264408
2026-06-16 09:36:32 +08:00
parent 259dcf1af9
commit bd052699f5
6 changed files with 33 additions and 3 deletions
+12
View File
@@ -314,6 +314,13 @@ impl Interpreter {
token: None,
}),
},
crate::ast::expr::BinaryOp::Mod => match (l,r) {
(Value::Number(a), Value::Number(b)) => Ok(Value::Number(a%b)),
_ => Err(RuntimeError::RuntimeError {
message: "Invalid '%' operands".to_string(),
token: None,
}),
},
crate::ast::expr::BinaryOp::Greater => Ok(Value::Bool(self.as_number(&l)? > self.as_number(&r)?)),
crate::ast::expr::BinaryOp::GreaterEqual => Ok(Value::Bool(self.as_number(&l)? >= self.as_number(&r)?)),
crate::ast::expr::BinaryOp::Less => Ok(Value::Bool(self.as_number(&l)? < self.as_number(&r)?)),
@@ -443,6 +450,11 @@ impl Interpreter {
let right_num = self.as_number(&right)?;
Ok(Value::Number(left_num / right_num))
}
AssignOp::PercentEqual => {
let left_num = self.as_number(&left)?;
let right_num = self.as_number(&right)?;
Ok(Value::Number(left_num % right_num))
}
}
}