%token ABSTRACT ACTIVE ASER ASERBYIT ATTRIBUTES BYIT BYPOINTER BYREFERENCE BYVALUE CLASS CODE CONSTANTS CONSTRAINEDBY CONSTRAINEDOPERATIONS DATA DATAFLOWS DESCRIPTION END ENDOBJECT ENDOPERATION ENVIRONMENT EXCEPTIONS EXCEPTIONFLOWS FORMALPARAMETERS GENERIC HANDLEDEXCEPTIONS HSER HSERTOER IMPLEMENTATIONCONSTRAINTS IMPLEMENTATIONORSYNCHRONISATIONCONSTRAINTS IMPLEMENTATIONORSYNCHRONIZATIONCONSTRAINTS IMPLEMENTEDBY IN INHERITANCE INHERITED INSTANCEOF INSTANCERANGE INTERNALS IS LSER LSERTOER MEMBEROF MTEX NONE OBJECT OBJECTS OBJECTCONTROLSTRUCTURE OPERATION OPERATIONS OPERATIONCONTROLSTRUCTURES OPERATIONSETS OPCONTROL OSTD OUT PARAMETERS PASSIVE PRAGMA PROPAGATEDEXCEPTIONS PROTOCOL PROVIDEDINTERFACE PSEUDOCODE RAISEDBY RASER REQUIREDINTERFACE RETURN RLSER ROER RWER SIFVERSION STATE TARGETLANGUAGE TO TOOLNAME TOOLVERSION TYPES USEDOPERATIONS VIRTUALNODE %token LP RP COMMA DOT COLON ASSIGN SEMICOLON LARROW BIARROW RARROW %token ENTIER FREETEXT NOM REEL STRING2 %% sif /* (1) */ : sifHeaderOpt objectDescriptorRpt1; sifHeader /* (2) */ : SIFVERSION freeText semiColon TOOLNAME freeText semiColon TOOLVERSION freeText semiColon TARGETLANGUAGE freeText semiColon; objectDescriptor /* (3) */ : moduleKind identifier IS annotationList r1Opt formalParametersSectionOpt instanceRangeOpt actualParametersSectionOpt descriptionSectionOpt implementationConstraintsSectionOpt providedInterfaceSectionOpt visibleObcsSectionOpt requiredInterfaceSectionOpt dataFlowSectionOpt exceptionFlowSectionOpt internalsOpt objectTrailer; r1 : objectKind annotationList; moduleKind /* (4) */ : OBJECT | CLASS | OPCONTROL | VIRTUALNODE; objectKind /* (5) */ : GENERICOpt ENVIRONMENTOpt ACTIVE | GENERICOpt ENVIRONMENTOpt PASSIVE | INSTANCEOF identifier | PROTOCOL freeText | CLASS ENVIRONMENTOpt ACTIVE | CLASS ENVIRONMENTOpt PASSIVE | OPCONTROL | VIRTUALNODE; objectTrailer /* (6) */ : ENDOBJECT identifier annotationList | END identifier annotationList; descriptionSection /* (7) */ : DESCRIPTION annotationList | DESCRIPTION NONE; implementationConstraintsSection /* (8) */ : implementationConstraintsKeyword annotationList | implementationConstraintsKeyword NONE; implementationConstraintsKeyword /* (9) */ : IMPLEMENTATIONCONSTRAINTS | IMPLEMENTATIONORSYNCHRONIZATIONCONSTRAINTS | IMPLEMENTATIONORSYNCHRONISATIONCONSTRAINTS; dataFlowSection /* (10) */ : DATAFLOWS flowRpt1 | DATAFLOWS NONE; exceptionFlowSection /* (11) */ : EXCEPTIONFLOWS flowRpt1 | EXCEPTIONFLOWS NONE; flow /* (12) */ : identifier flowDirection identifier semiColon | identifier flowDirection OPERATION operationIdentifier semiColon; flowDirection /* (13) */ : LARROW | BIARROW | RARROW; providedInterfaceSection /* (14) */ : PROVIDEDINTERFACE entityDeclarationSectionRpt1 | PROVIDEDINTERFACE NONE; requiredInterfaceSection /* (15) */ : REQUIREDINTERFACE requiredObjectRpt1 | REQUIREDINTERFACE NONE; requiredObject /* (16) */ : requiredObjectHeader semiColon requiredEntitySectionRpt1 | requiredObjectHeader semiColon NONE; requiredObjectHeader /* (17) */ : OBJECT identifier | FORMALPARAMETERS; requiredEntitySection /* (18) */ : TYPES pragmaRpt0 r2Rpt1 | TYPES pragmaRpt0 NONE | CONSTANTS pragmaRpt0 r3Rpt1 | CONSTANTS pragmaRpt0 NONE | OPERATIONS pragmaRpt0 r4Rpt1 | OPERATIONS pragmaRpt0 NONE | OPERATIONSETS pragmaRpt0 r5Rpt1 | OPERATIONSETS pragmaRpt0 NONE | EXCEPTIONS pragmaRpt0 r6Rpt1 | EXCEPTIONS pragmaRpt0 NONE; r2 : reference semiColon; r3 : reference semiColon; r4 : opReference semiColon; r5 : reference semiColon; r6 : reference semiColon; internals /* (19) */ : INTERNALS childObjectSectionOpt entityDeclarationSectionRpt0 internalObcsSectionOpt operationControlStructuresOpt; childObjectSection /* (20) */ : OBJECTS r7Rpt1 | OBJECTS NONE; r7 : identifier semiColon; visibleObcsSection /* (21) */ : OBJECTCONTROLSTRUCTURE annotationList descriptionSectionOpt ostdSectionOpt constrainedOperationSectionOpt | OBJECTCONTROLSTRUCTURE NONE; ostdSection /* (22) */ : OSTD annotationList | OSTD NONE; constrainedOperationSection /* (23) */ : CONSTRAINEDOPERATIONS annotationList constrainedOperationRpt1 | CONSTRAINEDOPERATIONS NONE; constrainedOperation /* (24) */ : operationIdentifier semiColon | operationIdentifier CONSTRAINEDBY constrainedLabel freeTextOpt semiColon; constrainedLabel /* (25) */ : STATE protocolOpt concurrencyOpt constraintAttributeRpt0 | protocol concurrencyOpt constraintAttributeRpt0 | concurrency constraintAttributeRpt0 | constraintAttributeRpt1 | freeText | ASERBYIT td | LSERTOER numericLiteral | HSERTOER numericLiteral; protocol /* (26) */ : LSER | HSER | ASER | RASER | RLSER; concurrency /* (27) */ : MTEX | RWER | ROER; constraintAttribute /* (28) */ : TO numericLiteral | BYIT td; internalObcsSection /* (29) */ : OBJECTCONTROLSTRUCTURE controlStructure | OBJECTCONTROLSTRUCTURE IMPLEMENTEDBY identifier CommaAndIdentifierRpt0 semiColon | OBJECTCONTROLSTRUCTURE NONE; CommaAndIdentifier : comma identifier; operationControlStructures /* (30) */ : OPERATIONCONTROLSTRUCTURES opcsRpt1 | OPERATIONCONTROLSTRUCTURES NONE; opcs /* (31) */ : OPERATION operationIdentifier controlStructure ENDOPERATION operationIdentifier; controlStructure /* (32) */ : annotationList descriptionSectionOpt usedOperationsSectionOpt propagatedExceptionsSectionOpt handledExceptionsSectionOpt pseudoCodeSectionOpt codeSectionOpt; usedOperationsSection /* (33) */ : USEDOPERATIONS r4Rpt1 | USEDOPERATIONS NONE; propagatedExceptionsSection /* (34) */ : PROPAGATEDEXCEPTIONS r2Rpt1 | PROPAGATEDEXCEPTIONS NONE; handledExceptionsSection /* (35) */ : HANDLEDEXCEPTIONS r2Rpt1 | HANDLEDEXCEPTIONS NONE; pseudoCodeSection /* (36) */ : PSEUDOCODE freeText | PSEUDOCODE NONE; codeSection /* (37) */ : CODE tdOpt codeSubSectionRpt0 | CODE NONE; codeSubSection /* (38) */ : identifier td | identifier NONE; entityDeclarationSection /* (39) */ : TYPES typeDeclarationRpt1 | TYPES NONE | CONSTANTS constantDeclarationRpt1 | CONSTANTS NONE | OPERATIONS operationDeclarationRpt1 | OPERATIONS NONE | OPERATIONSETS opSetDeclarationRpt1 | OPERATIONSETS NONE | EXCEPTIONS exceptionDeclarationRpt1 | EXCEPTIONS NONE | DATA variableDeclarationRpt1 | DATA NONE; typeDeclaration /* (40) */ : identifier ABSTRACTOpt classInheritance typeAttributesOpt tdOpt semiColon | identifier typeAttributesOpt tdOpt semiColon | identifier IMPLEMENTEDBY reference semiColon; classInheritance /* (41) */ : INHERITANCE reference COMMAAndReferenceRpt0 | INHERITANCE NONE; COMMAAndReference : COMMA reference; typeAttributes /* (42) */ : ATTRIBUTES attributeDeclaration r8Rpt0 ATTRIBUTES NONE; r8 : COMMA attributeDeclaration; attributeDeclaration /* (43) */ : identifier COLONAndReferenceOpt; COLONAndReference : COLON reference; constantDeclaration /* (44) */ : identifier COLONAndReferenceOpt tdOpt semiColon | identifier IMPLEMENTEDBY reference semiColon; operationDeclaration /* (45) */ : operationIdentifier ABSTRACTOpt INHERITEDOpt membershipClauseOpt semiColon | operationIdentifier IMPLEMENTEDBY opReference semiColon; opSetDeclaration /* (46) */ : identifier membershipClauseOpt semiColon | identifier IMPLEMENTEDBY reference semiColon; exceptionDeclaration /* (47) */ : identifier tdOpt semiColon | identifier tdOpt raisedByClause SEMICOLON annotationList | identifier IMPLEMENTEDBY reference semiColon; variableDeclaration /* (48) */ : identifier COLONAndReferenceOpt tdOpt semiColon; membershipClause /* (49) */ : MEMBEROF identifier; raisedByClause /* (50) */ : RAISEDBY opReference r9Rpt0; r9 : comma opReference; formalParametersSection /* (51) */ : FORMALPARAMETERS entityDeclarationSectionRpt1 | FORMALPARAMETERS NONE; actualParametersSection /* (52) */ : PARAMETERS parameterAssociationSectionRpt1 | PARAMETERS NONE; parameterAssociationSection /* (53) */ : TYPES associationRpt1 | TYPES NONE | CONSTANTS associationRpt1 | CONSTANTS NONE | OPERATIONS operationAssociationRpt1 | OPERATIONS NONE | OPERATIONSETS associationRpt1 | OPERATIONSETS NONE; association /* (54) */ : identifier RARROW referenceOrTd semiColon; operationAssociation /* (55) */ : operationIdentifier RARROW opReference semiColon; referenceOrTd /* (56) */ : reference | td; instanceRange /* (57) */ : INSTANCERANGE integer DOT DOT integer; operationIdentifier /* (58) */ : identifier opParameterPartOpt opReturnPartOpt | stringLiteral opParameterPartOpt opReturnPartOpt; reference /* (59) */ : identifier DOT identifier | identifier; opReference /* (60) */ : identifier DOT operationIdentifier | operationIdentifier; opParameterPart /* (61) */ : LP opParameter r10Rpt0 RP; r10 : SEMICOLON opParameter; opReturnPart /* (62) */ : RETURN reference opTypeQualifierOpt; opParameter /* (63) */ : identifier COLON opParameterMode reference opTypeQualifierOpt ASSIGNAndTdOpt; ASSIGNAndTd : ASSIGN td; opTypeQualifier /* (64) */ : BYVALUE | ptrOrRefOpTypeQualifierRpt1; ptrOrRefOpTypeQualifier /* (65) */ : BYPOINTER | BYREFERENCE; opParameterMode /* (66) */ : IN | OUT | IN OUT; numericLiteral /* (67) */ : integer | real; annotationList /* (68) */ : r11Rpt0; r11 : freeText | pragma; td /* (69) */ : text; freeText /* (70) */ : text; semiColon /* (71) */ : r12Opt; r12 : SEMICOLON annotationList; comma /* (72) */ : COMMAOpt; pragma /* (73) */ : PRAGMA identifier pragmaParameterPartOpt SEMICOLONOpt; pragmaParameterPart /* (74) */ : LP pragmaParameter r13Rpt0 RP; r13 : comma pragmaParameter; pragmaParameter /* (75) */ : identifier RARROW pragmaParameterValue | pragmaParameterValue; pragmaParameterValue /* (76) */ : opReference | numericLiteral | freeText; identifier /* (0.1) */ : NOM; integer /* (0.2) */ : ENTIER; real /* (0.3) */ : REEL; stringLiteral /* (0.4) */ : STRING2; text /* (0.5) */ : FREETEXT; /* optional and repeated items : */ ABSTRACTOpt : | ABSTRACT; actualParametersSectionOpt : | actualParametersSection; ASSIGNAndTdOpt : | ASSIGNAndTd; associationRpt1 : association | associationRpt1 association; childObjectSectionOpt : | childObjectSection; codeSectionOpt : | codeSection; codeSubSectionRpt0 : | codeSubSectionRpt0 codeSubSection; COLONAndReferenceOpt : | COLONAndReference; CommaAndIdentifierRpt0 : | CommaAndIdentifierRpt0 CommaAndIdentifier; COMMAAndReferenceRpt0 : | COMMAAndReferenceRpt0 COMMAAndReference; COMMAOpt : | COMMA; concurrencyOpt : | concurrency; constantDeclarationRpt1 : constantDeclaration | constantDeclarationRpt1 constantDeclaration; constrainedOperationRpt1 : constrainedOperation | constrainedOperationRpt1 constrainedOperation; constrainedOperationSectionOpt : | constrainedOperationSection; constraintAttributeRpt0 : | constraintAttributeRpt0 constraintAttribute; constraintAttributeRpt1 : constraintAttribute | constraintAttributeRpt1 constraintAttribute; dataFlowSectionOpt : | dataFlowSection; descriptionSectionOpt : | descriptionSection; entityDeclarationSectionRpt0 : | entityDeclarationSectionRpt0 entityDeclarationSection; entityDeclarationSectionRpt1 : entityDeclarationSection | entityDeclarationSectionRpt1 entityDeclarationSection; ENVIRONMENTOpt : | ENVIRONMENT; exceptionDeclarationRpt1 : exceptionDeclaration | exceptionDeclarationRpt1 exceptionDeclaration; exceptionFlowSectionOpt : | exceptionFlowSection; flowRpt1 : flow | flowRpt1 flow; formalParametersSectionOpt : | formalParametersSection; freeTextOpt : | freeText; GENERICOpt : | GENERIC; handledExceptionsSectionOpt : | handledExceptionsSection; implementationConstraintsSectionOpt : | implementationConstraintsSection; INHERITEDOpt : | INHERITED; instanceRangeOpt : | instanceRange; internalsOpt : | internals; internalObcsSectionOpt : | internalObcsSection; membershipClauseOpt : | membershipClause; objectDescriptorRpt1 : objectDescriptor | objectDescriptorRpt1 objectDescriptor; opcsRpt1 : opcs | opcsRpt1 opcs; operationAssociationRpt1 : operationAssociation | operationAssociationRpt1 operationAssociation; operationControlStructuresOpt : | operationControlStructures; operationDeclarationRpt1 : operationDeclaration | operationDeclarationRpt1 operationDeclaration; opParameterPartOpt : | opParameterPart; opReturnPartOpt : | opReturnPart; opSetDeclarationRpt1 : opSetDeclaration | opSetDeclarationRpt1 opSetDeclaration; opTypeQualifierOpt : | opTypeQualifier; ostdSectionOpt : | ostdSection; parameterAssociationSectionRpt1 : parameterAssociationSection | parameterAssociationSectionRpt1 parameterAssociationSection; pragmaParameterPartOpt : | pragmaParameterPart; pragmaRpt0 : | pragmaRpt0 pragma; propagatedExceptionsSectionOpt : | propagatedExceptionsSection; protocolOpt : | protocol; providedInterfaceSectionOpt : | providedInterfaceSection; pseudoCodeSectionOpt : | pseudoCodeSection; ptrOrRefOpTypeQualifierRpt1 : ptrOrRefOpTypeQualifier | ptrOrRefOpTypeQualifierRpt1 ptrOrRefOpTypeQualifier; r10Rpt0 : | r10Rpt0 r10; r11Rpt0 : | r11Rpt0 r11; r12Opt : | r12; r13Rpt0 : | r13Rpt0 r13; r1Opt : | r1; r2Rpt1 : r2 | r2Rpt1 r2; r3Rpt1 : r3 | r3Rpt1 r3; r4Rpt1 : r4 | r4Rpt1 r4; r5Rpt1 : r5 | r5Rpt1 r5; r6Rpt1 : r6 | r6Rpt1 r6; r7Rpt1 : r7 | r7Rpt1 r7; r8Rpt0 : | r8Rpt0 r8; r9Rpt0 : | r9Rpt0 r9; requiredEntitySectionRpt1 : requiredEntitySection | requiredEntitySectionRpt1 requiredEntitySection; requiredInterfaceSectionOpt : | requiredInterfaceSection; requiredObjectRpt1 : requiredObject | requiredObjectRpt1 requiredObject; SEMICOLONOpt : | SEMICOLON; sifHeaderOpt : | sifHeader; tdOpt : | td; typeAttributesOpt : | typeAttributes; typeDeclarationRpt1 : typeDeclaration | typeDeclarationRpt1 typeDeclaration; usedOperationsSectionOpt : | usedOperationsSection; variableDeclarationRpt1 : variableDeclaration | variableDeclarationRpt1 variableDeclaration; visibleObcsSectionOpt : | visibleObcsSection;