src/pset-parse.lisp: Add a little vertical space and commentary.
[sod] / doc / refintro.tex
index 2d4dbed..6b162bd 100644 (file)
@@ -98,6 +98,19 @@ variables may also appear on the right-hand side in place of a nonterminal.
 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}
   \syntax{$\epsilon$ ::=}