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.