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