22 |
\newcommand{\nt}[1]{{\it #1}} |
\newcommand{\nt}[1]{{\it #1}} |
23 |
\newcommand{\tl}[1]{{\underline{\bf #1}}} |
\newcommand{\tl}[1]{{\underline{\bf #1}}} |
24 |
\newcommand{\ttl}[1]{{\underline{\tt #1}}} |
\newcommand{\ttl}[1]{{\underline{\tt #1}}} |
|
\newenvironment{syntax}{\begin{tabbing} xyzwww \=\kill}{\end{tabbing}} |
|
25 |
\newcommand{\ar}{$\rightarrow$\ } |
\newcommand{\ar}{$\rightarrow$\ } |
26 |
\newcommand{\vb}{~$|$~} |
\newcommand{\vb}{~$|$~} |
27 |
|
|
818 |
|
|
819 |
\subsection{BNF for expressions} |
\subsection{BNF for expressions} |
820 |
|
|
821 |
\begin{tabbing} |
\begin{tabular}{rcl} |
822 |
\nt{non-terminal}~\= \ar \kill |
\nt{letter} &\ar& \tl{A} \vb $\ldots$ \vb \tl{Z} \vb \tl{a} \vb $\ldots$ \vb \tl{z} \\ |
823 |
\nt{letter} \> \ar \tl{A} \vb $\ldots$ \vb \tl{Z} \vb \tl{a} \vb $\ldots$ \vb \tl{z} \\ |
\nt{digit} &\ar& \tl{0} \vb $\ldots$ \vb \tl{9} \\ |
824 |
\nt{digit} \> \ar \tl{0} \vb $\ldots$ \vb \tl{9} \\ |
\nt{ldau} &\ar& \nt{letter} \vb \nt{digit} \vb \tl{'} \vb \tl{\_} \\ |
|
\nt{ldau} \> \ar \nt{letter} \vb \nt{digit} \vb \tl{'} \vb \tl{\_} \\ |
|
825 |
\\ |
\\ |
826 |
\nt{number} \> \ar \nt{digit} \{\nt{digit}\} \\ |
\nt{number} &\ar& \nt{digit} \{\nt{digit}\} \\ |
827 |
\nt{sym} \> \ar \nt{letter} \{\nt{ldau}\} \\ |
\nt{sym} &\ar& \nt{letter} \{\nt{ldau}\} \\ |
828 |
\\ |
\\ |
829 |
\nt{aatom} \> \ar \nt{number} \vb \nt{sym} \vb \tl{(} \nt{asum} \tl{)} \vb \tl{$\tilde{~}$} \nt{aatom} \\ |
\nt{aatom} &\ar& \nt{number} \vb \nt{sym} \vb \tl{(} \nt{asum} \tl{)} \vb \tl{$\tilde{~}$} \nt{aatom} \\ |
830 |
\nt{aprod} \> \ar \{\nt{aprod} (\tl{*} \vb \tl{div} \vb \tl{mod})\} \nt{aatom} \\ |
\nt{aprod} &\ar& \{\nt{aprod} (\tl{*} \vb \tl{div} \vb \tl{mod})\} \nt{aatom} \\ |
831 |
\nt{asum} \> \ar \{\nt{asum} (\tl{+} \vb \tl{-})\} \nt{aprod} \\ |
\nt{asum} &\ar& \{\nt{asum} (\tl{+} \vb \tl{-})\} \nt{aprod} \\ |
832 |
\\ |
\\ |
833 |
\nt{ns} \> \ar \tl{structure} \vb \tl{signature} \vb \tl{functor} \vb \tl{funsig} \\ |
\nt{ns} &\ar& \tl{structure} \vb \tl{signature} \vb \tl{functor} \vb \tl{funsig} \\ |
834 |
\nt{mlsym} \> \ar {\em a Standard ML identifier} \\ |
\nt{mlsym} &\ar& {\em a Standard ML identifier} \\ |
835 |
\nt{query} \> \ar \tl{defined} \tl{(} \nt{sym} \tl{)} \vb \tl{defined} \tl{(} \nt{ns} \nt{mlsym} \tl{)} \\ |
\nt{query} &\ar& \tl{defined} \tl{(} \nt{sym} \tl{)} \vb \tl{defined} \tl{(} \nt{ns} \nt{mlsym} \tl{)} \\ |
836 |
\\ |
\\ |
837 |
\nt{acmp} \> \ar \nt{aexp} (\ttl{<} \vb \ttl{<=} \vb \ttl{>} \vb \ttl{>=} \vb \ttl{=} \vb \ttl{<>}) \nt{aexp} \\ |
\nt{acmp} &\ar& \nt{aexp} (\ttl{<} \vb \ttl{<=} \vb \ttl{>} \vb \ttl{>=} \vb \ttl{=} \vb \ttl{<>}) \nt{aexp} \\ |
838 |
\\ |
\\ |
839 |
\nt{batom} \> \ar \nt{query} \vb \nt{acmp} \vb \tl{not} \nt{batom} \vb \tl{(} \nt{bdisj} \tl{)} \\ |
\nt{batom} &\ar& \nt{query} \vb \nt{acmp} \vb \tl{not} \nt{batom} \vb \tl{(} \nt{bdisj} \tl{)} \\ |
840 |
\nt{bcmp} \> \ar \nt{batom} [(\ttl{=} \vb \ttl{<>}) \nt{batom}] \\ |
\nt{bcmp} &\ar& \nt{batom} [(\ttl{=} \vb \ttl{<>}) \nt{batom}] \\ |
841 |
\nt{bconj} \> \ar \{\nt{bcmp} \tl{andalso}\} \nt{bcmp} \\ |
\nt{bconj} &\ar& \{\nt{bcmp} \tl{andalso}\} \nt{bcmp} \\ |
842 |
\nt{bdisj} \> \ar \{\nt{bconj} \tl{orelse}\} \nt{bdisj} \\ |
\nt{bdisj} &\ar& \{\nt{bconj} \tl{orelse}\} \nt{bdisj} \\ |
843 |
\\ |
\\ |
844 |
\nt{expression} \> \ar \nt{bdisj} |
\nt{expression} &\ar& \nt{bdisj} |
845 |
\end{tabbing} |
\end{tabular} |
846 |
|
|
847 |
\section{Access control} |
\section{Access control} |
848 |
\label{sec:access} |
\label{sec:access} |