The complete definition of an abstract syntax is given by a name (for the defined formalism) and a list of declaration.
program --> "abstract" "syntax" "of" id "is"
declaration*
"end" [id] ";"
declaration --> operator | inclusion | union | line
The last identifier is optional. If present it must be equal to the first one. However, the parser does not check this constraint.
Thierry Despeyroux