%% %% This is file `bnf.sty', generated on <1993/2/16> %% with the docstrip utility (2.0r). %% %% The original source file was `bnf.doc'. %% Included options: `style'. %% %% %% IMPORTANT NOTICE: %% You are not allowed to distribute this file. %% For distribution of the original source see %% the copyright notice in the file bnf.doc. %% \def\filename{BNF.DOC} \def\fileversion{1.05} \def\filedate{09 Feb 1993 15:16:48 BST} \def\docdate{09 Feb 1993 15:16:48 BST} %%% ==================================================================== %%% @LaTeX-file{ %%% filename = "BNF.DOC", %%% version = "1.05", %%% date = "09 Feb 1993", %%% time = "15:16:48 BST", %%% author = "Mike Piff", %%% address = "Dr M. J. Piff %%% University of Sheffield %%% Department of Pure Mathematics %%% Hicks Building %%% Hounsfield Road %%% SHEFFIELD S3 7RH %%% England", %%% codetable = "ISO/ASCII", %%% telephone = "+44 742 824431", %%% email = "M.Piff@shef.ac.uk (Janet)", %%% keywords = "Backus,Naur,syntax,grammar", %%% supported = "yes", %%% checksum = "15432 526 2399 20401", %%% docstring = "A style option to LaTeX for producing %%% Backus-Naur Form syntax notation.", %%% } %%% ==================================================================== %% This is BNF.DOC %% Copyright (C) 1993 Mike Piff %% All rights reserved. %% Copying of this file is authorized only if %% you make absolutely no changes to your copy. %% %% Usage: %% \documentstyle[bnf]{article} %% in LaTeX %<+driver> \DocInput{BNF.DOC} \typeout{Backus-Naur Form style option for LaTeX, (c) Mike Piff, \filedate} \newif\ifnonterminal \def\NonTerminal{\left\langle\obeyspaces\ControlSpaces \nonterminaltrue\NonTerminalStyle} \def\endNonTerminal{\right\rangle} \def\NonTerminalStyle{\fam0 } {\obeyspaces\gdef\ControlSpaces{\let =\ }} \def\Star{\,\left\{} \def\endStar{\right\}\,} \def\Optional{\,\left[} \def\endOptional{\right]\,} \def\Bracket{\,\left(} \def\endBracket{\right)\,} \def\OR{\mathop{\left|\right.}\nolimits} \def\Production{\mathrel{\longrightarrow}} \def\Yields{\mathrel{\Longrightarrow}} \def\Empty{\varepsilon} \begingroup \catcode`\`=\active \gdef\TerminalFont{\tt \catcode96\active \def`{\leavevmode\kern\z@\char96 }} \endgroup \begingroup \catcode`\~=\active \lccode`\~=`\^^M \lowercase{\endgroup \gdef\Terminal{\relax\PreTerminal \ifmmode \hbox \else \leavevmode\null \fi \bgroup \TerminalFont \catcode`~\active \def~{\egroup\@latexerr{Terminal string ended by end of line.}\@ehc}% \let\do\@makeother \dospecials \@sTerminal}} \def\@sTerminal#1{% \catcode`#1\active \lccode`\~`#1% \lowercase{\def~{\egroup\PostTerminal}}}% \def\PreTerminal{} \def\PostTerminal{} \mathchardef\lt="313C \mathchardef\gt="313E \def\mathactive{"8000} \def\bnf{% \mathchardef\HYPHEN="2D \mathchardef\MINUS="2200 \mathchardef\Relbar="303D \def\relbar{\mathrel{\smash{\MINUS}}} \mathchardef\EQUALS="303D \mathcode`"=\mathactive \mathcode`[=\mathactive \mathcode`\]=\mathactive \mathcode`(=\mathactive \mathcode`\)=\mathactive \mathcode`|=\mathactive \mathcode`-=\mathactive \mathcode`<=\mathactive \mathcode`\>=\mathactive \mathcode`@=\mathactive \mathcode`==\mathactive \mathcode96 \mathactive } \def\endbnf{} \def\NotInNonTerminal{\errmessage{Not allowed in a non-terminal}} \def\NotNTdef#1#2{\gdef#1{\ifnonterminal\NotInNonTerminal\else#2\fi}} \begingroup \catcode`"\active \catcode`[\active \catcode`\]\active \catcode`(\active \catcode`\)\active \catcode`|\active \catcode`-\active \catcode`<\active \catcode`>\active \catcode`@\active \catcode`=\active \catcode96 \active \gdef"{\Terminal"}% \gdef`{\Terminal`}% \NotNTdef[\Optional \NotNTdef]\endOptional \NotNTdef(\Bracket \NotNTdef)\endBracket \NotNTdef|\OR \NotNTdef<\NonTerminal \gdef>{\endNonTerminal}% \gdef-{% \ifnonterminal \def\Nnext{\HYPHEN}% \else \def\Nnext{\futurelet\Next\SeeIfProdn}% \fi\Nnext} \gdef={% \ifnonterminal \def\Nnext{\NotInNonTerminal}% \else \def\Nnext{\futurelet\Next\SeeIfYields}% \fi\Nnext}% \gdef@{% either an escape char or a star group \ifnonterminal \def\Nnext{\NotInNonTerminal}% \else \def\Nnext{\futurelet\Next\SeeIfSpecial}% \fi\Nnext}% \endgroup \def\SeeIfProdn{% \if\noexpand\Next\noexpand>% \def\Nnext{\Production\@gobble}% \else \def\Nnext{\MINUS}% \fi \Nnext} \def\SeeIfYields{% \if\noexpand\Next\noexpand>% \def\Nnext{\Yields\@gobble}% \else \def\Nnext{\EQUALS}% \fi\Nnext} \def\SeeIfSpecial{% \if\noexpand\Next\noexpand<% \def\Nnext{\lt\@gobble}% \else \if\noexpand\Next\noexpand>% \def\Nnext{\gt\@gobble}% \else \def\Nnext{\Star\bgroup\aftergroup\endStar\aftergroup\egroup}% \fi \fi\Nnext} \endinput %% %% End of file `bnf.sty'.