name ::= lc_letter (lc_letter | "_")*
a name is an lc_letter followed by a sequence of zero or more lc_letters and underscores
lc_letter ::= "a"..."z"
An lc_letter in turn is any of the single characters 'a' through 'z'.
Each rule begins with a name (which is the name defined by the rule) and ::=
A vertical bar (|) is used to separate alternatives; it is the least binding operator in this notation.
A star (*) means zero or more repetitions of the preceding item
A plus (+) means one or more repetitions
A phrase enclosed in square brackets ( [ ] ) means zero or one occurrences (in other words, the enclosed phrase
is optional)
The * and + operators bind as tightly as possible;
Parentheses () are used for grouping
Literal strings are enclosed in quotes
White space is only meaningful to separate tokens
Rules are normally contained on a single line;
Rules with many alternatives may be formatted alternatively with each line after the first beginning with a
vertical bar.
Two literal characters separated by three dots (...) mean a choice of any single character in the given (inclusive)
range of ASCII characters
A phrase between angular brackets (<...>) gives an informal description of the symbol defined;
e.g., this could be used to describe the notion of ‘control character’ if needed.
Confidential C