mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 08:45:45 +02:00
Fix operator precedence parser (#4947)
This commit is contained in:
@ -4019,7 +4019,7 @@ pub fn parse_math_expression(
|
||||
);
|
||||
error = error.or(err);
|
||||
|
||||
if op_prec <= last_prec && expr_stack.len() > 1 {
|
||||
while op_prec <= last_prec && expr_stack.len() > 1 {
|
||||
// Collapse the right associated operations first
|
||||
// so that we can get back to a stack with a lower precedence
|
||||
let mut rhs = expr_stack
|
||||
@ -4029,6 +4029,14 @@ pub fn parse_math_expression(
|
||||
.pop()
|
||||
.expect("internal error: expression stack empty");
|
||||
|
||||
last_prec = op.precedence();
|
||||
|
||||
if last_prec < op_prec {
|
||||
expr_stack.push(op);
|
||||
expr_stack.push(rhs);
|
||||
break;
|
||||
}
|
||||
|
||||
let mut lhs = expr_stack
|
||||
.pop()
|
||||
.expect("internal error: expression stack empty");
|
||||
|
Reference in New Issue
Block a user