X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/e95c78ede5830590397dc2673cc8a59709977b5c..edbd4fe2e21dea303553517790427e671de113bd:/doc/refintro.tex

diff --git a/doc/refintro.tex b/doc/refintro.tex
index 6689505..6f3938a 100644
--- a/doc/refintro.tex
+++ b/doc/refintro.tex
@@ -99,6 +99,32 @@ The letter $\epsilon$ denotes the empty nonterminal
 \end{quote}
 
 
+\subsection{Parentheses}
+
+Parentheses are used for grouping of alternatives within the right-hand side
+of a production rule.  Specifically, a right-hand side
+\begin{quote}
+  \syntax{$\alpha$ @($\beta_1$ | $\beta_2$ | $\cdots$ | $\beta_n$@) $\gamma$}
+\end{quote}
+where $\alpha$, $\beta_i$, and $\gamma$ are any sequence of nonterminal
+symbols or parenthesized groups, is equivalent to the right-hand side
+\begin{quote}
+  \syntax{$\alpha$ $b$ $\gamma$}
+\end{quote}
+together with the new production
+\begin{quote}
+  \syntax{$b$ ::= $\beta_1$ | $\beta_2$ | $\cdots$ | $\beta_n$}
+\end{quote}
+where $b$ is a new nonterminal symbol.
+
+Given the indexed-nonterminal notation described below, one might consider a
+group \syntax{@($\beta_1$ | $\beta_2$ | $\cdots$ | $\beta_n$@)} equivalent to
+\syntax{<group>@[$\beta_1$ | $\beta_2$ | $\cdots$ | $\beta_n$@]}, where
+\begin{quote}
+  \syntax{<group>@[$x$@] ::= $x$}
+\end{quote}
+
+
 \subsection{Indexed nonterminals}
 
 Anywhere a simple nonterminal name $x$ may appear in the grammar, an
@@ -113,14 +139,14 @@ 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
-\syntax{$x$@[$\alpha_1^1$ @! $\alpha_1^2$ $| \cdots |$ $\alpha_1^{m_1},
-\ldots,$ $\alpha_n^1$ @! $\alpha_n^2$ $| \cdots |$ $\alpha_n^{m_n}$@]}
-means exactly the same as \syntax{$x$@[$a_1, \ldots, a_n$@]} with the
-additional rules
+\syntax{$x$@[$\alpha_1^1$ | $\alpha_1^2$ | $\cdots$ | $\alpha_1^{m_1},
+\ldots,$ $\alpha_n^1$ | $\alpha_n^2$ | $\cdots$ | $\alpha_n^{m_n}$@]} means
+exactly the same as \syntax{$x$@[$a_1, \ldots, a_n$@]} with the additional
+rules
 \begin{quote}
-  \syntax{$a_1$ ::= $\alpha_1^1$ @! $\alpha_1^2$ $| \cdots |$ $\alpha_1^{m_1}$} \\*
+  \syntax{$a_1$ ::= $\alpha_1^1$ | $\alpha_1^2$ | $\cdots$ | $\alpha_1^{m_1}$} \\*
   \hbox{}\qquad $\vdots$ \\*
-  \syntax{$a_n$ ::= $\alpha_n^1$ @! $\alpha_n^2$ $| \cdots |$ $\alpha_1^{m_n}$}
+  \syntax{$a_n$ ::= $\alpha_n^1$ | $\alpha_n^2$ | $\cdots$ | $\alpha_1^{m_n}$}
 \end{quote}
 where $a_1$, \ldots, $a_n$ are new nonterminal symbols.
 
@@ -133,13 +159,13 @@ enough that they deserve special notation.
 \item @[$x$@] abbreviates @<optional>$[x]$, denoting an optional occurrence
   of $x$:
   \begin{quote}
-    \syntax{@[$x$@] ::= <optional>$[x]$ ::= $\epsilon$ @! $x$}
+    \syntax{@[$x$@] ::= <optional>$[x]$ ::= $\epsilon$ | $x$}
   \end{quote}
 \item $x^*$ abbreviates @<zero-or-more>$[x]$, denoting a sequence of zero or
   more occurrences of $x$:
   \begin{quote}
     \syntax{$x^*$ ::= <zero-or-more>$[x]$ ::=
-      $\epsilon$ @! <zero-or-more>$[x]$ $x$}
+      $\epsilon$ | <zero-or-more>$[x]$ $x$}
   \end{quote}
 \item $x^+$ abbreviates @<one-or-more>$[x]$, denoting a sequence of one or
   more occurrences of $x$:
@@ -149,7 +175,7 @@ enough that they deserve special notation.
 \item @<list>$[x]$ denotes a sequence of one or more occurrences of $x$
   separated by commas:
   \begin{quote}
-    \syntax{<list>$[x]$ ::= $x$ @! <list>$[x]$ "," $x$}
+    \syntax{<list>$[x]$ ::= $x$ | <list>$[x]$ "," $x$}
   \end{quote}
 \end{itemize}
 
