V10/cmd/sml/doc/refman/gram2.tex
\label{bare}
\twocolumn[Figure \protect\ref{bare}: Syntax of the Bare Language \\ \\]
{\samepage
\begin{list}{}{\setlength{\listparindent}{0pt}
\setlength{\labelwidth}{5em}
% \setlength{\parsep}{0pt}
\setlength{\labelsep}{0.5em}}
\lhs{lab} INT
\\ id
\lhs{const} INT
\\ REAL
\\ STRING
\lhs{exp} id
\\ const
\\ \{ lab%
\verb"="%
exp , \rep{0} , lab%
\verb"="%
exp \}
\\ \res{let} dec \res{in} exp \res{end}
\\ exp exp
\\ exp : ty
\\ \res{fn} match
\\ \res{raise} exp
\\ exp \res{handle} match
\lhs{match} pat \verb"=>" exp $\mid$ \rep{1} $\mid$ pat \verb"=>" exp
\lhs{apat} id
\\ const
\\ \verb"_"
\\ ( pat )
\\ \{ lab%
\verb"="%
pat , \rep{0} , lab%
\verb"="%
pat \}
\\ \{ lab%
\verb"="%
pat , \rep{0} , lab%
\verb"="%
pat , ... \}
\lhs{pat} apat
\\ id apat
\\ pat : ty
\\ id constraint \res{as} pat
\lhs{ty} \res{tyvar}
\\ \{ lab : ty , \rep{0} , lab : ty \}
\\ ( ty )
\\ ( ty , \rep{2} , ty ) id
\\ ty id
\\ id
\\ ty \verb"->" ty
\lhs{vb} pat \verb"=" exp
\\ vb \res{and} \rep{1} \res{and} vb
\lhs{constraint} {\it empty}
\\ : ty
\lhs{rvb} id constraint \verb"=" \res{fn} match
\\ rvb \res{and} \rep{1} \res{and} rvb
\lhs{tb} tyvars id \verb"=" ty
\\ tb \res{and} \rep{1} \res{and} tb
\lhs{tyvars} {\it empty}
\\ \res{tyvar}
\\ ( \res{tyvar} , \rep{2} , \res{tyvar} )
\lhs{db} tyvars id \verb"=" constr $\mid$ \rep{1} $\mid$ constr
\\ db \res{and} \rep{1} \res{and} db
\lhs{constr} id
\\ id \res{of} ty
\lhs{eb} id
\\ id \res{of} ty
\\ id \verb"=" id
\\ eb \res{and} \rep{1} \res{and} eb
\lhs{dec} \res{val} vb
\\ \res{val} \res{rec} rvb
\\ \res{type} tb
\\ \res{datatype} db
\\ \res{exception} eb
\\ \res{local} dec \res{in} dec \res{end}
\\ dec ;
\\ dec dec
\end{list}
}
\onecolumn