Browse Source

restricted XBase support for GenModel

Andreas Mülder 13 years ago
parent
commit
5129b88d90
24 changed files with 30460 additions and 33580 deletions
  1. 0 1
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/CoreLibraryDefaultFeatureValueProvider.java
  2. 2 0
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSExecModelGenerator.java
  3. 0 6
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/AbstractSGenProposalProvider.java
  4. 2 2
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/SGenParser.java
  5. 5084 1135
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGen.g
  6. 60 30
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGen.tokens
  7. 786 249
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGenLexer.java
  8. 24307 11543
      plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGenParser.java
  9. 0 18
      plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/action/GenerateModelAction.java
  10. 4 25
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/SGen.xmi
  11. 0 3509
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGen.g
  12. 0 103
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGen.tokens
  13. 0 2357
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGenLexer.java
  14. 0 12095
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGenParser.java
  15. 0 1193
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/serializer/AbstractSGenSemanticSequencer.java
  16. 0 129
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/serializer/AbstractSGenSyntacticSequencer.java
  17. 0 1050
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/services/SGenGrammarAccess.java
  18. 0 23
      plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/validation/AbstractSGenJavaValidator.java
  19. 1 13
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGen.xtext
  20. 16 0
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGenRuntimeModule.java
  21. 10 0
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/resource/FeatureResourceDescription.java
  22. 45 0
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/resource/XBaseInterpreterResource.java
  23. 20 28
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java
  24. 123 71
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java

+ 0 - 1
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/CoreLibraryDefaultFeatureValueProvider.java

@@ -47,7 +47,6 @@ public class CoreLibraryDefaultFeatureValueProvider extends
 	}
 
 	public IStatus validateParameterValue(FeatureParameterValue parameterValue) {
-		// FIXME:
 		String parameterName = parameterValue.getParameter().getName();
 		if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName)
 				&& !projectExists(parameterValue.getStringValue()))

+ 2 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSExecModelGenerator.java

