From: Mark Wooding Date: Sat, 24 Aug 2019 16:14:51 +0000 (+0100) Subject: doc/...: Fix `\textbar' properly, and use plain `|'. X-Git-Url: https://git.distorted.org.uk/~mdw/sod/commitdiff_plain/b04739d01153eb539fd6b05095368e60b0d32bf6 doc/...: Fix `\textbar' properly, and use plain `|'. The `\grammar' command wasn't the right place to hack this, since `\syntax' also needs fixing. Instead, patch `\syn@shorts' to do the right thing. Once this is done, use `|' rather than `@|' in syntax displays (not the Lisp ones!). Also, use text rather than maths spacing consistently, by replacing `$| \cdots |$' with `| $\cdots$ |' throughout. --- diff --git a/doc/refintro.tex b/doc/refintro.tex index 349f7b0..6f3938a 100644 --- a/doc/refintro.tex +++ b/doc/refintro.tex @@ -104,7 +104,7 @@ The letter $\epsilon$ denotes the empty nonterminal 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$} + \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 @@ -113,13 +113,13 @@ symbols or parenthesized groups, is equivalent to the right-hand side \end{quote} together with the new production \begin{quote} - \syntax{$b$ ::= $\beta_1$ @! $\beta_2$ $| \cdots |$ $\beta_n$} + \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 +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} @@ -139,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. @@ -159,13 +159,13 @@ enough that they deserve special notation. \item @[$x$@] abbreviates @$[x]$, denoting an optional occurrence of $x$: \begin{quote} - \syntax{@[$x$@] ::= $[x]$ ::= $\epsilon$ @! $x$} + \syntax{@[$x$@] ::= $[x]$ ::= $\epsilon$ | $x$} \end{quote} \item $x^*$ abbreviates @$[x]$, denoting a sequence of zero or more occurrences of $x$: \begin{quote} \syntax{$x^*$ ::= $[x]$ ::= - $\epsilon$ @! $[x]$ $x$} + $\epsilon$ | $[x]$ $x$} \end{quote} \item $x^+$ abbreviates @$[x]$, denoting a sequence of one or more occurrences of $x$: @@ -175,7 +175,7 @@ enough that they deserve special notation. \item @$[x]$ denotes a sequence of one or more occurrences of $x$ separated by commas: \begin{quote} - \syntax{$[x]$ ::= $x$ @! $[x]$ "," $x$} + \syntax{$[x]$ ::= $x$ | $[x]$ "," $x$} \end{quote} \end{itemize} diff --git a/doc/sod.sty b/doc/sod.sty index eacd977..9da7def 100644 --- a/doc/sod.sty +++ b/doc/sod.sty @@ -106,8 +106,8 @@ %% Intercept grammar typesetting and replace the vertical bar with the %% maths-font version. -\let\@@grammar\grammar -\def\grammar{\def\textbar{\hbox{$|$}}\@@grammar} +\let\@@syn@shorts\syn@shorts +\def\syn@shorts{\def\textbar{\hbox{$|$}}\@@syn@shorts} %% Collect super- and subscripts. (Note that underscores are active for the %% most part.) When we're done, end maths mode if we entered it diff --git a/doc/syntax.tex b/doc/syntax.tex index 8c66487..dd6a5f5 100644 --- a/doc/syntax.tex +++ b/doc/syntax.tex @@ -51,15 +51,15 @@ could be a token. ::= | "_" - ::= @! + ::= | - ::= "A" | "B" $| \cdots |$ "Z" - | "a" | "b" $| \cdots |$ "z" + ::= "A" | "B" | $\cdots$ | "Z" + | "a" | "b" | $\cdots$ | "z" | ::= "0" | - ::= "1" | "2" $| \cdots |$ "9" + ::= "1" | "2" | $\cdots$ | "9" \end{grammar} The precise definition of @ is left to the function @@ -107,15 +107,15 @@ discouraged. ::= "0" | @^* - ::= "0" @("b" @! "B"@) @^+ + ::= "0" @("b" | "B"@) @^+ ::= "0" | "1" - ::= "0" @["o" @! "O"@] @^+ + ::= "0" @["o" | "O"@] @^+ - ::= "0" | "1" $| \cdots |$ "7" + ::= "0" | "1" | $\cdots$ | "7" - ::= "0" @("x" @! "X"@) @^+ + ::= "0" @("x" | "X"@) @^+ ::= | "A" | "B" | "C" | "D" | "E" | "F" @@ -324,7 +324,7 @@ defined in the built-in module. ::= $[\epsilon, \mbox{@}]$ ::= - $[\mbox{@ @! $\epsilon$}, \mbox{@}]$ + $[\mbox{@ | $\epsilon$}, \mbox{@}]$ ::= $[\mbox{@}, \mbox{@}]$ @@ -352,7 +352,7 @@ keyword arguments. @[$[\mbox{@}]$@] "?" @[$[\mbox{@}]$@] - ::= @! + ::= | ::= "." @@ -681,7 +681,7 @@ declarations instead. ::= @^+ - ::= @! "(" @^+ ")" + ::= | "(" @^+ ")" \end{grammar} The @ will be output unchanged to one of the output files.