Introduction  3  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.  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.)  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.  O.c. EBNF  O.B. Syntax Diagrams  Program  =  ProgramHeading  ";"  Block  ".".  ProgramHeading  =  "program"  Identifier ["("IdentifierList  ")"].  IdentifierList  =  Identifier  {H,"  identifier}. 