From 1c83c514c8108fccfec9764da5e4563b98eb871b Mon Sep 17 00:00:00 2001 From: kartofen Date: Sun, 3 Aug 2025 23:53:24 +0300 Subject: calc implemented in my grammar --- demos/sample-files/calc.g | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 demos/sample-files/calc.g (limited to 'demos/sample-files/calc.g') 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); }. -- cgit v1.2.3