X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/7292d6e1bc85cca454f64353722ba78a9263f257..5eeb83d2b620e77000ab77269faa974007c9ff28:/doc/refintro.tex diff --git a/doc/refintro.tex b/doc/refintro.tex index ead5ace..6b162bd 100644 --- a/doc/refintro.tex +++ b/doc/refintro.tex @@ -95,8 +95,21 @@ Anywhere a simple nonterminal name $x$ may appear in the grammar, an left-hand side of a production rule, the indices $a_1$, \ldots, $a_n$ are variables which vary over all nonterminal and terminal symbols, and the variables may also appear on the right-hand side in place of a nonterminal. -Such a rule stands for a family of rules, in each variable is replaced by -each possible simple nonterminal or terminal symbol. +Such a rule stands for a family of rules, in which each variable is replaced +by each possible simple nonterminal or terminal symbol. + +As a notational convenience, where an indexed nonterminal appears on the +right-hand side of a production rule, each actual argument may be a sequence +of alternative right-hand sides, separated by `$|$', rather than a a simple +terminal or nonterminal symbol. A complex indexing of this form, say +$x[\alpha_1 | \beta_1 | \cdots, \ldots, \alpha_n | \beta_n | \cdots]$ means +exactly the same as $x[a_1, \ldots, a_n]$ with the additional rules +\begin{quote} + \syntax{$a_1$ ::= $\alpha_1$ @! $\beta_1$ @! $\cdots$} \\ + \hbox{}\qquad $\vdots$ \\ + \syntax{$a_n$ ::= $\alpha_n$ @! $\beta_n$ @! $\cdots$} +\end{quote} +where $a_1$, \ldots, $a_n$ are new nonterminal symbols. The letter $\epsilon$ denotes the empty nonterminal \begin{quote}