Identifier IdentiJierList IjStatement Index IndexType I ndexTypeSpeciJication IndexedVariahle InitialValue IntegerExpression Lahel LahelDeclarationPart Letter MultiplyingOperator OrdinalExpression OrdinalType = Letter { Letter I Digit I . IdentiJier { "," IdentiJier I "if" BooleanExpression "then" Statement [ "else" Statement] OrdinalExpression . OrdinalType . IdentiJier " .. " IdentiJier ":" OrdinalTypeldentiJier. ArrayVariahle "[" Index { "," Index I "]". OrdinalExpression . = OrdinalExpression . DigitSequence . ["label" DigitSequence { "," DigitSequence I ";"] . = "a" I "b" I "e" I "d" I "e" I "h" "i" I "j" I "k" I "1" "0" "p" I "q" I "r" I "s" "v" "w" I "x" I "y" I "z" . "f" " " m "t" "*,, I "I" I "di v" I "mod" I "and" . Expression. = EnumeratedType I SuhrangeType I OrdinalTypeldentiJier . " " g " " n " " u OrdinalTypeldentiJier = TypeldentiJier. PackedConformantArraySchema = PointerType PointerTypeldentifier PointerVariahle "packed" "array" "[" IndexTypeSpeciJication "]" "of" TypeldentiJier . "i" DomainType I PointerTypeldentiJier. Typeldentifier. Variahle. ProceduralParameterSpeciJication = ProcedureHeading . ProcedureAndFunctionDeclarationPart = { (ProcedureDeclaration I ProcedureDeclaration ProcedureH eading ProcedureldentiJication Procedureldentifier ProcedureStatement Program ProgramHeading ProgramParameterList RealTypeldentiJier RecordSection FunctionDeclaration ) ";" I ProcedureHeading ";" Block I ProcedureHeading ";" Directive I ProcedureldentiJication ";" Block. "procedure" IdentiJier [FormaIParameterList] . "procedure" ProcedureldentiJier . IdentiJier. ProcedureldentiJier [ActualParameterList / WriteParameterList] . ProgramHeading ";" Block "." . = "program" IdentiJier [ProgramParameterList] . "(" IdentiJierList ")" . TypeldentiJier. IdentiJierList ":" Type. 

