The square brackets do
not
denote optional terms as in EBNF. Instead, they are part of the alphabet. The
|
operator denotes alternative terms as in BNF and its scope extends to the end of the rule or to the next square bracket.