github.com/blynn/nex@v0.0.0-20210330102341-1a3320dab988/test/rp.y (about) 1 %{ 2 package main 3 %} 4 5 %union { 6 n int 7 } 8 9 %token NUM 10 %% 11 input: /* empty */ 12 | input line 13 ; 14 15 line: '\n' 16 | exp '\n' { println($1.n); } 17 ; 18 19 exp: NUM { $$.n = $1.n; } 20 | exp exp '+' { $$.n = $1.n + $2.n; } 21 | exp exp '-' { $$.n = $1.n - $2.n; } 22 | exp exp '*' { $$.n = $1.n * $2.n; } 23 | exp exp '/' { $$.n = $1.n / $2.n; } 24 /* Unary minus */ 25 | exp 'n' { $$.n = -$1.n; } 26 ; 27 %%