The first section lists all labels defined in this block. The second section defines synonyms for constants; i.e., it introduces "constant identifiers" that may later be used in place of those constants. The third contains type definitions; and the fourth, variable definitions. The fifth section defines subordinate program parts (i.e., procedures and functions). The statement part specifies the actions to be taken. 

## O.B. Syntax Diagrams 

The previous program outline is more graphically expressed in a syntax diagram. Starting at the diagram for Program (Figure a.a), a path through the diagram defines a syntactically correct program. Each rectangular box references a diagram by that name, which is then used to define its meaning. Terminal symbols (those actually written in a Pascal program) are in rounded enclosures. (See Appendix D for the complete set of diagrams for Pascal.) 

## O.c. EBNF 

An alternative method for describing syntax is the Extended Backus-Naur Form, (EBNF), where syntactic constructs are denoted by English words and literals. These words are suggestive of the nature or meaning of the construct while the literals denote actual symbols used in writing the language. Literals are enclosed in quotation marks. 

Enclosure of a sequence of constructs and literals by the metasymbols { and I implies its occurrence zero or more times. Alternatives are separated by the metasymboll . Parentheses ( and) are used for grouping and the metasymbols [ and J denote that the enclosed constructs and literals are optional. (A complete explanation of EBNF and the EBNF of Pascal is given in Appendix D.) As an example, the construct Program of Figure a.a is defined by the following EBNF formulas called productions. 

Program = ProgramHeading ";" Block ".". ProgramHeading = "program" Identifier ["("IdentifierList ")"]. IdentifierList = Identifier {H," identifier}. 

