fix(ast): Equality prior than rational

This commit is contained in:
2026-06-12 11:42:34 +08:00
parent daae12d695
commit 6ff9c804aa
+24 -4
View File
@@ -262,8 +262,6 @@ impl Parser {
TokenValue::Greater => BinaryOp::Greater,
TokenValue::LessEqual => BinaryOp::LessEqual,
TokenValue::GreaterEqual => BinaryOp::GreaterEqual,
TokenValue::DoubleEqual => BinaryOp::Equal,
TokenValue::NotEqual => BinaryOp::NotEqual,
_ => break,
};
self.advance(1);
@@ -280,15 +278,37 @@ impl Parser {
}
Ok(left)
}
fn parse_logical_and(&mut self) -> Result<Expr, ParseProcessError> {
fn parse_equality(&mut self) -> Result<Expr, ParseProcessError> {
let mut left = self.parse_relational()?;
loop {
let op = match self.peek().value {
TokenValue::DoubleEqual => BinaryOp::Equal,
TokenValue::NotEqual => BinaryOp::NotEqual,
_ => break,
};
self.advance(1);
let right = self.parse_relational()?;
let span = Span::from_two(left.span, right.span);
left = Expr {
value: ExprValue::BinaryOp {
lhs: Box::new(left),
op,
rhs: Box::new(right),
},
span,
};
}
Ok(left)
}
fn parse_logical_and(&mut self) -> Result<Expr, ParseProcessError> {
let mut left = self.parse_equality()?;
loop {
let op = match self.peek().value {
TokenValue::And => BinaryOp::And,
_ => break,
};
self.advance(1);
let right = self.parse_relational()?;
let right = self.parse_equality()?;
let span = Span::from_two(left.span, right.span);
left = Expr {
value: ExprValue::BinaryOp {