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