Fix parsing arithmetic expressions
This commit is contained in:
parent
082981f203
commit
529008a1fc
@ -1,3 +1,3 @@
|
|||||||
let number = 2 + 5 * 2 + 5 + 1 * 10 + 1;
|
let number = 2 * 5 * 2 - 10 + 5 * 7;
|
||||||
let text = "" + number;
|
let text = "" + number;
|
||||||
print(text);
|
print(text);
|
@ -149,11 +149,10 @@ impl ArithmeticExpression {
|
|||||||
// Replace all (expr, "*"), (expr, any) => ((mult_expr, any)
|
// Replace all (expr, "*"), (expr, any) => ((mult_expr, any)
|
||||||
let clone = list.clone();
|
let clone = list.clone();
|
||||||
let iter = clone.iter().enumerate().rev();
|
let iter = clone.iter().enumerate().rev();
|
||||||
let mut previous: Option<(Expression, Option<String>)> = None;
|
|
||||||
for (idx, (exp, sign)) in iter {
|
for (idx, (exp, sign)) in iter {
|
||||||
if let Some(sign) = sign {
|
if let Some(sign) = sign {
|
||||||
if 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 + 1);
|
||||||
list.remove(idx);
|
list.remove(idx);
|
||||||
let expr = Expression::ArithmeticExpression(
|
let expr = Expression::ArithmeticExpression(
|
||||||
@ -164,7 +163,6 @@ impl ArithmeticExpression {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
previous = Some((exp.clone(), sign.clone()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut ret = Err(SyntaxError::Fatal);
|
let mut ret = Err(SyntaxError::Fatal);
|
||||||
|
Loading…
Reference in New Issue
Block a user