## Collected EBNF, Hierarchical 

1 Program 2 ProgramHeading 3 ProgramParameterList 4 = ProgramHeading ";" Block "0" 0 = "program" Identifier (ProgramParameterList 1 0 "(" 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 

