Optional quantities are enclosed in double square brackets, eg. [<type>].
The letter `r' following a quantity indicates that the item may be repeated.
Alternative quantities are denoted by `|', so <a>|<b> indicates either <a> or <b>.
In the commands section wherever <statements> is used it refers to either a simple statement (single command) or a complex statement (group of commands enclosed within curly braces), ie.
<statements> -> <single command>
| {
[ <single command> ]r
}