In the following description, constant width text (e.g. dec or ++) denotes literal program text, while italic text (e.g. type-identifier or pattern) denotes syntactic classes. Non-terminals are defined in sections of the same name. The brackets [ and ] are used around optional text. Alternative forms are used if identifiers are declared as operators.