Skip to content

Commit

Permalink
[evalTokens] Refactor the last transformation stage
Browse files Browse the repository at this point in the history
  • Loading branch information
heokhe committed Apr 3, 2021
1 parent 99285a2 commit 205a93d
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions lib/eval.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,14 @@ function evalTokens(tokens) {
solvePowers(tokens);
solveOpsWithProriorityOf2(tokens);

let next,
operator,
prev;
for (const token of tokens) {
if (token.type === Token.TYPES.OPERATOR) {
prev = operator ? operator.perform(prev, next) : next;
operator = token;
next = undefined;
} else next = token.value;
// now we only have numbers and priority 1 operators (+-)
// in the form of a+b-c+d-...
let number = tokens[0].value;
for (let i = 1; i < tokens.length; i += 2) {
const operator = tokens[i];
number = operator.perform(number, tokens[i + 1].value);
}
return operator ? operator.perform(prev, next) : next;
return number;
}

/** @param {string} expr */
Expand Down

0 comments on commit 205a93d

Please sign in to comment.