Skip to content

🚂 Edsger Dijkstra's Shunting-yard algorithm

License

Notifications You must be signed in to change notification settings

semyonf/infix-rpn-eval

Repository files navigation

infix-rpn-eval

master npm version GitHub forks GitHub issues GitHub license Maintainability Test Coverage

A JavaScript Implementation of Edsger Dijkstra's Shunting-yard algorithm. Works in Node.js and web browsers.

Installation

$ npm install infix-rpn-eval

Usage

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