An extended Backus-Naur Formalism (EBNF) is used to describe the
syntax of Dino. Alternatives are separated by |. Brackets
[ and ] denote optionality of the enclosed
expression, and braces { and } denote repetition
(zero or more times). Parentheses ( and ) are used
for grouping a EBNF construction containing alternatives inside it as
one construction.
Terminal symbols denoting a class of terminals (e.g. identifier)
consist of only upper-case letters (e.g. IDENT). The remaining
terminal symbols either start with a lower-case letter (e.g. keyword
else), or are denoted by ASCII character sequences in double quotes
(e.g. "=="). Non-terminal symbols start with an upper-case
letter and contain at least one lower-case letter
(e.g. FormalParameters).