Some more definitions.
10 <statement>: "$\{$" <compound> "$\}$" [";"] ;
14 <compound>: <single> ";" <compound> ;
17 <single>: "if" "(" <expression> ")" <statement> ["else" <statement>];
18 "case" "$\{$" <case-body> "$\}$";
19 "for" "(" <expression> ";" <expression> ";" <expression> ")",
21 "while" "(" <expression> ")" <statement>;
22 "do" <expression> "while" "(" <expression> ")";
23 "sum" "(" <expression> ";" <expression> ")" <statment>;
24 "product" "(" <expression> ";" <expression> ")" <statment>;
27 "return" <expression>;
31 "release" <expression>;
32 "show" ["variables" | "functions" | "set" | "all" | <expression>];
33 "set" ["prompt" | "precision"] [<expression>];
36 <case-body>: "case" <expression> ":" <compound> <case-body>;
39 <equation>: <var> "=" <expression>;
40 <var>"[" <selector> "]" = <expression>;
44 <selector>: <factor> "," <factor>;
48 <expression>: <term> "+" <expression>;
49 <term> "--" <expression>.
51 <term>: <factor> <operator> <term>.
53 <factor> <pre-op> <factor$'$> <post-op>.
55 <factor$'$>: <number>;
60 <variable>"[" <selector> "]";
65 <pre-op>: "++" | "--{\kern 1pt}--" | "$\sim$" | "!".
67 <post-op>: "$\uparrow$" <factor>
69 "++" | "--{\kern 1pt}--" | "!".
71 <matrix>: "[" <row-list> "]".
73 <row-list>: "[" <value-list> "]" [","] <row-list>;
74 "[" <value-list> "]" [","] <row-list>;
77 <value-list>: [ <string> ] <expression> "," <value-list>;
78 [ <string> ] <expression>.
80 <function>: <variable> "(" <arg-list> ")".
83 <variable> "," <arglist>;
86 <string>: " `` " <anything> " '' ".
88 <number>: <real-number>;
89 "$\{$" <real-number> "," <real-number> "$\}$";
90 {$\backslash$}b[01][01]+;
91 {$\backslash$}o[07][07]+;
92 \$[0-9A-Fa-f][0-9A-Fa-f]+.
94 %<real-number>: [\+--]?[0-9][0-9]+[\.[0-9]+]?[[eE][0-9][0-9]+].
96 <operator>: "*" | "/" | "$\backslash$" | "\%";
97 "==" | "!=" | "$>$" | "$<$"
99 "\ul =" | "\ul !=" | "\ul $<$" | "\ul $>$"
100 | "\ul$<$=" | "\ul$>$=";
101 "\&" | "$\vert$" | "$\uparrow\uparrow$";
102 "\&\&" | "$\Vert$" | "\ul$\uparrow$".