| Index: docs/language/bnf.sty
|
| diff --git a/docs/language/bnf.sty b/docs/language/bnf.sty
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9d01563fc2d6004134ee6229a1a9f834156ce0a9
|
| --- /dev/null
|
| +++ b/docs/language/bnf.sty
|
| @@ -0,0 +1,125 @@
|
| +%This _sty_ file was developed by Hugh Osborne at the University of
|
| +%Nijmegen, The Netherlands. It may be freely distributed under
|
| +%condition that this notice is always included in any copy distributed.
|
| +%No charge may be made for (copies of) this file, nor may any other
|
| +%remuneration be requested.
|
| +
|
| +\typeout{Style-Option: `bnf' v1.1a <92/01/30> (Hugh Osborne/br)}
|
| +
|
| +\def\@actifygrammarchars{%
|
| + \catcode`\"\active%
|
| + \catcode`\:\active%
|
| + \catcode`\,\active%
|
| + \catcode`\;\active%
|
| + \catcode`\.\active%
|
| + \catcode`\<\active%
|
| + \catcode`\>\active}
|
| +
|
| +\def\@deactifygrammarchars{%
|
| + \@makeother\"%
|
| + \@makeother\:%
|
| + \@makeother\,%
|
| + \@makeother\;%
|
| + \@makeother\.%
|
| + \@makeother\<%
|
| + \@makeother\>}
|
| +
|
| +\let\escapegrammar=\@deactifygrammarchars
|
| +
|
| +\begingroup
|
| + \@deactifygrammarchars
|
| + \global\let\quotesymbol="
|
| + \global\let\lessthan=<
|
| + \global\let\greaterthan=>
|
| +\endgroup
|
| +
|
| +\newif\if@outsidestring \@outsidestringtrue
|
| +
|
| +\def\@first#1#2{#1}
|
| +\def\@second#1#2{#2}
|
| +
|
| +\begingroup
|
| +
|
| +\@actifygrammarchars
|
| +
|
| + \gdef\@defcolon#1{
|
| + \catcode`\:\active
|
| + \def:{\def\newline{\hfill\break\hspace*{2em}}{\@deactifygrammarchars #1}}
|
| + \@makeother\:}
|
| +
|
| + \gdef\@defcomma#1{
|
| + \catcode`\,\active
|
| + \def,{\def\newline{\hfill\break\hspace*{4em}}{\@deactifygrammarchars #1}}
|
| + \@makeother\,}
|
| +
|
| + \gdef\@defsemicolon#1{
|
| + \catcode`\;\active
|
| + \def;{\def\newline{\hfill\break\hspace*{2em}}{\@deactifygrammarchars #1}}
|
| + \@makeother\;}
|
| +
|
| + \gdef\@defperiod#1{
|
| + \catcode`\.\active
|
| + \def.{\def\newline{\vskip10pt plus10pt minus5pt}{\@deactifygrammarchars #1}}
|
| + \@makeother\.}
|
| +
|
| + \gdef\@defnonterminal#1{
|
| + \catcode`\<\active
|
| + \catcode`\>\active
|
| + \def<{%
|
| + \begingroup%
|
| + \@first#1%
|
| + \@deactifygrammarchars%
|
| + \catcode`\>\active}
|
| + \def>{%
|
| + \@second#1%
|
| + \endgroup}
|
| + \@makeother\<
|
| + \@makeother\>}
|
| +
|
| + \gdef\@defquote#1{
|
| + \catcode`\"\active
|
| + \def"{%
|
| + \if@outsidestring%
|
| + \@outsidestringfalse%
|
| + \begingroup%
|
| + \@deactifygrammarchars%
|
| + \catcode`\"\active%
|
| + \@first#1%
|
| + \else%
|
| + \@second#1%
|
| + \endgroup%
|
| + \@outsidestringtrue%
|
| + \fi}
|
| + \@makeother\"}
|
| +
|
| +\endgroup
|
| +
|
| +\let\@defterminal=\@defquote
|
| +
|
| +\newenvironment{grammar}%
|
| + {
|
| + \begin{quote}%
|
| + \@defaultchardefs%
|
| + \@dogrammarchars}%
|
| + {\@deactifygrammarchars%
|
| + \end{quote}
|
| + }
|
| +
|
| +\def\@dogrammarchars{
|
| + \@actifygrammarchars
|
| + \@ifnextchar [{\@deactifygrammarchars\@getchardef}{}}
|
| +
|
| +\def\@getchardef[(#1)#2]{
|
| + \@dogrammarchar{#1}[#2]
|
| + \@dogrammarchars}
|
| +
|
| +\def\@dogrammarchar#1[#2]{
|
| + \csname @def#1\endcsname{#2}}
|
| +
|
| +\def\@defaultchardefs{
|
| + \@defquote{{``}{''}}%
|
| + \@defnonterminal{{$<$}{$>$}}%
|
| + \@defcolon{:\\ {\hbox{ }} }%
|
| + \@defsemicolon{ $|$\\{\hbox{ }}}%
|
| + \@defperiod{\\{\hbox{ }};\\ }%
|
| + \@defcomma{, }}%
|
|
|