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.