Loading de.ugoe.cs.swe.TTCN3.ui/META-INF/MANIFEST.MF +2 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ Require-Bundle: de.ugoe.cs.swe.TTCN3;visibility:=reexport, org.antlr.runtime, org.eclipse.xtext.common.types.ui, org.eclipse.xtext.ui.codetemplates.ui, org.eclipse.compare org.eclipse.compare, org.eclipse.xtext.xbase.lib Import-Package: org.apache.log4j, org.eclipse.xtext.xbase.lib Bundle-RequiredExecutionEnvironment: J2SE-1.5 Loading de.ugoe.cs.swe.TTCN3/META-INF/MANIFEST.MF +2 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,8 @@ Require-Bundle: org.eclipse.xtext;visibility:=reexport, org.eclipse.emf.common, org.antlr.runtime, org.eclipse.xtext.common.types, org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional, org.eclipse.xtext.xbase.lib Import-Package: org.apache.log4j, org.eclipse.xtext.xbase.lib Bundle-RequiredExecutionEnvironment: J2SE-1.5 Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/GenerateTTCN3.mwe2 +2 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ module de.ugoe.cs.swe.GenerateTTCN3 import org.eclipse.emf.mwe.utils.* import org.eclipse.xtext.generator.* import org.eclipse.xtext.ui.generator.* import de.ugoe.cs.swe.scoping.TTCN3ImportNamespaceScopingFragment var grammarURI = "classpath:/de/ugoe/cs/swe/TTCN3.xtext" var fileExtensions = "ttcn3" Loading Loading @@ -83,7 +84,7 @@ Workflow { // fragment = exporting.SimpleNamesFragment auto-inject {} // scoping and exporting API fragment = scoping.ImportNamespacesScopingFragment auto-inject {} fragment = TTCN3ImportNamespaceScopingFragment auto-inject {} fragment = exporting.QualifiedNamesFragment auto-inject {} fragment = builder.BuilderIntegrationFragment auto-inject {} Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +49 −47 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ ConstDef: CONSTKEYWORD type=Type defs=ConstList; Type: pre=PredefinedType | ref=[ReferencedType|IDENTIFIER]; pre=PredefinedType | ref=[ReferencedType|QualifiedIdentifier]; ArrayDef: (SQUAREOPEN expr+=SingleExpression (RANGEOP range+=SingleExpression)? SQUARECLOSE)+; Loading Loading @@ -62,11 +62,8 @@ ExtConstDef: EXTKEYWORD CONSTKEYWORD type=Type id=IdentifierList; ImportDef: IMPORTKEYWORD importFrom=ImportFromSpec (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); // TODO: fix import ImportFromSpec: FROMKEYWORD id=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD?; IMPORTKEYWORD FROMKEYWORD importedModule=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD? (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); AllWithExcepts: {AllWithExcepts} ALLKEYWORD def=ExceptsDef?; Loading @@ -83,74 +80,75 @@ ExceptElement: | modulePar=ExceptModuleParSpec; IdentifierListOrAll: IdentifierList | ALLKEYWORD; idList=IdentifierList | all=ALLKEYWORD; ExceptGroupSpec: GROUPKEYWORD (QualifiedIdentifierList | ALLKEYWORD); GROUPKEYWORD (idList=QualifiedIdentifierList | all=ALLKEYWORD); ExceptTypeDefSpec: TYPEDEFKEYWORD IdentifierListOrAll; TYPEDEFKEYWORD idOrAll=IdentifierListOrAll; ExceptTemplateSpec: TEMPLATEKEYWORD IdentifierListOrAll; TEMPLATEKEYWORD idOrAll=IdentifierListOrAll; ExceptConstSpec: CONSTKEYWORD IdentifierListOrAll; CONSTKEYWORD idOrAll=IdentifierListOrAll; ExceptTestcaseSpec: TESTCASEKEYWORD IdentifierListOrAll; TESTCASEKEYWORD idOrAll=IdentifierListOrAll; ExceptAltstepSpec: ALTSTEPKEYWORD IdentifierListOrAll; ALTSTEPKEYWORD idOrAll=IdentifierListOrAll; ExceptFunctionSpec: FUNCTIONKEYWORD IdentifierListOrAll; FUNCTIONKEYWORD idOrAll=IdentifierListOrAll; ExceptSignatureSpec: SIGNATUREKEYWORD IdentifierListOrAll; SIGNATUREKEYWORD idOrAll=IdentifierListOrAll; ExceptModuleParSpec: MODULEPARKEYWORD IdentifierListOrAll; MODULEPARKEYWORD idOrAll=IdentifierListOrAll; ImportSpec: {ImportSpec} (element+=ImportElement SEMICOLON?)*; ImportElement: {ImportElement} (spec=ImportGroupSpec | ImportTypeDefSpec | ImportTemplateSpec | ImportConstSpec | ImportTestcaseSpec | ImportAltstepSpec | ImportFunctionSpec | ImportSignatureSpec | ImportModuleParSpec | ImportImportSpec); (group=ImportGroupSpec | type=ImportTypeDefSpec | template=ImportTemplateSpec | const=ImportConstSpec | testcase=ImportTestcaseSpec | altstep=ImportAltstepSpec | function=ImportFunctionSpec | signature=ImportSignatureSpec | modulePar=ImportModuleParSpec | importSpec=ImportImportSpec); ImportGroupSpec: GROUPKEYWORD (groupRef=GroupRefListWithExcept | group=AllGroupsWithExcept); IdentifierListOrAllWithExcept: IdentifierList | AllWithExcept; idList=IdentifierList | all=AllWithExcept; AllWithExcept: ALLKEYWORD (EXCEPTKEYWORD IdentifierList)?; {AllWithExcept} ALLKEYWORD (EXCEPTKEYWORD idList=IdentifierList)?; ImportTypeDefSpec: TYPEDEFKEYWORD IdentifierListOrAllWithExcept; TYPEDEFKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportTemplateSpec: TEMPLATEKEYWORD IdentifierListOrAllWithExcept; TEMPLATEKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportConstSpec: CONSTKEYWORD IdentifierListOrAllWithExcept; CONSTKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportAltstepSpec: ALTSTEPKEYWORD IdentifierListOrAllWithExcept; ALTSTEPKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportTestcaseSpec: TESTCASEKEYWORD IdentifierListOrAllWithExcept; TESTCASEKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportFunctionSpec: FUNCTIONKEYWORD IdentifierListOrAllWithExcept; FUNCTIONKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportSignatureSpec: SIGNATUREKEYWORD IdentifierListOrAllWithExcept; SIGNATUREKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportModuleParSpec: MODULEPARKEYWORD IdentifierListOrAllWithExcept; MODULEPARKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportImportSpec: IMPORTKEYWORD ALLKEYWORD; Loading @@ -162,7 +160,7 @@ QualifiedIdentifierWithExcept: {QualifiedIdentifierWithExcept} id=QualifiedIdentifier def=ExceptsDef?; AllGroupsWithExcept: ALLKEYWORD (EXCEPTKEYWORD QualifiedIdentifierList)?; {AllGroupsWithExcept} ALLKEYWORD (EXCEPTKEYWORD idList=QualifiedIdentifierList)?; AltstepDef: ALTSTEPKEYWORD name=IDENTIFIER LPAREN params=FunctionFormalParList? RPAREN spec=RunsOnSpec? LBRACKET Loading Loading @@ -980,17 +978,19 @@ WithAttribList returns ecore::EString: MultiWithAttrib returns ecore::EString: (SingleWithAttrib SEMICOLON?)*; // TODO: fix this! SingleWithAttrib returns ecore::EString: AttribKeyword OVERRIDEKEYWORD? AttribQualifier? FREE_TEXT; AttribKeyword OVERRIDEKEYWORD? /*AttribQualifier?*/ FREE_TEXT; AttribKeyword returns ecore::EString: ENCODEKEYWORD | VARIANTKEYWORD | DISPLAYKEYWORD | EXTENSIONKEYWORD | OPTIONALKEYWORD; AttribQualifier returns ecore::EString: LPAREN DefOrFieldRefList RPAREN; // TODO: fix this! //AttribQualifier returns ecore::EString: // LPAREN DefOrFieldRefList RPAREN; IdentifierList returns ecore::EString: IDENTIFIER (COMMA IDENTIFIER)*; IdentifierList: ids+=IDENTIFIER (COMMA ids+=IDENTIFIER)*; ExtendedIdentifier returns ecore::EString hidden(): IDENTIFIER (DOT IDENTIFIER)?; Loading @@ -998,8 +998,8 @@ ExtendedIdentifier returns ecore::EString hidden(): QualifiedIdentifier returns ecore::EString hidden(): IDENTIFIER (DOT IDENTIFIER)*; QualifiedIdentifierList returns ecore::EString: QualifiedIdentifier (COMMA QualifiedIdentifier)*; QualifiedIdentifierList: qids+=QualifiedIdentifier (COMMA qids+=QualifiedIdentifier)*; SingleConstDef: name=IDENTIFIER array=ArrayDef? assign=ASSIGNMENTCHAR expr=ConstantExpression; Loading Loading @@ -1049,7 +1049,7 @@ Value: PredefinedValue | ReferencedValue; ReferencedValue: ref=[RefValue|IDENTIFIER] fieldRefs+=ExtendedFieldReference*; ref=[RefValue|QualifiedIdentifier] fieldRefs+=ExtendedFieldReference*; RefValue: SingleConstDef | ModuleParameter | SingleVarInstance | FieldReference | FormalTemplatePar | SingleTempVarInstance | Loading Loading @@ -1108,18 +1108,20 @@ UnaryExpression returns SingleExpression: Primary returns SingleExpression: OpCall | Value | LPAREN SingleExpression RPAREN; DefOrFieldRefList returns ecore::EString: DefOrFieldRef (COMMA DefOrFieldRef)*; // TODO: fix this! //DefOrFieldRefList returns ecore::EString: // DefOrFieldRef (COMMA DefOrFieldRef)*; // TODO: ( ( FieldReference | SQUAREOPEN MINUS SQUARECLOSE ) [ ExtendedFieldReference ] ) // TODO: improve references DefOrFieldRef returns ecore::EString: QualifiedIdentifier | AllRef; AllRef returns ecore::EString: GROUPKEYWORD ALLKEYWORD (EXCEPTKEYWORD LBRACKET QualifiedIdentifierList RBRACKET)? | (TYPEDEFKEYWORD | TEMPLATEKEYWORD | CONSTKEYWORD | ALTSTEPKEYWORD | TESTCASEKEYWORD | FUNCTIONKEYWORD | SIGNATUREKEYWORD | MODULEPARKEYWORD) ALLKEYWORD (EXCEPTKEYWORD LBRACKET IdentifierList RBRACKET)?; //DefOrFieldRef returns ecore::EString: // QualifiedIdentifier | AllRef; // TODO: fix this! //AllRef returns ecore::EString: // GROUPKEYWORD ALLKEYWORD (EXCEPTKEYWORD LBRACKET QualifiedIdentifierList RBRACKET)? | (TYPEDEFKEYWORD | // TEMPLATEKEYWORD | CONSTKEYWORD | ALTSTEPKEYWORD | TESTCASEKEYWORD | FUNCTIONKEYWORD | SIGNATUREKEYWORD | // MODULEPARKEYWORD) ALLKEYWORD (EXCEPTKEYWORD LBRACKET IdentifierList RBRACKET)?; // TODO: improve references // StructFieldRef | ArrayOrBitRef | ParRef; Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3ScopeHelper.xtend +20 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ import de.ugoe.cs.swe.tTCN3.UnionDefNamed import de.ugoe.cs.swe.tTCN3.VarList import java.util.ArrayList import org.eclipse.emf.ecore.EObject import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.TTCN3Module class TTCN3ScopeHelper { Loading Loading @@ -340,4 +342,21 @@ class TTCN3ScopeHelper { } } def static void scopeAllGroups(EObject object, ArrayList<EObject> list) { val module = object.findDesiredParent(typeof(TTCN3Module)) as TTCN3Module if (module.defs != null) { module.defs.scopeGroups(list, true) } } def static void scopeGroups(ModuleDefinitionsList md, ArrayList<EObject> list, boolean hierarchy) { for (ModuleDefinition g : md.definitions.filter[it.def instanceof GroupDef]) { val GroupDef group = g.def as GroupDef list.add(group) if (hierarchy && group.list != null) { group.list.scopeGroups(list, hierarchy) } } } } Loading
de.ugoe.cs.swe.TTCN3.ui/META-INF/MANIFEST.MF +2 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ Require-Bundle: de.ugoe.cs.swe.TTCN3;visibility:=reexport, org.antlr.runtime, org.eclipse.xtext.common.types.ui, org.eclipse.xtext.ui.codetemplates.ui, org.eclipse.compare org.eclipse.compare, org.eclipse.xtext.xbase.lib Import-Package: org.apache.log4j, org.eclipse.xtext.xbase.lib Bundle-RequiredExecutionEnvironment: J2SE-1.5 Loading
de.ugoe.cs.swe.TTCN3/META-INF/MANIFEST.MF +2 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,8 @@ Require-Bundle: org.eclipse.xtext;visibility:=reexport, org.eclipse.emf.common, org.antlr.runtime, org.eclipse.xtext.common.types, org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional, org.eclipse.xtext.xbase.lib Import-Package: org.apache.log4j, org.eclipse.xtext.xbase.lib Bundle-RequiredExecutionEnvironment: J2SE-1.5 Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/GenerateTTCN3.mwe2 +2 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ module de.ugoe.cs.swe.GenerateTTCN3 import org.eclipse.emf.mwe.utils.* import org.eclipse.xtext.generator.* import org.eclipse.xtext.ui.generator.* import de.ugoe.cs.swe.scoping.TTCN3ImportNamespaceScopingFragment var grammarURI = "classpath:/de/ugoe/cs/swe/TTCN3.xtext" var fileExtensions = "ttcn3" Loading Loading @@ -83,7 +84,7 @@ Workflow { // fragment = exporting.SimpleNamesFragment auto-inject {} // scoping and exporting API fragment = scoping.ImportNamespacesScopingFragment auto-inject {} fragment = TTCN3ImportNamespaceScopingFragment auto-inject {} fragment = exporting.QualifiedNamesFragment auto-inject {} fragment = builder.BuilderIntegrationFragment auto-inject {} Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +49 −47 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ ConstDef: CONSTKEYWORD type=Type defs=ConstList; Type: pre=PredefinedType | ref=[ReferencedType|IDENTIFIER]; pre=PredefinedType | ref=[ReferencedType|QualifiedIdentifier]; ArrayDef: (SQUAREOPEN expr+=SingleExpression (RANGEOP range+=SingleExpression)? SQUARECLOSE)+; Loading Loading @@ -62,11 +62,8 @@ ExtConstDef: EXTKEYWORD CONSTKEYWORD type=Type id=IdentifierList; ImportDef: IMPORTKEYWORD importFrom=ImportFromSpec (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); // TODO: fix import ImportFromSpec: FROMKEYWORD id=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD?; IMPORTKEYWORD FROMKEYWORD importedModule=IDENTIFIER spec=LanguageSpec? RECURSIVEKEYWORD? (all=AllWithExcepts | LBRACKET importSpec=ImportSpec RBRACKET); AllWithExcepts: {AllWithExcepts} ALLKEYWORD def=ExceptsDef?; Loading @@ -83,74 +80,75 @@ ExceptElement: | modulePar=ExceptModuleParSpec; IdentifierListOrAll: IdentifierList | ALLKEYWORD; idList=IdentifierList | all=ALLKEYWORD; ExceptGroupSpec: GROUPKEYWORD (QualifiedIdentifierList | ALLKEYWORD); GROUPKEYWORD (idList=QualifiedIdentifierList | all=ALLKEYWORD); ExceptTypeDefSpec: TYPEDEFKEYWORD IdentifierListOrAll; TYPEDEFKEYWORD idOrAll=IdentifierListOrAll; ExceptTemplateSpec: TEMPLATEKEYWORD IdentifierListOrAll; TEMPLATEKEYWORD idOrAll=IdentifierListOrAll; ExceptConstSpec: CONSTKEYWORD IdentifierListOrAll; CONSTKEYWORD idOrAll=IdentifierListOrAll; ExceptTestcaseSpec: TESTCASEKEYWORD IdentifierListOrAll; TESTCASEKEYWORD idOrAll=IdentifierListOrAll; ExceptAltstepSpec: ALTSTEPKEYWORD IdentifierListOrAll; ALTSTEPKEYWORD idOrAll=IdentifierListOrAll; ExceptFunctionSpec: FUNCTIONKEYWORD IdentifierListOrAll; FUNCTIONKEYWORD idOrAll=IdentifierListOrAll; ExceptSignatureSpec: SIGNATUREKEYWORD IdentifierListOrAll; SIGNATUREKEYWORD idOrAll=IdentifierListOrAll; ExceptModuleParSpec: MODULEPARKEYWORD IdentifierListOrAll; MODULEPARKEYWORD idOrAll=IdentifierListOrAll; ImportSpec: {ImportSpec} (element+=ImportElement SEMICOLON?)*; ImportElement: {ImportElement} (spec=ImportGroupSpec | ImportTypeDefSpec | ImportTemplateSpec | ImportConstSpec | ImportTestcaseSpec | ImportAltstepSpec | ImportFunctionSpec | ImportSignatureSpec | ImportModuleParSpec | ImportImportSpec); (group=ImportGroupSpec | type=ImportTypeDefSpec | template=ImportTemplateSpec | const=ImportConstSpec | testcase=ImportTestcaseSpec | altstep=ImportAltstepSpec | function=ImportFunctionSpec | signature=ImportSignatureSpec | modulePar=ImportModuleParSpec | importSpec=ImportImportSpec); ImportGroupSpec: GROUPKEYWORD (groupRef=GroupRefListWithExcept | group=AllGroupsWithExcept); IdentifierListOrAllWithExcept: IdentifierList | AllWithExcept; idList=IdentifierList | all=AllWithExcept; AllWithExcept: ALLKEYWORD (EXCEPTKEYWORD IdentifierList)?; {AllWithExcept} ALLKEYWORD (EXCEPTKEYWORD idList=IdentifierList)?; ImportTypeDefSpec: TYPEDEFKEYWORD IdentifierListOrAllWithExcept; TYPEDEFKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportTemplateSpec: TEMPLATEKEYWORD IdentifierListOrAllWithExcept; TEMPLATEKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportConstSpec: CONSTKEYWORD IdentifierListOrAllWithExcept; CONSTKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportAltstepSpec: ALTSTEPKEYWORD IdentifierListOrAllWithExcept; ALTSTEPKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportTestcaseSpec: TESTCASEKEYWORD IdentifierListOrAllWithExcept; TESTCASEKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportFunctionSpec: FUNCTIONKEYWORD IdentifierListOrAllWithExcept; FUNCTIONKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportSignatureSpec: SIGNATUREKEYWORD IdentifierListOrAllWithExcept; SIGNATUREKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportModuleParSpec: MODULEPARKEYWORD IdentifierListOrAllWithExcept; MODULEPARKEYWORD idOrAll=IdentifierListOrAllWithExcept; ImportImportSpec: IMPORTKEYWORD ALLKEYWORD; Loading @@ -162,7 +160,7 @@ QualifiedIdentifierWithExcept: {QualifiedIdentifierWithExcept} id=QualifiedIdentifier def=ExceptsDef?; AllGroupsWithExcept: ALLKEYWORD (EXCEPTKEYWORD QualifiedIdentifierList)?; {AllGroupsWithExcept} ALLKEYWORD (EXCEPTKEYWORD idList=QualifiedIdentifierList)?; AltstepDef: ALTSTEPKEYWORD name=IDENTIFIER LPAREN params=FunctionFormalParList? RPAREN spec=RunsOnSpec? LBRACKET Loading Loading @@ -980,17 +978,19 @@ WithAttribList returns ecore::EString: MultiWithAttrib returns ecore::EString: (SingleWithAttrib SEMICOLON?)*; // TODO: fix this! SingleWithAttrib returns ecore::EString: AttribKeyword OVERRIDEKEYWORD? AttribQualifier? FREE_TEXT; AttribKeyword OVERRIDEKEYWORD? /*AttribQualifier?*/ FREE_TEXT; AttribKeyword returns ecore::EString: ENCODEKEYWORD | VARIANTKEYWORD | DISPLAYKEYWORD | EXTENSIONKEYWORD | OPTIONALKEYWORD; AttribQualifier returns ecore::EString: LPAREN DefOrFieldRefList RPAREN; // TODO: fix this! //AttribQualifier returns ecore::EString: // LPAREN DefOrFieldRefList RPAREN; IdentifierList returns ecore::EString: IDENTIFIER (COMMA IDENTIFIER)*; IdentifierList: ids+=IDENTIFIER (COMMA ids+=IDENTIFIER)*; ExtendedIdentifier returns ecore::EString hidden(): IDENTIFIER (DOT IDENTIFIER)?; Loading @@ -998,8 +998,8 @@ ExtendedIdentifier returns ecore::EString hidden(): QualifiedIdentifier returns ecore::EString hidden(): IDENTIFIER (DOT IDENTIFIER)*; QualifiedIdentifierList returns ecore::EString: QualifiedIdentifier (COMMA QualifiedIdentifier)*; QualifiedIdentifierList: qids+=QualifiedIdentifier (COMMA qids+=QualifiedIdentifier)*; SingleConstDef: name=IDENTIFIER array=ArrayDef? assign=ASSIGNMENTCHAR expr=ConstantExpression; Loading Loading @@ -1049,7 +1049,7 @@ Value: PredefinedValue | ReferencedValue; ReferencedValue: ref=[RefValue|IDENTIFIER] fieldRefs+=ExtendedFieldReference*; ref=[RefValue|QualifiedIdentifier] fieldRefs+=ExtendedFieldReference*; RefValue: SingleConstDef | ModuleParameter | SingleVarInstance | FieldReference | FormalTemplatePar | SingleTempVarInstance | Loading Loading @@ -1108,18 +1108,20 @@ UnaryExpression returns SingleExpression: Primary returns SingleExpression: OpCall | Value | LPAREN SingleExpression RPAREN; DefOrFieldRefList returns ecore::EString: DefOrFieldRef (COMMA DefOrFieldRef)*; // TODO: fix this! //DefOrFieldRefList returns ecore::EString: // DefOrFieldRef (COMMA DefOrFieldRef)*; // TODO: ( ( FieldReference | SQUAREOPEN MINUS SQUARECLOSE ) [ ExtendedFieldReference ] ) // TODO: improve references DefOrFieldRef returns ecore::EString: QualifiedIdentifier | AllRef; AllRef returns ecore::EString: GROUPKEYWORD ALLKEYWORD (EXCEPTKEYWORD LBRACKET QualifiedIdentifierList RBRACKET)? | (TYPEDEFKEYWORD | TEMPLATEKEYWORD | CONSTKEYWORD | ALTSTEPKEYWORD | TESTCASEKEYWORD | FUNCTIONKEYWORD | SIGNATUREKEYWORD | MODULEPARKEYWORD) ALLKEYWORD (EXCEPTKEYWORD LBRACKET IdentifierList RBRACKET)?; //DefOrFieldRef returns ecore::EString: // QualifiedIdentifier | AllRef; // TODO: fix this! //AllRef returns ecore::EString: // GROUPKEYWORD ALLKEYWORD (EXCEPTKEYWORD LBRACKET QualifiedIdentifierList RBRACKET)? | (TYPEDEFKEYWORD | // TEMPLATEKEYWORD | CONSTKEYWORD | ALTSTEPKEYWORD | TESTCASEKEYWORD | FUNCTIONKEYWORD | SIGNATUREKEYWORD | // MODULEPARKEYWORD) ALLKEYWORD (EXCEPTKEYWORD LBRACKET IdentifierList RBRACKET)?; // TODO: improve references // StructFieldRef | ArrayOrBitRef | ParRef; Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3ScopeHelper.xtend +20 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ import de.ugoe.cs.swe.tTCN3.UnionDefNamed import de.ugoe.cs.swe.tTCN3.VarList import java.util.ArrayList import org.eclipse.emf.ecore.EObject import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.TTCN3Module class TTCN3ScopeHelper { Loading Loading @@ -340,4 +342,21 @@ class TTCN3ScopeHelper { } } def static void scopeAllGroups(EObject object, ArrayList<EObject> list) { val module = object.findDesiredParent(typeof(TTCN3Module)) as TTCN3Module if (module.defs != null) { module.defs.scopeGroups(list, true) } } def static void scopeGroups(ModuleDefinitionsList md, ArrayList<EObject> list, boolean hierarchy) { for (ModuleDefinition g : md.definitions.filter[it.def instanceof GroupDef]) { val GroupDef group = g.def as GroupDef list.add(group) if (hierarchy && group.list != null) { group.list.scopeGroups(list, hierarchy) } } } }