Release coccinelle-0.1.8
[bpt/coccinelle.git] / docs / manual / macros_grammar.tex
CommitLineData
faf9a90c
C
1% Definition of a grammar (BNF style) package for Latex and Hevea
2
3
4\ifhevea
5% Definition for Hevea (HTML generation)
b1b2de81 6\def\T#1{{\sf{#1}}}
faf9a90c
C
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
b1b2de81 20\def\T#1{{\textsf{\small{#1}}}}
faf9a90c
C
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\^{}}