fix: fix some shunting-yard realisation issues

This commit is contained in:
2026-06-14 03:48:00 +03:00
parent 8508f9e8a8
commit 5ac19124c2
+2 -2
View File
@@ -20,14 +20,14 @@ pub fn to_rpn(tokens: Vec<Token>) -> Vec<Token> {
Token::Number(_) => out_buf.push(t), Token::Number(_) => out_buf.push(t),
Token::BracketOpen => act_buf.push(t), Token::BracketOpen => act_buf.push(t),
Token::BracketClose => { Token::BracketClose => {
while matches!(act_buf.last().unwrap(), Token::BracketOpen) { while !matches!(act_buf.last().unwrap(), Token::BracketOpen) {
out_buf.push(act_buf.pop().unwrap()); out_buf.push(act_buf.pop().unwrap());
} }
act_buf.pop(); act_buf.pop();
} }
_ => { _ => {
if !act_buf.is_empty() { if !act_buf.is_empty() {
while priority.get(&t).unwrap() < priority.get(act_buf.last().unwrap()).unwrap() { while priority.get(&t).unwrap() <= priority.get(act_buf.last().unwrap()).unwrap() {
out_buf.push(act_buf.pop().unwrap()); out_buf.push(act_buf.pop().unwrap());
if act_buf.is_empty() { break; } if act_buf.is_empty() { break; }
} }