no-end-of-stream-conflict.opp.exp 263 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
%start main
%token <int> INT
%token END
%token PLUS
%token TIMES
%left PLUS 
%left TIMES 
%type <int> main
%%

main:
| e = expr END
    { e }

expr:
| i = INT
    { i }
| e1 = expr PLUS e2 = expr
    { e1 + e2 }
| e1 = expr TIMES e2 = expr
    { e1 * e2 }

%%