slides/src/bnfexample.tex
author Eugen Sawin <sawine@me73.com>
Wed, 20 Jul 2011 20:32:05 +0200
changeset 61 9cde5c0bf4d3
permissions -rw-r--r--
LTL begin.
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