doc/refintro.tex: Describe a fancy feature of the syntax notation.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 27 Jul 2019 11:56:34 +0000 (12:56 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 3 Aug 2019 15:27:37 +0000 (16:27 +0100)
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$ ::=}