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.