function createGrammar(addPrecedence, multPrecedence) {
return new pp.Parser({
tokens: [pp.WhiteSpaceToken, pp.NumberToken],
prefix: {
"(": {
nud(grammar) {
const e = grammar.expression(0);
grammar.advance(")");
return e;
}
}
},
infix: {
")": {},
"+": {
precedence: addPrecedence,
combine: (left, right) => value(left.value + right.value)
},
"*": {
precedence: multPrecedence,
combine: (left, right) => value(left.value * right.value)
}
}
});
}