Release coccinelle-0.1.7
[bpt/coccinelle.git] / docs / grammar / grammar.tex
1 % Definition of a grammar (BNF style) package for Latex and Hevea
2
3
4 \ifhevea
5 % Definition for Hevea (HTML generation)
6 \def\T#1{{\sf{#1}}}
7 \def\NTS#1{{\maroon #1\/}}
8 \def\KW#1{{\blue #1}}
9 \def\gramor{{\black $|$}}
10 \def\grameq{{\black \quad::=\quad}}
11 \def\lparen{{\black (}}
12 \def\rparen{{\black )}}
13 \def\lbracket{{\black [}}
14 \def\rbracket{{\black ]}}
15 \def\plus{{\black +}}
16 \def\questionmark{{\black ?}}
17 \def\etoile{{\black *}}
18 \else
19 % Definition for LaTeX
20 \def\T#1{{\textsf{\small{#1}}}}
21 \def\NTS#1{{\it #1\/}}
22 \def\KW#1{{\mtt{#1}}}
23 %\def\gramor{$\vert$}
24 \def\gramor{$\mid$}
25 \def\grameq{\,\,\,::=\,\,\,\,\,}
26 \def\lparen{(}
27 \def\rparen{)}
28 \def\lbracket{$[$}
29 \def\rbracket{$]$}
30 \def\plus{+}
31 \def\questionmark{?}
32 \def\etoile{*}
33 \fi
34
35 \def\NT#1{\hyperlink{#1}{\NTS{#1}}}
36 \def\group#1{{\rm\lparen}#1{\rm\rparen}}
37 \def\range#1#2{#1{..}#2}
38 \def\any#1{#1$^{\etoile}$}
39 \def\some#1{#1$^{\plus}$}
40 \def\ANY#1{\any{{\rm\lparen}#1{\rm\rparen}}}
41 \def\SOME#1{\some{{\rm\lparen}#1{\rm\rparen}}}
42 \def\OR{\gramor\ }
43
44 \iflanguagestyle
45 % Option notation : [ xxx ] versus (xxx)^?
46 \def\opt#1{#1$^{\questionmark}$}
47 \def\OPT#1{\opt{{\rm\lparen}#1{\rm\rparen}}}
48 \else
49 \def\opt#1{{\lbracket}#1{\rbracket}}
50 \def\OPT#1{\opt{#1}}
51 \fi
52
53 \newenvironment{grammar}{\begin{center}\begin{tabular}{l@{}c@{}l}}{\end{tabular}\end{center}}
54 \def\RULE#1\CASE#2{\NTS{#1} & \grameq & \KW{#2} \\}
55 \def\CASE#1{& \gramor & \KW{#1} \\}
56
57 \newcommand{\rt}[1]{\hypertarget{#1}{#1}}
58 \newcommand{\bs}{\textbackslash}
59
60 \def\lb{\char123}
61 \def\rb{\char125}
62 \def\lt{\tt\char60}
63 \def\gt{\tt\char62}
64 \def\caret{\tt\^{}}