Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let isAdditionOperator =
- (token) => (token === '+' || token === 'add')
- let isSubtractionOperator =
- (token) => (token === '-' || token ==='sub')
- let isMultiplicationOperator =
- (token) => (token === '*' || token === 'mul')
- let isDivisionOperator =
- (token) => (token === '/' || token == 'div')
- let isNumberLiteral =
- (token) => !isNaN(token)
- let calculate = (tokens) => {
- let currentToken = tokens.shift();
- if(isNumberLiteral(currentToken)) {
- return parseFloat(currentToken);
- }
- if(isAdditionOperator(currentToken)) {
- return calculate(tokens) + calculate(tokens);
- }
- if(isSubtractionOperator(currentToken)) {
- return - calculate(tokens);
- }
- if(isMultiplicationOperator(currentToken)) {
- return calculate(tokens) * calculate(tokens);
- }
- if(isDivisionOperator(currentToken)) {
- return calculate(tokens) / calculate(tokens);
- }
- throw 'Invalid token ' + currentToken;
- }
- let expression = "* + 1 2 * 3 + 7 - 2"
- let tokens = expression.split(' ');
- console.log(calculate(tokens))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement