slides/src/bnf.tex
author Eugen Sawin <sawine@me73.com>
Fri, 22 Jul 2011 15:55:34 +0200
changeset 69 3ebfd8683b18
permissions -rw-r--r--
Some more stuff.
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