aboutsummaryrefslogtreecommitdiff
path: root/demos/sample-files/calc.g
diff options
context:
space:
mode:
Diffstat (limited to 'demos/sample-files/calc.g')
-rw-r--r--demos/sample-files/calc.g26
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); }.