<> <> <> <> Program::= identifier : PROGRAM numberD VERSION numberD = BEGIN END. DependencyList::= | DEPENDS UPON ; ReferencedProgramList::= | , ReferencedProgram::= identifier ( numberD ) VERSION numberD DeclarationList::= | Declaration Declaration::= identifier : TYPE = | identifier : = Constant ; | identifier : = identifier; Type::= SimpleType | ConstructedType SimpleType::= PredefinedType | ReferencedType PredefinedType::= BOOLEAN | CARDINAL | LONG CARDINAL | INTEGER | LONG INTEGER | STRING | UNSPECIFIED | SOURCE | SINK ConstructedType::= { } | ARRAY OF | RECORD [ ] | RECORD [ ] | CHOICE OF { } | PROCEDURE | ERROR ReferencedType::= identifier | identifier . identifier CorrespondenceList::= | , Correspondence::= identifier ( ) OptionalNumber::= | | identifier MandatoryNumber::= | identifier CandidateList::= | , Candidate::= => | ( ) => ArgumentList::= | [ ] | [ ] ResultList::= | RETURNS [ ] | RETURNS [ ] ErrorList::= | REPORTS [ ] FieldList::= | , Field::= : Constant _ | | identifier | identifier identifier | identifier. identifier PredefinedConstant::= TRUE | FALSE | | - | ConstructedConstant::= [ ] | [ ] | [] ElementList::= | , | identifier | identifier , ComponentList::= | , Component::= : | : identifier NameList::= identifier | identifier , number::= numberD | numberO | numberH EMPTY::=