X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/e95c78ede5830590397dc2673cc8a59709977b5c..54ea6ee880f52c23279bf58262ca245b531d04b0:/doc/refintro.tex diff --git a/doc/refintro.tex b/doc/refintro.tex index 6689505..349f7b0 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{@[$\beta_1$ @! $\beta_2$ $| \cdots |$ $\beta_n$@]}, where +\begin{quote} + \syntax{@[$x$@] ::= $x$} +\end{quote} + + \subsection{Indexed nonterminals} Anywhere a simple nonterminal name $x$ may appear in the grammar, an