Simplified the example arithmetics grammar once more + addded comment.
parent
8f3fa8436d
commit
9d239db2d6
@ -1,25 +1,19 @@
|
|||||||
start : _ additive { return $2; }
|
/*
|
||||||
|
* Classic example grammar, which recognizes simple arithmetic expressions like
|
||||||
|
* "2*(3+4)". The parser generated from this grammar then computes their value.
|
||||||
|
*/
|
||||||
|
|
||||||
additive : multiplicative plus additive { return $1 + $3; }
|
start : additive
|
||||||
/ multiplicative minus additive { return $1 - $3; }
|
|
||||||
/ multiplicative
|
|
||||||
|
|
||||||
multiplicative : primary times multiplicative { return $1 * $3; }
|
additive : multiplicative "+" additive { return $1 + $3; }
|
||||||
/ primary divide multiplicative { return $1 / $3; }
|
/ multiplicative "-" additive { return $1 - $3; }
|
||||||
/ primary
|
/ multiplicative
|
||||||
|
|
||||||
primary : integer
|
multiplicative : primary "*" multiplicative { return $1 * $3; }
|
||||||
/ lparen additive rparen { return $2 }
|
/ primary "/" multiplicative { return $1 / $3; }
|
||||||
|
/ primary
|
||||||
|
|
||||||
integer "integer"
|
primary : integer
|
||||||
: [0-9]+ _ { return parseInt($1.join("")); }
|
/ "(" additive ")" { return $2; }
|
||||||
|
|
||||||
plus : "+" _ { return $1; }
|
integer "integer" : [0-9]+ { return parseInt($1.join("")); }
|
||||||
minus : "-" _ { return $1; }
|
|
||||||
times : "*" _ { return $1; }
|
|
||||||
divide : "/" _ { return $1; }
|
|
||||||
lparen : "(" _
|
|
||||||
rparen : ")" _
|
|
||||||
|
|
||||||
_ "whitespace"
|
|
||||||
: [ \t\n\r]*
|
|
||||||
|
Loading…
Reference in New Issue