From: Mark Wooding Date: Tue, 20 Aug 2019 11:27:30 +0000 (+0100) Subject: doc/refintro.tex: Explain what parentheses mean in production rules. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/commitdiff_plain/e5c630fb76a4c93bd9d764c93d26106b228d05a4 doc/refintro.tex: Explain what parentheses mean in production rules. They're used in the actual grammar, so this is probably a good idea. --- 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