We use the following notation for defining syntax:
``Followed by'' has greater binding power than
X YXfollowed byYX|YXorY[X]Xor empty{X}A possibly empty sequence of X'sX&YXorYorX Y
| or &;
parentheses are used to override this precedence rule. Non-terminals begin
with an upper-case letter. Terminals are either keywords or quoted operators.
The symbols Id, Number, TextLiteral, and
CharLiteral are defined in the token grammar. Each production is
terminated by a period. The syntax does not reflect the restrictions that
revelations and exceptions can be declared only at the top level; nor does it
include explicit productions for NEW, INC, and DEC, which
parse like procedure calls.