author | Eugen Sawin <sawine@me73.com> |
Wed, 20 Jul 2011 20:32:05 +0200 | |
changeset 61 | 9cde5c0bf4d3 |
permissions | -rw-r--r-- |
sawine@55 | 1 |
% here's the example |
sawine@55 | 2 |
\input generic.tex |
sawine@55 | 3 |
\input bnf.tex |
sawine@55 | 4 |
|
sawine@55 | 5 |
\begingrammar |
sawine@55 | 6 |
% |
sawine@55 | 7 |
<input>: {$\phi$}; |
sawine@55 | 8 |
<statement>.\par |
sawine@55 | 9 |
|
sawine@55 | 10 |
<statement>: "$\{$" <compound> "$\}$" [";"] ; |
sawine@55 | 11 |
<single> [";"] ; |
sawine@55 | 12 |
";". |
sawine@55 | 13 |
|
sawine@55 | 14 |
<compound>: <single> ";" <compound> ; |
sawine@55 | 15 |
<single>. |
sawine@55 | 16 |
|
sawine@55 | 17 |
<single>: "if" "(" <expression> ")" <statement> ["else" <statement>]; |
sawine@55 | 18 |
"case" "$\{$" <case-body> "$\}$"; |
sawine@55 | 19 |
"for" "(" <expression> ";" <expression> ";" <expression> ")", |
sawine@55 | 20 |
<statement>; |
sawine@55 | 21 |
"while" "(" <expression> ")" <statement>; |
sawine@55 | 22 |
"do" <expression> "while" "(" <expression> ")"; |
sawine@55 | 23 |
"sum" "(" <expression> ";" <expression> ")" <statment>; |
sawine@55 | 24 |
"product" "(" <expression> ";" <expression> ")" <statment>; |
sawine@55 | 25 |
"break"; |
sawine@55 | 26 |
"continue"; |
sawine@55 | 27 |
"return" <expression>; |
sawine@55 | 28 |
"clear"; |
sawine@55 | 29 |
"load" <expression>; |
sawine@55 | 30 |
"save" <expression>; |
sawine@55 | 31 |
"release" <expression>; |
sawine@55 | 32 |
"show" ["variables" | "functions" | "set" | "all" | <expression>]; |
sawine@55 | 33 |
"set" ["prompt" | "precision"] [<expression>]; |
sawine@55 | 34 |
<equation>. |
sawine@55 | 35 |
|
sawine@55 | 36 |
<case-body>: "case" <expression> ":" <compound> <case-body>; |
sawine@55 | 37 |
"default:" <compound> |
sawine@55 | 38 |
|
sawine@55 | 39 |
<equation>: <var> "=" <expression>; |
sawine@55 | 40 |
<var>"[" <selector> "]" = <expression>; |
sawine@55 | 41 |
<function> = <input>; |
sawine@55 | 42 |
<expression>. |
sawine@55 | 43 |
|
sawine@55 | 44 |
<selector>: <factor> "," <factor>; |
sawine@55 | 45 |
<factor> ","; |
sawine@55 | 46 |
"," <factor>. |
sawine@55 | 47 |
|
sawine@55 | 48 |
<expression>: <term> "+" <expression>; |
sawine@55 | 49 |
<term> "--" <expression>. |
sawine@55 | 50 |
|
sawine@55 | 51 |
<term>: <factor> <operator> <term>. |
sawine@55 | 52 |
|
sawine@55 | 53 |
<factor> <pre-op> <factor$'$> <post-op>. |
sawine@55 | 54 |
|
sawine@55 | 55 |
<factor$'$>: <number>; |
sawine@55 | 56 |
"+" <number>; |
sawine@55 | 57 |
"--" <number>; |
sawine@55 | 58 |
"(" <number> ")"; |
sawine@55 | 59 |
<variable>; |
sawine@55 | 60 |
<variable>"[" <selector> "]"; |
sawine@55 | 61 |
<string>; |
sawine@55 | 62 |
<matrix>; |
sawine@55 | 63 |
<function>. |
sawine@55 | 64 |
|
sawine@55 | 65 |
<pre-op>: "++" | "--{\kern 1pt}--" | "$\sim$" | "!". |
sawine@55 | 66 |
|
sawine@55 | 67 |
<post-op>: "$\uparrow$" <factor> |
sawine@55 | 68 |
| "**" <factor>; |
sawine@55 | 69 |
"++" | "--{\kern 1pt}--" | "!". |
sawine@55 | 70 |
|
sawine@55 | 71 |
<matrix>: "[" <row-list> "]". |
sawine@55 | 72 |
|
sawine@55 | 73 |
<row-list>: "[" <value-list> "]" [","] <row-list>; |
sawine@55 | 74 |
"[" <value-list> "]" [","] <row-list>; |
sawine@55 | 75 |
<value-list>. |
sawine@55 | 76 |
|
sawine@55 | 77 |
<value-list>: [ <string> ] <expression> "," <value-list>; |
sawine@55 | 78 |
[ <string> ] <expression>. |
sawine@55 | 79 |
|
sawine@55 | 80 |
<function>: <variable> "(" <arg-list> ")". |
sawine@55 | 81 |
|
sawine@55 | 82 |
<arg-list>: $\phi$; |
sawine@55 | 83 |
<variable> "," <arglist>; |
sawine@55 | 84 |
"\dots". |
sawine@55 | 85 |
|
sawine@55 | 86 |
<string>: " `` " <anything> " '' ". |
sawine@55 | 87 |
|
sawine@55 | 88 |
<number>: <real-number>; |
sawine@55 | 89 |
"$\{$" <real-number> "," <real-number> "$\}$"; |
sawine@55 | 90 |
{$\backslash$}b[01][01]+; |
sawine@55 | 91 |
{$\backslash$}o[07][07]+; |
sawine@55 | 92 |
\$[0-9A-Fa-f][0-9A-Fa-f]+. |
sawine@55 | 93 |
|
sawine@55 | 94 |
%<real-number>: [\+--]?[0-9][0-9]+[\.[0-9]+]?[[eE][0-9][0-9]+]. |
sawine@55 | 95 |
|
sawine@55 | 96 |
<operator>: "*" | "/" | "$\backslash$" | "\%"; |
sawine@55 | 97 |
"==" | "!=" | "$>$" | "$<$" |
sawine@55 | 98 |
| "$<$=" | "$>$="; |
sawine@55 | 99 |
"\ul =" | "\ul !=" | "\ul $<$" | "\ul $>$" |
sawine@55 | 100 |
| "\ul$<$=" | "\ul$>$="; |
sawine@55 | 101 |
"\&" | "$\vert$" | "$\uparrow\uparrow$"; |
sawine@55 | 102 |
"\&\&" | "$\Vert$" | "\ul$\uparrow$". |
sawine@55 | 103 |
|
sawine@55 | 104 |
\endgrammar |
sawine@55 | 105 |
\bye |
sawine@55 | 106 |