A JavaScript Implementation of Edsger Dijkstra's Shunting-yard algorithm. Works in Node.js and web browsers.
$ npm install infix-rpn-eval
Tokens must be space-separated! Unary
-
goes with its operand, e.g.-4
var infixRpnEval = require("infix-rpn-eval");
infixRpnEval.toPostfix('2 + 3 ^ 3 * ( 1 + 4 )'); // 2 3 3 ^ 1 4 + * +
infixRpnEval.toInfix('2 3 3 * +'); // 2 + 3 * 3
infixRpnEval.evaluatePostfix('2 3 3 * +'); // 11
infixRpnEval.evaluateInfix('2 + 2 * 2'); // 6
infixRpnEval.evaluateInfix('a + b', {
evaluateMathConstants: {
// default
pi: Math.PI,
tau: Math.PI * 2,
e: Math.E,
// custom
a: 100,
b: 150
}
}); // 250