@@ -192,6 +192,8 @@ public abstract class AbstractSExecModelGenerator implements ISCTGenerator {
 	protected boolean isDumpSexec(GeneratorEntry entry) {
 		FeatureParameterValue dumpSexec = getFeatureParameter(entry,
 				DEBUG_FEATURE, DEBUG_FEATURE_DUMP_SEXEC);
+		if (dumpSexec == null)
+			return false;
 		return dumpSexec.getBooleanValue();
 	}
 

+ 0 - 6
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/AbstractSGenProposalProvider.java

@@ -54,12 +54,6 @@ public class AbstractSGenProposalProvider extends XbaseProposalProvider {
 	public void complete_FeatureParameterValue(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_XPrimaryExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_XLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_QID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}

+ 2 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/SGenParser.java

@@ -37,8 +37,6 @@ public class SGenParser extends AbstractContentAssistParser {
 			nameMappings = new HashMap<AbstractElement, String>() {
 				private static final long serialVersionUID = 1L;
 				{
-					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
-					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
 					put(grammarAccess.getQIDAccess().getAlternatives_1_0(), "rule__QID__Alternatives_1_0");
 					put(grammarAccess.getXAssignmentAccess().getAlternatives(), "rule__XAssignment__Alternatives");
 					put(grammarAccess.getOpEqualityAccess().getAlternatives(), "rule__OpEquality__Alternatives");
@@ -52,6 +50,8 @@ public class SGenParser extends AbstractContentAssistParser {
 					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1(), "rule__XMemberFeatureCall__Alternatives_1");
 					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1");
 					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1(), "rule__XMemberFeatureCall__Alternatives_1_1_3_1");
+					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
+					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
 					put(grammarAccess.getXExpressionInsideBlockAccess().getAlternatives(), "rule__XExpressionInsideBlock__Alternatives");
 					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1(), "rule__XVariableDeclaration__Alternatives_1");
 					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2(), "rule__XVariableDeclaration__Alternatives_2");

File diff suppressed because it is too large
+ 5084 - 1135
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGen.g


+ 60 - 30
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGen.tokens

@@ -1,7 +1,15 @@
+T__68=68
+T__69=69
 RULE_ID=4
+T__66=66
+T__67=67
+T__64=64
 T__29=29
+T__65=65
 T__28=28
+T__62=62
 T__27=27
+T__63=63
 T__26=26
 T__25=25
 T__24=24
@@ -10,6 +18,8 @@ T__22=22
 RULE_ANY_OTHER=10
 T__21=21
 T__20=20
+T__61=61
+T__60=60
 T__55=55
 T__56=56
 T__19=19
@@ -27,6 +37,7 @@ T__12=12
 T__11=11
 T__14=14
 T__13=13
+T__59=59
 RULE_INT=5
 T__50=50
 T__42=42
@@ -45,59 +56,78 @@ T__30=30
 T__31=31
 RULE_STRING=6
 T__32=32
+T__71=71
 T__33=33
+T__72=72
 T__34=34
 T__35=35
+T__70=70
 T__36=36
 T__37=37
 T__38=38
 T__39=39
 RULE_WS=9
-'..'=24
+T__73=73
 'instanceof'=41
-'!'=31
-'|'=45
 '>='=19
-'=='=17
 '/'=29
-'val'=32
-'null'=49
+'=='=17
+'switch'=51
 '>'=21
 '||'=13
-'*.'=56
+'*.'=71
 '&&'=14
-'='=11
+';'=57
+'return'=62
 'for'=36
-'GeneratorModel'=35
-'?.'=55
-'::'=15
+'?.'=70
 '+'=25
-'=>'=51
-')'=44
+'=>'=66
 '.'=16
-'->'=23
-'%'=30
-'super'=33
-'case'=48
-'true'=58
-'}'=38
-'catch'=50
-'extends'=53
+'true'=73
+'catch'=65
+'else'=50
+'extends'=68
 '+='=12
 '{'=37
 'as'=42
-'?'=52
-'var'=57
+'?'=67
+'try'=63
+'var'=72
 'feature'=40
+'if'=49
+'('=48
+':'=52
+'**'=28
+'-'=26
+'while'=55
+'statechart'=39
+','=43
+'default'=53
+']'=47
+'..'=24
+'!'=31
+'finally'=64
+'|'=46
+'new'=58
+'val'=32
+'null'=59
+'typeof'=60
+'='=11
+'GeneratorModel'=35
+'throw'=61
+'::'=15
+')'=44
+'%'=30
+'->'=23
+'super'=33
+'do'=56
+'case'=54
+'}'=38
 '<='=20
 '!='=18
 'false'=34
 '<'=22
-':'=47
-'('=46
-'-'=26
 '*'=27
-'**'=28
-'statechart'=39
-','=43
-'&'=54
+'['=45
+'&'=69

File diff suppressed because it is too large
+ 786 - 249
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGenLexer.java


File diff suppressed because it is too large
+ 24307 - 11543
plugins/org.yakindu.sct.generator.genmodel.ui/src-gen/org/yakindu/sct/generator/genmodel/ui/contentassist/antlr/internal/InternalSGenParser.java


+ 0 - 18
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/action/GenerateModelAction.java

@@ -10,8 +10,6 @@
  */
 package org.yakindu.sct.generator.genmodel.ui.action;
 
-import java.util.List;
-
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -26,16 +24,12 @@ import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.ui.IObjectActionDelegate;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
-import org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter;
 import org.yakindu.sct.generator.core.ISCTGenerator;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
-import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgen.GeneratorModel;
-import org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl;
 
 import com.google.inject.Inject;
 
@@ -44,7 +38,6 @@ import com.google.inject.Inject;
  * @author andreas muelder - Initial contribution and API
  * 
  */
-@SuppressWarnings("restriction")
 public class GenerateModelAction implements IObjectActionDelegate {
 
 	private ISelection selection;
@@ -52,9 +45,6 @@ public class GenerateModelAction implements IObjectActionDelegate {
 	@Inject
 	private XtextResourceSetProvider provider;
 
-	@Inject
-	private IExpressionInterpreter interpreter;
-
 	public void run(IAction action) {
 		IFile file = unwrap();
 		URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(),
@@ -62,14 +52,6 @@ public class GenerateModelAction implements IObjectActionDelegate {
 		Resource resource = loadResource(uri);
 		GeneratorModel model = (GeneratorModel) resource.getContents().get(0);
 
-		// TODO: DIRTY
-		List<FeatureParameterValue> contents = EcoreUtil2.getAllContentsOfType(
-				model, FeatureParameterValue.class);
-		for (FeatureParameterValue featureParameterValue : contents) {
-			((FeatureParameterValueImpl) featureParameterValue)
-					.setInterpreter(interpreter);
-		}
-
 		String generatorId = model.getGeneratorId();
 		GeneratorDescriptor description = GeneratorExtensions
 				.getGeneratorDescriptorForId(generatorId);

+ 4 - 25
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/SGen.xmi

@@ -18,7 +18,7 @@
         <elements xsi:type="xtext:Keyword" value="GeneratorModel"/>
         <elements xsi:type="xtext:Keyword" value="for"/>
         <elements xsi:type="xtext:Assignment" feature="generatorId" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value="{"/>
         <elements xsi:type="xtext:Assignment" cardinality="+" feature="entries" operator="+=">
@@ -94,31 +94,10 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="="/>
         <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.23"/>
         </elements>
       </alternatives>
     </rules>
-    <rules xsi:type="xtext:ParserRule" name="XPrimaryExpression">
-      <type metamodel="/0/@metamodelDeclarations.2">
-        <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
-      </type>
-      <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.37"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.26"/>
-      </alternatives>
-    </rules>
-    <rules xsi:type="xtext:ParserRule" name="XLiteral">
-      <type metamodel="/0/@metamodelDeclarations.2">
-        <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
-      </type>
-      <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.41"/>
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.43"/>
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.42"/>
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.44"/>
-      </alternatives>
-    </rules>
     <rules xsi:type="xtext:ParserRule" name="QID">
       <type metamodel="/1/@metamodelDeclarations.2">
         <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
@@ -571,7 +550,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.22"/>
         <elements xsi:type="xtext:Alternatives" cardinality="*">
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Group" predicated="true">
@@ -672,7 +651,7 @@
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.33"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.28"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.37"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.23"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.27"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.30"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.31"/>

File diff suppressed because it is too large
+ 0 - 3509
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGen.g


+ 0 - 103
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGen.tokens

@@ -1,103 +0,0 @@
-RULE_ID=4
-T__29=29
-T__28=28
-T__27=27
-T__26=26
-T__25=25
-T__24=24
-T__23=23
-T__22=22
-RULE_ANY_OTHER=10
-T__21=21
-T__20=20
-T__55=55
-T__56=56
-T__19=19
-T__57=57
-T__58=58
-T__51=51
-T__16=16
-T__52=52
-T__15=15
-T__53=53
-T__18=18
-T__54=54
-T__17=17
-T__12=12
-T__11=11
-T__14=14
-T__13=13
-RULE_INT=5
-T__50=50
-T__42=42
-T__43=43
-T__40=40
-T__41=41
-T__46=46
-T__47=47
-T__44=44
-T__45=45
-T__48=48
-T__49=49
-RULE_SL_COMMENT=8
-RULE_ML_COMMENT=7
-T__30=30
-T__31=31
-RULE_STRING=6
-T__32=32
-T__33=33
-T__34=34
-T__35=35
-T__36=36
-T__37=37
-T__38=38
-T__39=39
-RULE_WS=9
-'..'=31
-'!'=38
-'instanceof'=25
-'|'=45
-'>='=26
-'/'=36
-'=='=23
-'val'=49
-'null'=53
-'>'=28
-'||'=21
-'*.'=41
-'&&'=22
-'='=17
-'for'=12
-'GeneratorModel'=11
-'?.'=40
-'::'=18
-'+'=32
-'=>'=55
-')'=44
-'.'=19
-'%'=37
-'->'=30
-'super'=50
-'case'=46
-'true'=52
-'}'=14
-'catch'=54
-'extends'=57
-'+='=20
-'{'=13
-'as'=39
-'?'=56
-'var'=48
-'feature'=16
-'<='=27
-'!='=24
-'false'=51
-'<'=29
-':'=47
-'('=43
-'-'=33
-'*'=34
-'**'=35
-'statechart'=15
-','=42
-'&'=58

File diff suppressed because it is too large
+ 0 - 2357
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGenLexer.java


File diff suppressed because it is too large
+ 0 - 12095
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/parser/antlr/internal/InternalSGenParser.java


File diff suppressed because it is too large
+ 0 - 1193
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/serializer/AbstractSGenSemanticSequencer.java


+ 0 - 129
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/serializer/AbstractSGenSyntacticSequencer.java

@@ -1,129 +0,0 @@
-package org.yakindu.sct.generator.genmodel.serializer;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.IGrammarAccess;
-import org.eclipse.xtext.RuleCall;
-import org.eclipse.xtext.nodemodel.INode;
-import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
-import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
-import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
-import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
-import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
-import org.yakindu.sct.generator.genmodel.services.SGenGrammarAccess;
-
-@SuppressWarnings("restriction")
-public class AbstractSGenSyntacticSequencer extends AbstractSyntacticSequencer {
-
-	protected SGenGrammarAccess grammarAccess;
-	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
-	protected AbstractElementAlias match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_FalseKeyword_1_0_RightParenthesisKeyword_2_p;
-	protected AbstractElementAlias match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_FalseKeyword_1_0_RightParenthesisKeyword_2_p;
-	protected AbstractElementAlias match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_NullKeyword_1_RightParenthesisKeyword_2_p;
-	protected AbstractElementAlias match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_NullKeyword_1_RightParenthesisKeyword_2_p;
-	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
-	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
-	
-	@Inject
-	protected void init(IGrammarAccess access) {
-		grammarAccess = (SGenGrammarAccess) access;
-		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(true, false, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
-		match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_FalseKeyword_1_0_RightParenthesisKeyword_2_p = new GroupAlias(false, false, new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()), new TokenAlias(false, false, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()), new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()));
-		match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_FalseKeyword_1_0_RightParenthesisKeyword_2_p = new GroupAlias(false, false, new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()), new TokenAlias(false, false, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()), new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()));
-		match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_NullKeyword_1_RightParenthesisKeyword_2_p = new GroupAlias(false, false, new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()), new TokenAlias(false, false, grammarAccess.getXNullLiteralAccess().getNullKeyword_1()), new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()));
-		match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_NullKeyword_1_RightParenthesisKeyword_2_p = new GroupAlias(false, false, new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()), new TokenAlias(false, false, grammarAccess.getXNullLiteralAccess().getNullKeyword_1()), new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()));
-		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
-		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(false, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
-	}
-	
-	@Override
-	protected String getUnassignedRuleCallToken(RuleCall ruleCall, INode node) {
-		if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
-			return getOpSingleAssignToken(ruleCall, node);
-		return "";
-	}
-	
-	protected String getOpSingleAssignToken(RuleCall ruleCall, INode node) {
-		if (node != null)
-			return getTokenText(node);
-		return "=";
-	}
-	
-	@Override
-	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		if (!transition.isSyntacticallyAmbiguous())
-			return;
-		if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(transition.getAmbiguousSyntax()))
-			emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, transition, fromNode, toNode);
-		else if(match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_FalseKeyword_1_0_RightParenthesisKeyword_2_p.equals(transition.getAmbiguousSyntax()))
-			emit_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_FalseKeyword_1_0_RightParenthesisKeyword_2_p(semanticObject, transition, fromNode, toNode);
-		else if(match_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_FalseKeyword_1_0_RightParenthesisKeyword_2_p.equals(transition.getAmbiguousSyntax()))
-			emit_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_FalseKeyword_1_0_RightParenthesisKeyword_2_p(semanticObject, transition, fromNode, toNode);
-		else if(match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_NullKeyword_1_RightParenthesisKeyword_2_p.equals(transition.getAmbiguousSyntax()))
-			emit_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_NullKeyword_1_RightParenthesisKeyword_2_p(semanticObject, transition, fromNode, toNode);
-		else if(match_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_NullKeyword_1_RightParenthesisKeyword_2_p.equals(transition.getAmbiguousSyntax()))
-			emit_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_NullKeyword_1_RightParenthesisKeyword_2_p(semanticObject, transition, fromNode, toNode);
-		else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(transition.getAmbiguousSyntax()))
-			emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, transition, fromNode, toNode);
-		else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(transition.getAmbiguousSyntax()))
-			emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, transition, fromNode, toNode);
-		else acceptNodes(transition, fromNode, toNode);
-	}
-
-	/**
-	 * Syntax:
-	 *     ';'?
-	 */
-	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('* 'false' ')'+
-	 */
-	protected void emit_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_FalseKeyword_1_0_RightParenthesisKeyword_2_p(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('+ 'false' ')'+
-	 */
-	protected void emit_XBooleanLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_FalseKeyword_1_0_RightParenthesisKeyword_2_p(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('* 'null' ')'+
-	 */
-	protected void emit_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_a_NullKeyword_1_RightParenthesisKeyword_2_p(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('+ 'null' ')'+
-	 */
-	protected void emit_XNullLiteral_XParenthesizedExpression_LeftParenthesisKeyword_0_p_NullKeyword_1_RightParenthesisKeyword_2_p(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('*
-	 */
-	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-	/**
-	 * Syntax:
-	 *     '('+
-	 */
-	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
-		acceptNodes(transition, fromNode, toNode);
-	}
-	
-}

File diff suppressed because it is too large
+ 0 - 1050
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/services/SGenGrammarAccess.java


+ 0 - 23
plugins/org.yakindu.sct.generator.genmodel/src-gen/org/yakindu/sct/generator/genmodel/validation/AbstractSGenJavaValidator.java

@@ -1,23 +0,0 @@
-package org.yakindu.sct.generator.genmodel.validation;
- 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.xbase.validation.XbaseJavaValidator;
-import org.eclipse.xtext.validation.ComposedChecks;
-
-@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class, org.eclipse.xtext.validation.NamesAreUniqueValidator.class})
-public class AbstractSGenJavaValidator extends XbaseJavaValidator {
-
-	@Override
-	protected List<EPackage> getEPackages() {
-	    List<EPackage> result = new ArrayList<EPackage>();
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.yakindu.org/sct/statechart/SGen"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
-		return result;
-	}
-
-}

+ 1 - 13
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGen.xtext

@@ -23,19 +23,7 @@ FeatureConfiguration returns gen::FeatureConfiguration:
 	'}';
 
 FeatureParameterValue returns gen::FeatureParameterValue:
-	{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] '=' expression=XExpression;
-
-XPrimaryExpression returns xbase::XExpression:
-	XFeatureCall |
-	XLiteral |
-	XParenthesizedExpression;
-	
-XLiteral returns xbase::XExpression:
-	XBooleanLiteral |
-	XIntLiteral |
-	XNullLiteral |
-	XStringLiteral
-;
+	{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] '=' expression=XLiteral;
 
 QID:
 	ID (('::' | '.') ID)*; 

+ 16 - 0
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGenRuntimeModule.java

@@ -1,7 +1,19 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
 package org.yakindu.sct.generator.genmodel;
 
 import org.eclipse.xtext.naming.IQualifiedNameProvider;
 import org.eclipse.xtext.naming.SimpleNameProvider;
+import org.eclipse.xtext.resource.XtextResource;
+import org.yakindu.sct.generator.genmodel.resource.XBaseInterpreterResource;
 
 /**
  * Use this class to register components to be used at runtime / without the
@@ -15,5 +27,9 @@ public class SGenRuntimeModule extends
 		return SimpleNameProvider.class;
 	}
 
+	@Override
+	public Class<? extends XtextResource> bindXtextResource() {
+		return XBaseInterpreterResource.class;
+	}
 
 }

+ 10 - 0
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/resource/FeatureResourceDescription.java

@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
 package org.yakindu.sct.generator.genmodel.resource;
 
 import java.util.HashMap;

+ 45 - 0
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/resource/XBaseInterpreterResource.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.generator.genmodel.resource;
+
+import org.eclipse.xtext.util.CancelIndicator;
+import org.eclipse.xtext.xbase.XExpression;
+import org.eclipse.xtext.xbase.interpreter.IEvaluationContext;
+import org.eclipse.xtext.xbase.interpreter.IEvaluationResult;
+import org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter;
+import org.eclipse.xtext.xbase.resource.XbaseResource;
+
+import com.google.inject.Inject;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@SuppressWarnings("restriction")
+public class XBaseInterpreterResource extends XbaseResource implements
+		IExpressionInterpreter {
+
+	@Inject
+	private IExpressionInterpreter interpreter;
+
+	@Override
+	public IEvaluationResult evaluate(XExpression expression) {
+		return interpreter.evaluate(expression);
+	}
+
+	@Override
+	public IEvaluationResult evaluate(XExpression expression,
+			IEvaluationContext context, CancelIndicator cancelIndicator) {
+		return interpreter.evaluate(expression, context, cancelIndicator);
+	}
+
+}

+ 20 - 28
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java

@@ -13,79 +13,71 @@ package org.yakindu.sct.generator.genmodel.validation;
 import java.util.NoSuchElementException;
 
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.validation.Check;
-import org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
+import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
+import org.yakindu.sct.generator.core.features.IDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgen.GeneratorModel;
 import org.yakindu.sct.model.sgen.ParameterTypes;
 import org.yakindu.sct.model.sgen.SGenPackage;
-import org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-@SuppressWarnings("restriction")
 public class SGenJavaValidator extends AbstractSGenJavaValidator {
-
-	@Inject
-	private IExpressionInterpreter interpreter;
-
 	@Check
 	public void checkParameterValueType(
 			final FeatureParameterValue parameterValue) {
 		if (parameterValue == null || parameterValue.getExpression() == null)
 			return;
-		// TODO: Dirty
-		((FeatureParameterValueImpl) parameterValue)
-				.setInterpreter(interpreter);
 		Object value = parameterValue.getValue();
 		ParameterTypes parameterType = parameterValue.getParameter()
 				.getParameterType();
 		switch (parameterType) {
 		case BOOLEAN:
 			if (!(value instanceof Boolean))
-				error("Incompatible type, Boolean expteced",
+				error("Incompatible type, Boolean expected",
 						SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
 			break;
 		case INTEGER:
 			if (!(value instanceof Integer))
-				error("Incompatible type, Integer expteced",
+				error("Incompatible type, Integer expected",
 						SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
 			break;
 		case FLOAT:
 			if (!(value instanceof Float))
-				error("Incompatible type, Float expteced",
+				error("Incompatible type, Float expected",
 						SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
 			break;
 		case STRING:
 			if (!(value instanceof String))
-				error("Incompatible type, String expteced",
+				error("Incompatible type, String expected",
 						SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
 			break;
 		}
 	}
 
-	// @Check
-	// public void checkParameterValue(final FeatureParameterValue value) {
-	// if (value.getValue() == null)
-	// return;
-	// GeneratorModel model = (GeneratorModel) EcoreUtil2
-	// .getRootContainer(value);
-	// IDefaultFeatureValueProvider provider = LibraryExtensions
-	// .getDefaultFeatureValueProvider(model.getGeneratorId(), value
-	// .getParameter().getFeatureType().getLibrary());
-	// IStatus status = provider.validateParameterValue(value);
-	// createMarker(status);
-	// }
+	@Check
+	public void checkParameterValue(final FeatureParameterValue value) {
+		if (value.getValue() == null)
+			return;
+		GeneratorModel model = (GeneratorModel) EcoreUtil2
+				.getRootContainer(value);
+		IDefaultFeatureValueProvider provider = LibraryExtensions
+				.getDefaultFeatureValueProvider(model.getGeneratorId(), value
+						.getParameter().getFeatureType().getLibrary());
+		IStatus status = provider.validateParameterValue(value);
+		createMarker(status);
+	}
 
 	private void createMarker(IStatus status) {
 		switch (status.getSeverity()) {
@@ -98,7 +90,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 					SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
 		}
 	}
-	
+
 	@Check
 	public void checkGeneratorExists(GeneratorModel model) {
 		try {

+ 123 - 71
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java

@@ -6,48 +6,51 @@
  */
 package org.yakindu.sct.model.sgen.impl;
 
+import java.nio.channels.IllegalSelectorException;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-import org.eclipse.xtext.purexbase.PureXbaseRuntimeModule;
 import org.eclipse.xtext.xbase.XBooleanLiteral;
 import org.eclipse.xtext.xbase.XExpression;
 import org.eclipse.xtext.xbase.XStringLiteral;
 import org.eclipse.xtext.xbase.XbaseFactory;
-import org.eclipse.xtext.xbase.XbaseRuntimeModule;
 import org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter;
-import org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
  * <em><b>Feature Parameter Value</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getParameter <em>Parameter</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getFeatureConfiguration <em>Feature Configuration</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getExpression <em>Expression</em>}</li>
