In the definitions, the following notations are used.
Terminal symbols are written as "SML#" using a typewriter font.
Non-terminal symbols are written as ⟨exp⟩ with angle brackets.
(opt)? represents that opt is optional.
For a syntax class ⟨x⟩, the notation ⟨xList⟩ represents list of one of more ⟨x⟩’s separated by white space, and ⟨xSeq⟩ denotes one of the following.