author | Eugen Sawin <sawine@me73.com> |
Tue, 19 Jul 2011 02:33:21 +0200 | |
changeset 55 | ba1253cb17a2 |
permissions | -rw-r--r-- |
1 %-----cut here with a sharp machete or an 19.95 ginsu knife
2 %************************************************************************
3 %* BNF.tex *
4 %* *
5 %* plain tex macros for formatting grammars *
6 %* *
7 %* Erik Quanstrom *
8 %* 10. November 1990 *
9 %************************************************************************
11 %things to fix:
12 % make configurable
13 % work with texinfo
15 \gdef\actifygrammarchars{%
16 \catcode`\>\active%
17 \catcode`\<\active%
18 \catcode`\:\active%
19 \catcode`\"\active%
20 \catcode`\;\active%
21 \catcode`\.\active%
22 \catcode`\|\active%
23 \catcode`\,\active}
25 \gdef\deactifygrammarchars{%
26 \catcode`\>12%
27 \catcode`\<12%
28 \catcode`\:12%
29 \catcode`\;12%
30 \catcode`\.12%
31 \catcode`\|12%
32 \catcode`\,12}
34 \newif\ifquote
35 \quotefalse
37 \begingroup
38 \actifygrammarchars
39 \gdef>{\/\endgroup$\rangle$\relax}
40 \gdef<{$\langle$\begingroup\sl}
41 \gdef:{$\rightarrow$}
43 \begingroup
44 \catcode`\"\active
45 \gdef"{\ifquote%
46 '\endgroup\quotefalse%
47 \else%
48 \quotetrue\begingroup\deactifygrammarchars\bf`%
49 \fi}%
50 \endgroup
52 \gdef;{\hfill\break}
53 \gdef.{\relax}
54 \gdef|{$\vert$}
55 \gdef,{;\hbox to 1cm{\hfill}}
56 \endgroup
58 \def\begingrammar{%
59 \begingroup
60 \advance\leftskip by 1cm%
61 \parindent=-1cm%
62 \actifygrammarchars%
63 \def\endgrammar{\endgroup}
64 \parskip 1ex%
65 \relax
66 }
68 %
69 %
70 %
71 \def\ul{\lower .2ex\hbox to 1ex{\hrulefill}\relax}%