nitcc: introduce nitcc
[nit.git] / contrib / nitcc / examples / calc.sablecc
1 /* A simple calculator, see calc.nit */
2 Grammar calc;
3
4 Lexer
5 d = '0'..'9';
6 int = d+;
7 blank = (' '|'\n')+;
8
9 Parser
10 Ignored blank;
11 e =
12         {add:} e '+' f |
13         {sub:} e '-' f |
14         f {->f};
15 f {->e} =
16         {mul:} f '*' a |
17         {div:} f '/' a |
18         a {->a};
19 a {->e} =
20         {int:} int |
21         {par:} '(' e ')' |
22         {neg:} '-' a ;