+ * <li>
+ * {@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getParameter
+ * <em>Parameter</em>}</li>
+ * <li>
+ * {@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getFeatureConfiguration
+ * <em>Feature Configuration</em>}</li>
+ * <li>
+ * {@link org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl#getExpression
+ * <em>Expression</em>}</li>
  * </ul>
  * </p>
- *
+ * 
  * @generated
  */
 @SuppressWarnings("restriction")
 public class FeatureParameterValueImpl extends EObjectImpl implements
 		FeatureParameterValue {
 	/**
-	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' reference.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}'
+	 * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @see #getParameter()
 	 * @generated
 	 * @ordered
@@ -55,8 +58,9 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	protected FeatureParameter parameter;
 
 	/**
-	 * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * The cached value of the '{@link #getExpression() <em>Expression</em>}'
+	 * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @see #getExpression()
 	 * @generated
 	 * @ordered
@@ -65,6 +69,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 
@@ -74,6 +79,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
@@ -83,15 +89,18 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public FeatureParameter getParameter() {
 		if (parameter != null && parameter.eIsProxy()) {
-			InternalEObject oldParameter = (InternalEObject)parameter;
-			parameter = (FeatureParameter)eResolveProxy(oldParameter);
+			InternalEObject oldParameter = (InternalEObject) parameter;
+			parameter = (FeatureParameter) eResolveProxy(oldParameter);
 			if (parameter != oldParameter) {
 				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER, oldParameter, parameter));
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER,
+							oldParameter, parameter));
 			}
 		}
 		return parameter;
@@ -99,6 +108,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public FeatureParameter basicGetParameter() {
@@ -107,26 +117,32 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public void setParameter(FeatureParameter newParameter) {
 		FeatureParameter oldParameter = parameter;
 		parameter = newParameter;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER, oldParameter, parameter));
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER,
+					oldParameter, parameter));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public FeatureConfiguration getFeatureConfiguration() {
-		if (eContainerFeatureID() != SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION) return null;
-		return (FeatureConfiguration)eContainer();
+		if (eContainerFeatureID() != SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION)
+			return null;
+		return (FeatureConfiguration) eContainer();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public XExpression getExpression() {
@@ -135,6 +151,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public NotificationChain basicSetExpression(XExpression newExpression,
@@ -142,28 +159,47 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 		XExpression oldExpression = expression;
 		expression = newExpression;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION, oldExpression, newExpression);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			ENotificationImpl notification = new ENotificationImpl(this,
+					Notification.SET,
+					SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION,
+					oldExpression, newExpression);
+			if (msgs == null)
+				msgs = notification;
+			else
+				msgs.add(notification);
 		}
 		return msgs;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	public void setExpression(XExpression newExpression) {
 		if (newExpression != expression) {
 			NotificationChain msgs = null;
 			if (expression != null)
-				msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION, null, msgs);
+				msgs = ((InternalEObject) expression)
+						.eInverseRemove(
+								this,
+								EOPPOSITE_FEATURE_BASE
+										- SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION,
+								null, msgs);
 			if (newExpression != null)
-				msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION, null, msgs);
+				msgs = ((InternalEObject) newExpression)
+						.eInverseAdd(
+								this,
+								EOPPOSITE_FEATURE_BASE
+										- SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION,
+								null, msgs);
 			msgs = basicSetExpression(newExpression, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION, newExpression, newExpression));
+			if (msgs != null)
+				msgs.dispatch();
+		} else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION,
+					newExpression, newExpression));
 	}
 
 	/**
@@ -189,18 +225,20 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 		setExpression(literal);
 	}
 
-	private IExpressionInterpreter interpreter;
-	public void setInterpreter(IExpressionInterpreter interpreter){
-		this.interpreter = interpreter;
-	}
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
 	 * @generated NOT
 	 */
 	public String getStringValue() {
-		return (String) interpreter.evaluate(getExpression()).getResult();
+		return (String) getInterpreter().evaluate(getExpression()).getResult();
+	}
+
+	private IExpressionInterpreter getInterpreter() {
+		if (eResource() instanceof IExpressionInterpreter) {
+			return (IExpressionInterpreter) eResource();
+		}
+		throw new IllegalStateException();
 	}
 
 	/**
@@ -209,7 +247,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * @generated NOT
 	 */
 	public boolean getBooleanValue() {
-		return (Boolean) interpreter.evaluate(getExpression()).getResult();
+		return (Boolean) getInterpreter().evaluate(getExpression()).getResult();
 	}
 
 	/**
@@ -218,120 +256,134 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * @generated NOT
 	 */
 	public Object getValue() {
-		return interpreter.evaluate(getExpression()).getResult();
+		return getInterpreter().evaluate(getExpression()).getResult();
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
-				if (eInternalContainer() != null)
-					msgs = eBasicRemoveFromContainer(msgs);
-				return eBasicSetContainer(otherEnd, SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION, msgs);
+		case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			return eBasicSetContainer(otherEnd,
+					SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION,
+					msgs);
 		}
 		return super.eInverseAdd(otherEnd, featureID, msgs);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
-				return eBasicSetContainer(null, SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION, msgs);
-			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				return basicSetExpression(null, msgs);
+		case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
+			return eBasicSetContainer(null,
+					SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION,
+					msgs);
+		case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
+			return basicSetExpression(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID()) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
-				return eInternalContainer().eInverseRemove(this, SGenPackage.FEATURE_CONFIGURATION__PARAMETER_VALUES, FeatureConfiguration.class, msgs);
+		case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
+			return eInternalContainer().eInverseRemove(this,
+					SGenPackage.FEATURE_CONFIGURATION__PARAMETER_VALUES,
+					FeatureConfiguration.class, msgs);
 		}
 		return super.eBasicRemoveFromContainerFeature(msgs);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
-				if (resolve) return getParameter();
-				return basicGetParameter();
-			case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
-				return getFeatureConfiguration();
-			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				return getExpression();
+		case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
+			if (resolve)
+				return getParameter();
+			return basicGetParameter();
+		case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
+			return getFeatureConfiguration();
+		case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
+			return getExpression();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
-				setParameter((FeatureParameter)newValue);
-				return;
-			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				setExpression((XExpression)newValue);
-				return;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
+			setParameter((FeatureParameter) newValue);
+			return;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
+			setExpression((XExpression) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
-				setParameter((FeatureParameter)null);
-				return;
-			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				setExpression((XExpression)null);
-				return;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
+			setParameter((FeatureParameter) null);
+			return;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
+			setExpression((XExpression) null);
+			return;
 		}
 		super.eUnset(featureID);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
-				return parameter != null;
-			case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
-				return getFeatureConfiguration() != null;
-			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				return expression != null;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__PARAMETER:
+			return parameter != null;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION:
+			return getFeatureConfiguration() != null;
+		case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
+			return expression != null;
 		}
 		return super.eIsSet(featureID);
 	}