/*

* Classic example grammar, which recognizes simple arithmetic expressions like
* "2*(3+4)". The parser generated from this grammar then computes their value.
*/

start

= additive

additive

= left:multiplicative "+" right:additive { return left + right; }
/ multiplicative

multiplicative

= left:primary "*" right:multiplicative { return left * right; }
/ primary

primary

= integer
/ "(" additive:additive ")" { return additive; }

integer “integer”

= digits:$[0-9]+ { return parseInt(digits, 10); }