parsey
Version:
A parser for context-free grammars
20 lines (14 loc) • 597 B
JavaScript
const valuators = {};
valuators.multiply = (a, b) => a * b;
valuators.add = (a, b) => a + b;
valuators.divide = (a, b) => a / b;
valuators.subtract = (a, b) => a - b;
valuators.number = (n) => parseInt(n);
valuators.group = (n) => n;
valuators.factor = (op, n) => parseInt(op) || parseInt(n);
valuators.prod = (a, b, c, d) => (a * b) || a * c || b * d || a;
valuators.sum = (a, op, b) => a + (b || 0);
valuators.exp = (a, _, b) => Math.pow(a, b) || a;
module.exports.valueOf = (exprType, values) => {
return valuators[exprType].apply(null, values);
};