Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +25 −40 Original line number Diff line number Diff line Loading @@ -12,18 +12,15 @@ ConstDef: CONSTKEYWORD type=Type defs=ConstList; Type: {Type} PredefinedType | ref=ReferencedType | sub=SubTypeRef; {Type} PredefinedType | ref=[ReferencedType|IDENTIFIER]; ArrayDef: (SQUAREOPEN expr+=SingleExpression (RANGEOP range+=SingleExpression)? SQUARECLOSE)+; TTCN3Module: MODULE name=ModuleId LBRACKET defs=ModuleDefinitionsList? controls=ModuleControlPart? RBRACKET MODULE name=IDENTIFIER spec=LanguageSpec? LBRACKET defs=ModuleDefinitionsList? controls=ModuleControlPart? RBRACKET withstm=WithStatement? sc=SEMICOLON?; ModuleId: name=IDENTIFIER spec=LanguageSpec?; LanguageSpec: LANGUAGEKEYWORD txt+=FREE_TEXT (COMMA txt+=FREE_TEXT)*; Loading @@ -39,8 +36,6 @@ ModuleParList: ModuleParameter: name=IDENTIFIER (ASSIGNMENTCHAR constExpr=ConstantExpression)?; ModuleParameterRef: name=[ModuleParameter|IDENTIFIER]; MultitypedModuleParList: {MultitypedModuleParList} (par+=ModulePar SEMICOLON?)*; Loading Loading @@ -70,8 +65,9 @@ ExtConstDef: ImportDef: IMPORTKEYWORD ImportFromSpec (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); // TODO: fix import ImportFromSpec: FROMKEYWORD ModuleId RECURSIVEKEYWORD?; FROMKEYWORD id=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD?; AllWithExcepts: {AllWithExcepts} ALLKEYWORD def=ExceptsDef?; Loading Loading @@ -637,6 +633,9 @@ VarInstance: VarList: var+=SingleVarInstance (COMMA var+=SingleVarInstance)*; ReferencedType: SubTypeDefNamed | RecordDefNamed | SetDefNamed | PortDef | ComponentDef | UnionDefNamed | EnumDefNamed; TypeDef: TYPEDEFKEYWORD TypeDefBody; Loading @@ -646,26 +645,23 @@ TypeDefBody: SubTypeDef: type=Type ADDRESSKEYWORD array=ArrayDef? spec=SubTypeSpec? | SubTypeDefNamed; SubTypeDefNamed returns SubType: SubTypeDefNamed returns SubTypeDef: type=Type name=IDENTIFIER array=ArrayDef? spec=SubTypeSpec?; SubTypeRef: name=[SubType|IDENTIFIER]; StructuredTypeDef: RecordDef | UnionDef | SetDef | RecordOfDef | SetOfDef | EnumDef | PortDef | ComponentDef; RecordDef: RECORDKEYWORD ADDRESSKEYWORD StructDefBody | RecordDefNamed; RecordDefNamed returns Type: RecordDefNamed returns RecordDef: RECORDKEYWORD name=IDENTIFIER body=StructDefBody; RecordOfDef: RECORDKEYWORD lenght=StringLength? OFKEYWORD (type=Type | nested=NestedTypeDef) ADDRESSKEYWORD spec=SubTypeSpec? | RecordOfDefNamed; RecordOfDefNamed returns Type: RecordOfDefNamed: RECORDKEYWORD lenght=StringLength? OFKEYWORD (type=Type | nested=NestedTypeDef) name=IDENTIFIER spec=SubTypeSpec?; StructDefBody: Loading @@ -682,11 +678,11 @@ SetOfDef: SETKEYWORD setLength=StringLength? OFKEYWORD (setType=Type | nested2=NestedTypeDef) ADDRESSKEYWORD setSpec=SubTypeSpec? | SetOfDefNamed; SetOfDefNamed returns Type: SetOfDefNamed: SETKEYWORD setLength=StringLength? OFKEYWORD (setType=Type | nested2=NestedTypeDef) name=IDENTIFIER setSpec=SubTypeSpec?; PortDef returns Type: PortDef: PORTKEYWORD name=IDENTIFIER body=PortDefBody; PortDefBody: Loading Loading @@ -728,7 +724,7 @@ ProcedureAttribs: PROCEDUREKEYWORD LBRACKET ((addresses+=AddressDecl | procs+=ProcedureList | configs+=ConfigParamDef) SEMICOLON?)+ RBRACKET; ComponentDef returns Type: ComponentDef: COMPONENTKEYWORD name=IDENTIFIER (EXTENDSKEYWORD ct+=ComponentType (COMMA ct+=ComponentType)*)? LBRACKET (defs=ComponentDefList) RBRACKET; Loading Loading @@ -756,7 +752,7 @@ SignatureList: EnumDef: ENUMKEYWORD ADDRESSKEYWORD LBRACKET list=EnumerationList RBRACKET | EnumDefNamed; EnumDefNamed returns Type: EnumDefNamed returns EnumDef: ENUMKEYWORD name=IDENTIFIER LBRACKET list=EnumerationList RBRACKET; NestedTypeDef: Loading Loading @@ -793,9 +789,9 @@ Direction: INPARKEYWORD | OUTPARKEYWORD | INOUTPARKEYWORD; UnionDef: UNIONKEYWORD ADDRESSKEYWORD UnionDefBody | UnionDefNamed; UNIONKEYWORD ADDRESSKEYWORD body=UnionDefBody | UnionDefNamed; UnionDefNamed returns Type: UnionDefNamed returns UnionDef: UNIONKEYWORD name=IDENTIFIER body=UnionDefBody; UnionDefBody: Loading @@ -811,9 +807,9 @@ UnionFieldDef: (type=Type | NestedTypeDef) name=IDENTIFIER array=ArrayDef? subType=SubTypeSpec?; SetDef: SETKEYWORD ADDRESSKEYWORD StructDefBody | SetDefNamed; SETKEYWORD ADDRESSKEYWORD body=StructDefBody | SetDefNamed; SetDefNamed returns Type: SetDefNamed returns SetDef: SETKEYWORD name=IDENTIFIER body=StructDefBody; SubTypeSpec: Loading Loading @@ -856,16 +852,9 @@ TempVarList: SingleVarInstance: name=IDENTIFIER array=ArrayDef? (ac=ASSIGNMENTCHAR expr=Expression)?; SingleVarInstanceRef: name=[SingleVarInstance|IDENTIFIER]; SingleTempVarInstance: name=IDENTIFIER array=ArrayDef? (ac=ASSIGNMENTCHAR template=TemplateBody)?; //TODO: use this reference where applicable SingleTempVarInstanceRef: name=[SingleTempVarInstance|IDENTIFIER]; InLineTemplate: ((type=Type | Signature) COLON)? (derived=DerivedRefWithParList ASSIGNMENTCHAR)? template=TemplateBody; Loading Loading @@ -1010,9 +999,6 @@ QualifiedIdentifier returns ecore::EString hidden(): QualifiedIdentifierList returns ecore::EString: QualifiedIdentifier (COMMA QualifiedIdentifier)*; ReferencedType: name=[Type|IDENTIFIER]; SingleConstDef: name=IDENTIFIER array=ArrayDef? assign=ASSIGNMENTCHAR expr=ConstantExpression; Loading Loading @@ -1055,18 +1041,17 @@ ArrayElementConstExpressionList: ConstList: list+=SingleConstDef (COMMA list+=SingleConstDef)*; // TODO: add other missing referenced values Value: PredefinedValue | ReferencedValue; ReferencedValue returns Value: (ReferencedConstValue | ModuleParameterRef | SingleVarInstanceRef) ext+=ExtendedFieldReference*; ReferencedValue: ref=[RefValue|IDENTIFIER] ext+=ExtendedFieldReference*; ReferencedConstValue returns Value: name=[SingleConstDef|ExtendedIdentifier]; RefValue: SingleConstDef | ModuleParameter | SingleVarInstance | RecordOfDefNamed | SetOfDefNamed; // IDENTIFIER omitted PredefinedValue returns Value: PredefinedValue: value=BSTRING | bValue=BooleanValue | value=NUMBER | value=HSTRING | value=OSTRING | vValue=VerdictTypeValue | value=FloatValue | value=ADDRESSVALUE | value=OMITKEYWORD | value=CharStringValue; Loading Loading @@ -1166,7 +1151,7 @@ PermutationMatch: // TODO: check references! // Identifier | TypeReference | ParRef StructFieldRef: StructFieldReference | Type | ModuleParameterRef; StructFieldReference | Type ; // TODO: check if this rule is necessary TypeReference returns ecore::EString: Loading Loading @@ -1244,7 +1229,7 @@ RunsOnSpec: RUNSKEYWORD ONKEYWORD component=ComponentType; ComponentType: ReferencedType; // TODO: restrict selectable types? ref=[ReferencedType|IDENTIFIER]; // TODO: restrict selectable types? ReturnType: RETURNKEYWORD (TEMPLATEKEYWORD | RestrictedTemplate)? type=Type; Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +25 −40 Original line number Diff line number Diff line Loading @@ -12,18 +12,15 @@ ConstDef: CONSTKEYWORD type=Type defs=ConstList; Type: {Type} PredefinedType | ref=ReferencedType | sub=SubTypeRef; {Type} PredefinedType | ref=[ReferencedType|IDENTIFIER]; ArrayDef: (SQUAREOPEN expr+=SingleExpression (RANGEOP range+=SingleExpression)? SQUARECLOSE)+; TTCN3Module: MODULE name=ModuleId LBRACKET defs=ModuleDefinitionsList? controls=ModuleControlPart? RBRACKET MODULE name=IDENTIFIER spec=LanguageSpec? LBRACKET defs=ModuleDefinitionsList? controls=ModuleControlPart? RBRACKET withstm=WithStatement? sc=SEMICOLON?; ModuleId: name=IDENTIFIER spec=LanguageSpec?; LanguageSpec: LANGUAGEKEYWORD txt+=FREE_TEXT (COMMA txt+=FREE_TEXT)*; Loading @@ -39,8 +36,6 @@ ModuleParList: ModuleParameter: name=IDENTIFIER (ASSIGNMENTCHAR constExpr=ConstantExpression)?; ModuleParameterRef: name=[ModuleParameter|IDENTIFIER]; MultitypedModuleParList: {MultitypedModuleParList} (par+=ModulePar SEMICOLON?)*; Loading Loading @@ -70,8 +65,9 @@ ExtConstDef: ImportDef: IMPORTKEYWORD ImportFromSpec (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); // TODO: fix import ImportFromSpec: FROMKEYWORD ModuleId RECURSIVEKEYWORD?; FROMKEYWORD id=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD?; AllWithExcepts: {AllWithExcepts} ALLKEYWORD def=ExceptsDef?; Loading Loading @@ -637,6 +633,9 @@ VarInstance: VarList: var+=SingleVarInstance (COMMA var+=SingleVarInstance)*; ReferencedType: SubTypeDefNamed | RecordDefNamed | SetDefNamed | PortDef | ComponentDef | UnionDefNamed | EnumDefNamed; TypeDef: TYPEDEFKEYWORD TypeDefBody; Loading @@ -646,26 +645,23 @@ TypeDefBody: SubTypeDef: type=Type ADDRESSKEYWORD array=ArrayDef? spec=SubTypeSpec? | SubTypeDefNamed; SubTypeDefNamed returns SubType: SubTypeDefNamed returns SubTypeDef: type=Type name=IDENTIFIER array=ArrayDef? spec=SubTypeSpec?; SubTypeRef: name=[SubType|IDENTIFIER]; StructuredTypeDef: RecordDef | UnionDef | SetDef | RecordOfDef | SetOfDef | EnumDef | PortDef | ComponentDef; RecordDef: RECORDKEYWORD ADDRESSKEYWORD StructDefBody | RecordDefNamed; RecordDefNamed returns Type: RecordDefNamed returns RecordDef: RECORDKEYWORD name=IDENTIFIER body=StructDefBody; RecordOfDef: RECORDKEYWORD lenght=StringLength? OFKEYWORD (type=Type | nested=NestedTypeDef) ADDRESSKEYWORD spec=SubTypeSpec? | RecordOfDefNamed; RecordOfDefNamed returns Type: RecordOfDefNamed: RECORDKEYWORD lenght=StringLength? OFKEYWORD (type=Type | nested=NestedTypeDef) name=IDENTIFIER spec=SubTypeSpec?; StructDefBody: Loading @@ -682,11 +678,11 @@ SetOfDef: SETKEYWORD setLength=StringLength? OFKEYWORD (setType=Type | nested2=NestedTypeDef) ADDRESSKEYWORD setSpec=SubTypeSpec? | SetOfDefNamed; SetOfDefNamed returns Type: SetOfDefNamed: SETKEYWORD setLength=StringLength? OFKEYWORD (setType=Type | nested2=NestedTypeDef) name=IDENTIFIER setSpec=SubTypeSpec?; PortDef returns Type: PortDef: PORTKEYWORD name=IDENTIFIER body=PortDefBody; PortDefBody: Loading Loading @@ -728,7 +724,7 @@ ProcedureAttribs: PROCEDUREKEYWORD LBRACKET ((addresses+=AddressDecl | procs+=ProcedureList | configs+=ConfigParamDef) SEMICOLON?)+ RBRACKET; ComponentDef returns Type: ComponentDef: COMPONENTKEYWORD name=IDENTIFIER (EXTENDSKEYWORD ct+=ComponentType (COMMA ct+=ComponentType)*)? LBRACKET (defs=ComponentDefList) RBRACKET; Loading Loading @@ -756,7 +752,7 @@ SignatureList: EnumDef: ENUMKEYWORD ADDRESSKEYWORD LBRACKET list=EnumerationList RBRACKET | EnumDefNamed; EnumDefNamed returns Type: EnumDefNamed returns EnumDef: ENUMKEYWORD name=IDENTIFIER LBRACKET list=EnumerationList RBRACKET; NestedTypeDef: Loading Loading @@ -793,9 +789,9 @@ Direction: INPARKEYWORD | OUTPARKEYWORD | INOUTPARKEYWORD; UnionDef: UNIONKEYWORD ADDRESSKEYWORD UnionDefBody | UnionDefNamed; UNIONKEYWORD ADDRESSKEYWORD body=UnionDefBody | UnionDefNamed; UnionDefNamed returns Type: UnionDefNamed returns UnionDef: UNIONKEYWORD name=IDENTIFIER body=UnionDefBody; UnionDefBody: Loading @@ -811,9 +807,9 @@ UnionFieldDef: (type=Type | NestedTypeDef) name=IDENTIFIER array=ArrayDef? subType=SubTypeSpec?; SetDef: SETKEYWORD ADDRESSKEYWORD StructDefBody | SetDefNamed; SETKEYWORD ADDRESSKEYWORD body=StructDefBody | SetDefNamed; SetDefNamed returns Type: SetDefNamed returns SetDef: SETKEYWORD name=IDENTIFIER body=StructDefBody; SubTypeSpec: Loading Loading @@ -856,16 +852,9 @@ TempVarList: SingleVarInstance: name=IDENTIFIER array=ArrayDef? (ac=ASSIGNMENTCHAR expr=Expression)?; SingleVarInstanceRef: name=[SingleVarInstance|IDENTIFIER]; SingleTempVarInstance: name=IDENTIFIER array=ArrayDef? (ac=ASSIGNMENTCHAR template=TemplateBody)?; //TODO: use this reference where applicable SingleTempVarInstanceRef: name=[SingleTempVarInstance|IDENTIFIER]; InLineTemplate: ((type=Type | Signature) COLON)? (derived=DerivedRefWithParList ASSIGNMENTCHAR)? template=TemplateBody; Loading Loading @@ -1010,9 +999,6 @@ QualifiedIdentifier returns ecore::EString hidden(): QualifiedIdentifierList returns ecore::EString: QualifiedIdentifier (COMMA QualifiedIdentifier)*; ReferencedType: name=[Type|IDENTIFIER]; SingleConstDef: name=IDENTIFIER array=ArrayDef? assign=ASSIGNMENTCHAR expr=ConstantExpression; Loading Loading @@ -1055,18 +1041,17 @@ ArrayElementConstExpressionList: ConstList: list+=SingleConstDef (COMMA list+=SingleConstDef)*; // TODO: add other missing referenced values Value: PredefinedValue | ReferencedValue; ReferencedValue returns Value: (ReferencedConstValue | ModuleParameterRef | SingleVarInstanceRef) ext+=ExtendedFieldReference*; ReferencedValue: ref=[RefValue|IDENTIFIER] ext+=ExtendedFieldReference*; ReferencedConstValue returns Value: name=[SingleConstDef|ExtendedIdentifier]; RefValue: SingleConstDef | ModuleParameter | SingleVarInstance | RecordOfDefNamed | SetOfDefNamed; // IDENTIFIER omitted PredefinedValue returns Value: PredefinedValue: value=BSTRING | bValue=BooleanValue | value=NUMBER | value=HSTRING | value=OSTRING | vValue=VerdictTypeValue | value=FloatValue | value=ADDRESSVALUE | value=OMITKEYWORD | value=CharStringValue; Loading Loading @@ -1166,7 +1151,7 @@ PermutationMatch: // TODO: check references! // Identifier | TypeReference | ParRef StructFieldRef: StructFieldReference | Type | ModuleParameterRef; StructFieldReference | Type ; // TODO: check if this rule is necessary TypeReference returns ecore::EString: Loading Loading @@ -1244,7 +1229,7 @@ RunsOnSpec: RUNSKEYWORD ONKEYWORD component=ComponentType; ComponentType: ReferencedType; // TODO: restrict selectable types? ref=[ReferencedType|IDENTIFIER]; // TODO: restrict selectable types? ReturnType: RETURNKEYWORD (TEMPLATEKEYWORD | RestrictedTemplate)? type=Type; Loading