The grammar notation is taken from the Java Language Specification:
Terminal symbols are shown in bold in the productions of the lexical and syntactic grammars, and throughout this specification whenever the text is directly referring to such a terminal symbol. These are to appear in a program exactly as written.
Non-terminal symbols are shown in italic type. The definition of a non-terminal is introduced by the name of the non-terminal being defined, followed by a colon. One or more alternative right sides for the non-terminal then follow on succeeding lines.
The suffix “opt,” which may appear after a terminal or non-terminal, indicates an optional symbol. The alternative containing the optional symbol actually specifies ...