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
+4 -1
View File
@@ -212,6 +212,8 @@ impl Parser {
Some(AssignOp::StarEqual)
} else if self.match_kind(&[TokenKind::SlashEqual]) {
Some(AssignOp::SlashEqual)
} else if self.match_kind(&[TokenKind::PercentEqual]) {
Some(AssignOp::PercentEqual)
} else {
None
};
@@ -324,10 +326,11 @@ impl Parser {
fn factor(&mut self) -> Expr {
let mut expr = self.unary();
while self.match_kind(&[TokenKind::Star, TokenKind::Slash]) {
while self.match_kind(&[TokenKind::Star, TokenKind::Slash, TokenKind::Percent]) {
let op = match self.previous().kind {
TokenKind::Star => BinaryOp::Mul,
TokenKind::Slash => BinaryOp::Div,
TokenKind::Percent => BinaryOp::Mod,
_ => unreachable!(),
};
let right = self.unary();