From 529008a1fc93d1dbc082acc5204994be4644c39e Mon Sep 17 00:00:00 2001 From: teascade Date: Mon, 6 Jul 2020 11:44:19 +0300 Subject: [PATCH] Fix parsing arithmetic expressions --- reid_src/test.reid | 2 +- src/parser/parsed_reid.rs | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/reid_src/test.reid b/reid_src/test.reid index 5403a71..0e0285c 100644 --- a/reid_src/test.reid +++ b/reid_src/test.reid @@ -1,3 +1,3 @@ -let number = 2 + 5 * 2 + 5 + 1 * 10 + 1; +let number = 2 * 5 * 2 - 10 + 5 * 7; let text = "" + number; print(text); \ No newline at end of file diff --git a/src/parser/parsed_reid.rs b/src/parser/parsed_reid.rs index 0d1721b..65077a0 100644 --- a/src/parser/parsed_reid.rs +++ b/src/parser/parsed_reid.rs @@ -149,11 +149,10 @@ impl ArithmeticExpression { // Replace all (expr, "*"), (expr, any) => ((mult_expr, any) let clone = list.clone(); let iter = clone.iter().enumerate().rev(); - let mut previous: Option<(Expression, Option)> = None; for (idx, (exp, sign)) in iter { if let Some(sign) = sign { if sign == "*" { - if let Some((exp2, sign2)) = previous { + if let Some((exp2, sign2)) = list.clone().get(idx + 1) { list.remove(idx + 1); list.remove(idx); let expr = Expression::ArithmeticExpression( @@ -164,7 +163,6 @@ impl ArithmeticExpression { }; } } - previous = Some((exp.clone(), sign.clone())); } let mut ret = Err(SyntaxError::Fatal);