diff options
Diffstat (limited to 'demos/sample-files/calc.g')
| -rw-r--r-- | demos/sample-files/calc.g | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/demos/sample-files/calc.g b/demos/sample-files/calc.g new file mode 100644 index 0000000..804e072 --- /dev/null +++ b/demos/sample-files/calc.g @@ -0,0 +1,26 @@ +-terminal PLUS MINUS TIMES MORE LESS EQUA + LPAREN RPAREN QMARK COLON NUM; + +-nonterminal EP E. + +-left LPAREN; +-left 5; +-left TIMES; +-left MINUS PLUS; +-left MORE LESS EQUA; +-left COLON 7; +-left QMARK. + +EP: E { v = A(0); }; + +E: E PLUS E { v = A(0) + A(2); } + | E MINUS E { v = A(0) - A(2); } + | E TIMES E { v = A(0) * A(2); } + | LPAREN E RPAREN { v = A(1); } + | MINUS E { v = - A(1); } + | E QMARK E COLON E { v = A(0) ? A(2) : A(4); } + | E QMARK E { v = A(0) ? A(2) : 0; } + | E MORE E { v = A(0) > A(2); } + | E LESS E { v = A(0) < A(2); } + | E EQUA E { v = A(0) == A(2); } + | NUM { v = A(0); }. |
