A vertical bar separates alternative items. An asterisk following an item means 0 or more occurrences of the item. Nonterminal symbols are strings of nonspecial characters. White space is used to separate items and is otherwise ignored.
Identifiers are case-sensitive.
If an identifier is used, it must be declared previously as an unsigned constant in a const definition. In the scope of a specification, constant and type identifiers are in the same name space and must be declared uniquely. Variable names must be unique in the scope of struct and union declarations. Nested struct and union declarations create new scopes.