To give a rigorous description of the ESA language, the following conventions are used for formal definitions:
strings in this character represent (placeholders of) actual code;
...
= any code;
xyz
] = xyz
is optional;
ID:
type = ID
is an identifier of type type;
xyz
" or 'xyz
' = xyz
is a string of characters;
a | b
= a
and b
are reciprocally exclusive alternatives.