Syntax  215  Collected EBNF, Hierarchical  1  Program  2 ProgramHeading  3 ProgramParameterList  4  =  ProgramHeading  ";"  Block  "0" 0  =  "program"  Identifier (ProgramParameterList  1  "("  IdentifierList  ")"  0  5------------------ 6  7  Block  8  9  10  11  12  13  LabelDeclarationPart  =  14  15  ConstantDefinitionPart  =  16  17  TypeDefinitionPart  =  18  Labe !Dec larationP art  C  onstantDefinitionP art  TypeDefinitionPart  VariableDeclarationPart  ProcedureAndFunctionDeclarationPart  StatementPart  0  ["label"  DigitSequence  { ","  DigitSequence  I  ";" 1  ["canst"  ConstantDefinition  ";"  {  ConstantDefinition  ";" I 1  0  ["type"  TypeDefinition  ";"  {  TypeDefinition  ";"  I 1  0  19  VariableDeclarationPart  ["var"  VariableDeclaration  ";"  20  (  VariableDeclaration  ";" ) 1 0  21  ProcedureAndFunctionDeclarationPart  = {  (ProcedureDeclaration  I  22  FunctionDeclaration)  ";"  I  23 StatementPart  =  CompoundStatement  0  24  25  26 ConstantDefinition  27 TypeDefinition  28 VariableDeclaration  29 ProcedureDeclaration  30  31  32 FunctionDeclaration  33  34  35  36  37  Identifier  "="  Constant  0  =  Identifier  "="  Type  0  IdentifierList  ":"  Type  0  =  ProcedureHeading  ";"  Block  I  ProcedureHeading  ";"  Directive  Procedureldentification  ";"  Block  0  =  FunctionHeading  ";"  Block  I  FunctionHeading  ";"  Directive  I  FunctionIdentification  ";"  Block  0 