Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Davis2013-03-25 18:25:17 +0000
committerMatthew Davis2013-03-25 18:25:17 +0000
commitf48aae78e8d537b97acf3c088ad70de783c2f47a (patch)
tree12f413790fe6ac0417ba7c7f540805d7123d4f7c
parentc46b4eaab0a616ea40ddcb67748253764cdb25cd (diff)
downloadorg.eclipse.stem-f48aae78e8d537b97acf3c088ad70de783c2f47a.tar.gz
org.eclipse.stem-f48aae78e8d537b97acf3c088ad70de783c2f47a.tar.xz
org.eclipse.stem-f48aae78e8d537b97acf3c088ad70de783c2f47a.zip
git-svn-id: http://dev.eclipse.org/svnroot/technology/org.eclipse.stem/trunk@3659 92a21009-5b66-0410-b83a-dc787c41c6e9
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/META-INF/MANIFEST.MF5
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/BuildProperties_.java8
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory_.java15
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProvider_.java13
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/PluginProperties_.java12
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ActionBarContributor_.java5
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Editor_.java9
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ModelWizard_.java5
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PluginProperties_.java8
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Plugin_.java7
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditor.java8
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapter.java7
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapterFactory.java7
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyStringProviderAdapterFactory.java7
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/RelativeValueProviderAdapterFactory.java7
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessages.java5
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessagesProperties.java8
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/AdapterFactoryClass_.java8
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/Class_.java19
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/FactoryClass_.java12
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PackageClass_.java32
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PluginProperties_.java4
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/SwitchClass_.java13
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/CodeGenConstants.java6
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/GeneratorUtils.java48
-rwxr-xr-xmodelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenClass.java80
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenModel.java37
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenPackage.java31
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodDefinition.java43
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodGenerator.java60
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/XtextUtils.java111
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/templates/editor/manifest.mfjet2
-rw-r--r--modelgen/org.eclipse.stem.model.codegen/templates/model/Class.javajet31
-rw-r--r--modelgen/org.eclipse.stem.model.common/.classpath7
-rw-r--r--modelgen/org.eclipse.stem.model.common/.project28
-rw-r--r--modelgen/org.eclipse.stem.model.common/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--modelgen/org.eclipse.stem.model.common/META-INF/MANIFEST.MF13
-rw-r--r--modelgen/org.eclipse.stem.model.common/build.properties5
-rw-r--r--modelgen/org.eclipse.stem.model.common/plugin.xml33
-rw-r--r--modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Activator.java54
-rw-r--r--modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectBundleLoadHandler.java280
-rw-r--r--modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectNature.java46
-rw-r--r--modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectUtils.java54
-rw-r--r--modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Starter.java11
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/.classpath7
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/.project34
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/META-INF/MANIFEST.MF14
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/build.properties6
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.ecore57
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel42
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/plugin.properties4
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/plugin.xml703
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/schema/functions.exsd174
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/Activator.java30
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionDefinition.java272
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsFactory.java78
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsPackage.java881
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgument.java77
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgumentReference.java76
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionException.java38
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionLoader.java232
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/JavaMethodArgument.java77
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/STEMDSLUtils.java143
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/SystemArgumentReference.java50
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/TestFunctions.java68
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionDefinitionImpl.java626
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsFactoryImpl.java169
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsPackageImpl.java500
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentImpl.java214
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentReferenceImpl.java221
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/JavaMethodArgumentImpl.java214
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/SystemArgumentReferenceImpl.java153
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsAdapterFactory.java194
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsSwitch.java199
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/.classpath8
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/.project28
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/META-INF/MANIFEST.MF27
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/build.properties8
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml332
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml_gen323
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/AbstractCTDLUiModule.java247
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/CTDLExecutableExtensionFactory.java28
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/AbstractCTDLProposalProvider.java185
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/CTDLParser.java134
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/PartialCTDLContentAssistParser.java38
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g2487
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.tokens29
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLLexer.java1368
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLParser.java6558
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/internal/CTDLActivator.java95
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/CTDLUiModule.java33
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/contentassist/CTDLProposalProvider.java59
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorDialog.java129
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorView.java39
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedExpressionEditorComposite.java249
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLHighlightConfiguration.java85
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLSemanticHighlighter.java140
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/hover/CTDLHoverProvider.java32
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLDescriptionLabelProvider.java27
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLLabelProvider.java34
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/outline/CTDLOutlineTreeProvider.java14
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/quickfix/CTDLQuickfixProvider.java19
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.classpath9
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.launch/Generate Language Infrastructure (org.eclipse.stem.model.ctdl).launch18
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.launch/Launch Runtime Eclipse.launch35
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.project34
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/META-INF/MANIFEST.MF40
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/build.properties10
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/customBuildCallbacks.xml194
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/plugin.xml17
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/plugin.xml_gen17
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/AbstractCTDLRuntimeModule.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.ecore109
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.genmodel100
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.xmi679
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDLStandaloneSetupGenerated.java43
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/AbsoluteCompartmentValueReference.java21
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Block.java72
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/BooleanLiteral.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentReference.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentTransitionDefinitions.java81
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlFactory.java298
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlPackage.java2351
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatement.java81
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatementReference.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Div.java80
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Evaluation.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Expression.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ExternalFunctionReference.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionCall.java71
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionReference.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariable.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariableReference.java21
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/LocalVariableReference.java21
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/MetamodelResource.java110
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Minus.java80
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ModelParamReference.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Multi.java80
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/NumberLiteral.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Plus.java80
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/PrimaryExpression.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/RelativeCompartmentValueReference.java21
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ReturnStatement.java22
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ScopedVariableReference.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/StringLiteral.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/TransitionBlock.java54
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/VariableReference.java53
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/AbsoluteCompartmentValueReferenceImpl.java44
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BlockImpl.java239
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BooleanLiteralImpl.java176
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentReferenceImpl.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentTransitionDefinitionsImpl.java260
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlFactoryImpl.java472
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlPackageImpl.java1228
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementImpl.java265
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementReferenceImpl.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DivImpl.java264
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/EvaluationImpl.java193
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExpressionImpl.java193
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExternalFunctionReferenceImpl.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionCallImpl.java232
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionReferenceImpl.java177
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableImpl.java177
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableReferenceImpl.java44
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/LocalVariableReferenceImpl.java44
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MetamodelResourceImpl.java304
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MinusImpl.java264
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ModelParamReferenceImpl.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MultiImpl.java264
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/NumberLiteralImpl.java176
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PlusImpl.java264
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PrimaryExpressionImpl.java176
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/RelativeCompartmentValueReferenceImpl.java44
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ReturnStatementImpl.java45
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ScopedVariableReferenceImpl.java177
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/StringLiteralImpl.java176
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/TransitionBlockImpl.java194
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/VariableReferenceImpl.java172
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlAdapterFactory.java721
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlSwitch.java815
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLAntlrTokenFileProvider.java16
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLParser.java39
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g862
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.tokens29
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLLexer.java1368
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLParser.java2188
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSemanticSequencer.java628
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSyntacticSequencer.java42
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/services/CTDLGrammarAccess.java1148
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/validation/AbstractCTDLJavaValidator.java19
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDL.xtext119
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLRuntimeModule.java31
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLStandaloneSetup.java14
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLUtils.java151
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/ContextSensitiveResourceWrapper.java39
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2157
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/formatting/CTDLFormatter.java27
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.xtend175
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/CTDLScopeProvider.java241
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/ExtensionAwareScope.java130
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/MetamodelContextLinker.java166
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/validation/CTDLJavaValidator.java13
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/.CTDLGenerator.java._tracebin0 -> 57346 bytes
-rw-r--r--modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.java506
-rw-r--r--modelgen/org.eclipse.stem.model.transform/META-INF/MANIFEST.MF3
-rw-r--r--modelgen/org.eclipse.stem.model.transform/TransformApp-3.7.launch3
-rw-r--r--modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/Activator.java21
-rw-r--r--modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/EcoreTransformSwitch.java35
-rw-r--r--modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/ModelGenerator.java38
-rw-r--r--modelgen/org.eclipse.stem.model.ui/META-INF/MANIFEST.MF6
-rw-r--r--modelgen/org.eclipse.stem.model.ui/plugin.xml161
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelActionBarContributor.java2
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelEditor.java119
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/Constants.java2
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/MetamodelEditorPlugin.java13
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/BundleInstallTester.java14
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/LoadBundleAction.java85
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/ToggleNatureAction.java61
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/UnloadBundleAction.java63
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelGeneratorWizard.java7
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelTransitionsPage.java215
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/NewModelWizard.java3
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/PackagePropertiesPage.java30
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/TransitionEditorDialog.java219
-rw-r--r--modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/WizardHelper.java14
-rw-r--r--modelgen/org.eclipse.stem.model/.classpath1
-rw-r--r--modelgen/org.eclipse.stem.model/.project6
-rw-r--r--modelgen/org.eclipse.stem.model/build.properties2
-rw-r--r--modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateModel_transitions_Transition.gifbin0 -> 223 bytes
-rw-r--r--modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_source_Compartment.gifbin0 -> 223 bytes
-rw-r--r--modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_target_Compartment.gifbin0 -> 223 bytes
-rw-r--r--modelgen/org.eclipse.stem.model/icons/full/obj16/Transition.gifbin0 -> 129 bytes
-rw-r--r--modelgen/org.eclipse.stem.model/model/metamodel.ecore30
-rw-r--r--modelgen/org.eclipse.stem.model/model/metamodel.genmodel23
-rw-r--r--modelgen/org.eclipse.stem.model/plugin.properties9
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Compartment.java4
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/CompartmentGroup.java1
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelFactory.java9
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelPackage.java277
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Model.java20
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Package.java1
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Transition.java212
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/AuthorDetailsImpl.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/CompartmentImpl.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelFactoryImpl.java15
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelPackageImpl.java121
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelGenSettingsImpl.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelImpl.java44
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelParamConstraintImpl.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageGenSettingsImpl.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageImpl.java5
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/TransitionImpl.java527
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/AuthorDetailsItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentGroupItemProvider.java4
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelEditPlugin.java2
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelItemProviderAdapterFactory.java26
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelGenSettingsItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelItemProvider.java11
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamConstraintItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageGenSettingsItemProvider.java3
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageItemProvider.java4
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/TransitionItemProvider.java279
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelAdapterFactory.java22
-rw-r--r--modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelSwitch.java24
270 files changed, 44457 insertions, 278 deletions
diff --git a/modelgen/org.eclipse.stem.model.codegen/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.codegen/META-INF/MANIFEST.MF
index ed0d28357..1bf379e71 100644
--- a/modelgen/org.eclipse.stem.model.codegen/META-INF/MANIFEST.MF
+++ b/modelgen/org.eclipse.stem.model.codegen/META-INF/MANIFEST.MF
@@ -9,7 +9,10 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.emf.codegen,
org.eclipse.emf.codegen.ecore,
- org.eclipse.stem.model
+ org.eclipse.stem.model,
+ org.eclipse.xtext,
+ org.eclipse.stem.model.ctdl,
+ org.eclipse.stem.model.ctdl.functions
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.stem.model.codegen,
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/BuildProperties_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/BuildProperties_.java
index 7ae37781a..1fa5e0e3d 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/BuildProperties_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/BuildProperties_.java
@@ -1,7 +1,11 @@
package org.eclipse.emf.codegen.ecore.templates.edit;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
-import java.util.*;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
public class BuildProperties_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory_.java
index d61883661..8456da464 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory_.java
@@ -1,7 +1,18 @@
package org.eclipse.emf.codegen.ecore.templates.edit;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenProviderKind;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
public class ItemProviderAdapterFactory_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProvider_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProvider_.java
index 34ff309f3..1ed48979d 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProvider_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/ItemProvider_.java
@@ -1,7 +1,16 @@
package org.eclipse.emf.codegen.ecore.templates.edit;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPropertyKind;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimeVersion;
public class ItemProvider_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/PluginProperties_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/PluginProperties_.java
index 3c2a63f9d..09ebd3ff5 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/PluginProperties_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/edit/PluginProperties_.java
@@ -1,7 +1,15 @@
package org.eclipse.emf.codegen.ecore.templates.edit;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnumLiteral;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
public class PluginProperties_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ActionBarContributor_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ActionBarContributor_.java
index cfcf8153d..a7df5185d 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ActionBarContributor_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ActionBarContributor_.java
@@ -1,6 +1,9 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
public class ActionBarContributor_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Editor_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Editor_.java
index a22fe8495..bee58d793 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Editor_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Editor_.java
@@ -1,7 +1,12 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimeVersion;
public class Editor_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ModelWizard_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ModelWizard_.java
index d1bd0b242..df8b41770 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ModelWizard_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/ModelWizard_.java
@@ -1,6 +1,9 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
public class ModelWizard_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PluginProperties_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PluginProperties_.java
index 95170e577..b43df4923 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PluginProperties_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PluginProperties_.java
@@ -1,7 +1,11 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
public class PluginProperties_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Plugin_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Plugin_.java
index 51a046468..aa084dfea 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Plugin_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/Plugin_.java
@@ -1,7 +1,10 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
public class Plugin_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditor.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditor.java
index 475a2bfff..2b266300d 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditor.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditor.java
@@ -1,7 +1,11 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenClass;
public class PropertyEditor
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapter.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapter.java
index 68d7309c8..0ca7fd755 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapter.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapter.java
@@ -1,7 +1,10 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenClass;
public class PropertyEditorAdapter
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapterFactory.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapterFactory.java
index d282a5a58..c48edffdf 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapterFactory.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyEditorAdapterFactory.java
@@ -1,7 +1,10 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenClass;
+import org.eclipse.stem.model.codegen.STEMGenPackage;
public class PropertyEditorAdapterFactory
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyStringProviderAdapterFactory.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyStringProviderAdapterFactory.java
index 551a2ceb1..14992ba94 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyStringProviderAdapterFactory.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/PropertyStringProviderAdapterFactory.java
@@ -1,7 +1,10 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenClass;
+import org.eclipse.stem.model.codegen.STEMGenPackage;
public class PropertyStringProviderAdapterFactory
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/RelativeValueProviderAdapterFactory.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/RelativeValueProviderAdapterFactory.java
index 26ba62832..d7535883a 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/RelativeValueProviderAdapterFactory.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/RelativeValueProviderAdapterFactory.java
@@ -1,7 +1,10 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenClass;
+import org.eclipse.stem.model.codegen.STEMGenPackage;
public class RelativeValueProviderAdapterFactory
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessages.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessages.java
index d64260811..c3e63d756 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessages.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessages.java
@@ -1,7 +1,8 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.stem.model.codegen.STEMGenPackage;
public class WizardMessages
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessagesProperties.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessagesProperties.java
index 1af9a36a0..0c8c013fc 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessagesProperties.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/editor/WizardMessagesProperties.java
@@ -1,7 +1,11 @@
package org.eclipse.emf.codegen.ecore.templates.editor;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.stem.model.codegen.STEMGenClass;
+import org.eclipse.stem.model.codegen.STEMGenFeature;
+import org.eclipse.stem.model.codegen.STEMGenPackage;
public class WizardMessagesProperties
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/AdapterFactoryClass_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/AdapterFactoryClass_.java
index dd4baf637..7eb7338f1 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/AdapterFactoryClass_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/AdapterFactoryClass_.java
@@ -1,7 +1,11 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
public class AdapterFactoryClass_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/Class_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/Class_.java
index cc14d0a2c..00b14e3cd 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/Class_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/Class_.java
@@ -1,9 +1,22 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import java.util.*;
-import org.eclipse.stem.model.codegen.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDelegationKind;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenOperation;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenParameter;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.stem.model.codegen.STEMGenClass;
public class Class_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/FactoryClass_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/FactoryClass_.java
index 415368509..e5ca3d5cf 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/FactoryClass_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/FactoryClass_.java
@@ -1,7 +1,15 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.Iterator;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimeVersion;
public class FactoryClass_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PackageClass_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PackageClass_.java
index c0b7354e1..92dc90a29 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PackageClass_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PackageClass_.java
@@ -1,10 +1,34 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import java.util.*;
-import org.eclipse.emf.ecore.*;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnumLiteral;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenOperation;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenParameter;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimePlatform;
+import org.eclipse.emf.codegen.ecore.genmodel.GenTypeParameter;
import org.eclipse.emf.codegen.ecore.genmodel.impl.Literals;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.ETypeParameter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
public class PackageClass_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PluginProperties_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PluginProperties_.java
index 7a03a8e81..5e06362c0 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PluginProperties_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/PluginProperties_.java
@@ -1,6 +1,8 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
public class PluginProperties_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/SwitchClass_.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/SwitchClass_.java
index af9485ea8..d97c6cdcc 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/SwitchClass_.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/emf/codegen/ecore/templates/model/SwitchClass_.java
@@ -1,7 +1,16 @@
package org.eclipse.emf.codegen.ecore.templates.model;
-import java.util.*;
-import org.eclipse.emf.codegen.ecore.genmodel.*;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
+import org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimeVersion;
+import org.eclipse.emf.codegen.ecore.genmodel.GenTypeParameter;
public class SwitchClass_
{
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/CodeGenConstants.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/CodeGenConstants.java
index bc7d7a645..315e0bf79 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/CodeGenConstants.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/CodeGenConstants.java
@@ -89,6 +89,9 @@ public interface CodeGenConstants {
public static final String GENERATOR_MARKER_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/generated";
public static final String GENERATOR_MARKER_ANNOTATION_VERSION_KEY = "version";
+ public static final String METAMODEL_URI_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/metamodel";
+
+
public static final String AUTHOR_DETAILS_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/author";
public static final String ADAPTERS_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/model/adapters";
@@ -99,6 +102,9 @@ public interface CodeGenConstants {
public static final String MESSAGES_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/modelparam/messages";
public static final String CONSTRAINT_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/modelparam/constraints";
+ public static final String TRANSITIONS_ANNOTATION_SOURCE = "http:///org/eclipse/stem/modelgen/model/transitions";
+
+
public static final String PROPERTY_EDITOR_CLASS_KEY = "propertyEditorClass";
public static final String PROPERTY_EDITOR_SUPER_CLASS_KEY = "propertyEditorSuperClass";
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/GeneratorUtils.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/GeneratorUtils.java
index 639a34723..e6d648de2 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/GeneratorUtils.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/GeneratorUtils.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.stem.model.codegen;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -18,16 +20,52 @@ import java.util.Map.Entry;
import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.stem.model.codegen.descriptor.EClassDescriptor;
import org.eclipse.stem.model.codegen.descriptor.JavaClassDescriptor;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Package;
/**
* Shared utilities for various common operations
* to assist with model generation
*
*/
-public class GeneratorUtils {
+public class GeneratorUtils
+{
+
+ public static Model getMetamodelModelForGenClass(GenClass genClass, Package metamodel)
+ {
+ for (Model model : metamodel.getModels()) {
+ if (genClass.getName().equals(model.getName())) {
+ return model;
+ }
+ }
+ return null;
+ }
+
+ public static Package loadMetamodel(URI uri) throws IOException {
+ if (uri != null) {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ Resource resource = resourceSet.createResource(uri);
+ resource.load(null);
+ if (resource.getContents().size() > 0) {
+ EObject obj = resource.getContents().get(0);
+ EcoreUtil.resolveAll(obj);
+
+ if (obj instanceof Package) {
+ return (Package) obj;
+ }
+ }
+ }
+ return null;
+ }
/**
* Converts a list of GenClasses to STEMGenClasses
@@ -489,4 +527,12 @@ public class GeneratorUtils {
}
return valid;
}
+
+ public static void safeClose(InputStream is) {
+ try {
+ is.close();
+ } catch (Throwable t) {
+ // do nothing
+ }
+ }
} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenClass.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenClass.java
index 16de961b3..f10007773 100755
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenClass.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenClass.java
@@ -11,8 +11,10 @@
package org.eclipse.stem.model.codegen;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
@@ -20,6 +22,11 @@ import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.stem.model.codegen.descriptor.ModelGeneratorDescriptor;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Package;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.stem.model.xtext.ExpressionMethodDefinition;
+import org.eclipse.stem.model.xtext.ExpressionMethodGenerator;
/**
* Wrapper for GenClass. Provides STEM-specific methods for STEM's Model
@@ -111,6 +118,28 @@ public class STEMGenClass {
}
return features;
}
+
+ public List<STEMGenFeature> getAllCompartmentFeatures() {
+ List<STEMGenFeature> features = new ArrayList<STEMGenFeature>();
+ if (isIntegrationLabelValue()) {
+ if (genClass.getBaseGenClass() != null) {
+ features.addAll(STEMGenClass.get(genClass.getBaseGenClass()).getAllCompartmentFeatures());
+ }
+ features.addAll(getSTEMGenFeatures());
+ }
+ return features;
+ }
+
+ public STEMGenFeature getSTEMGenFeatureForName(String name)
+ {
+ for (GenFeature genFeature : genClass.getDeclaredGenFeatures()) {
+ if (genFeature.getName().equals(name)) {
+ return STEMGenFeature.get(genFeature, genClass);
+ }
+ }
+ return null;
+ }
+
public List<String> getPrimitiveAccessorTypes() {
return STEMGenFeature.getPrimitiveAccessorTypes();
@@ -395,4 +424,55 @@ public class STEMGenClass {
{
return GeneratorUtils.formatToCapWords(genClass.getName());
}
+
+ public Model getMetamodelModel(Package metamodel)
+ {
+ if (isComputationalModel()) {
+ return GeneratorUtils.getMetamodelModelForGenClass(genClass, metamodel);
+ }
+ return null;
+ }
+
+ public List<ExpressionMethodDefinition> getGeneratedExpressionMethods()
+ {
+ Package metamodel = getSTEMGenPackage().getMetamodel();
+ ExpressionMethodGenerator gen = new ExpressionMethodGenerator(genClass);
+ List<ExpressionMethodDefinition> expressions = new ArrayList<ExpressionMethodDefinition>();
+
+
+ Model model = getMetamodelModel(metamodel);
+ if (model != null) {
+ for (Transition t : model.getTransitions()) {
+ ExpressionMethodDefinition expression = gen.generateExpressionMethod(t);
+ if (expression != null) {
+ expressions.add(expression);
+ }
+ }
+ }
+
+ return expressions;
+ }
+
+ public Set<String> getGeneratorAffectedCompartments(List<ExpressionMethodDefinition> transitionExpressions)
+ {
+//
+// Map<String,GenClass> labelValues = getLabelValueGenClasses();
+// if (labelValues.size() < 1) {
+// return compartments;
+// }
+//
+// STEMGenClass labelValue = STEMGenClass.get(labelValues.values().iterator().next());
+// for (STEMGenFeature feature : labelValue.getAllCompartmentFeatures()) {
+// System.out.println(feature.getGenFeature().getName());
+// }
+//
+ Set<String> compartments = new HashSet<String>();
+ for (ExpressionMethodDefinition expr : transitionExpressions) {
+ compartments.add(GeneratorUtils.formatToUpperCaseWordsNoSpaces(
+ expr.getTransition().getSource().getName()));
+ compartments.add(GeneratorUtils.formatToUpperCaseWordsNoSpaces(
+ expr.getTransition().getTarget().getName()));
+ }
+ return compartments;
+ }
}
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenModel.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenModel.java
index e44c1d055..61cec63df 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenModel.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenModel.java
@@ -10,10 +10,15 @@
*******************************************************************************/
package org.eclipse.stem.model.codegen;
-import java.util.List;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EPackage;
/**
* Wrapper for GenModel. Provides STEM-specific methods for STEM's Model
@@ -31,8 +36,8 @@ public class STEMGenModel {
return new STEMGenModel(model);
}
- public List<String> getEditorRequiredPlugins() {
- List<String> retVal = genModel.getEditorRequiredPlugins();
+ public Set<String> getEditorRequiredPlugins() {
+ Set<String> retVal = new HashSet<String>(genModel.getEditorRequiredPlugins());
for (GenPackage genPackage : genModel.getUsedGenPackages()) {
GenModel genModel = genPackage.getGenModel();
@@ -40,8 +45,34 @@ public class STEMGenModel {
retVal.add(genModel.getEditorPluginID());
}
}
+
+
+ for (GenPackage pkg : genModel.getGenPackages()) {
+ retVal.addAll(STEMGenPackage.get(pkg).getContributingPlugins());
+ }
+
return retVal;
}
+
+ public org.eclipse.stem.model.metamodel.Package getMetamodel()
+ {
+ // get metamodel
+
+ EPackage ePackage = genModel.getEcoreGenPackage().getEcorePackage();
+
+ EAnnotation annotation = ePackage.getEAnnotation(CodeGenConstants.METAMODEL_URI_ANNOTATION_SOURCE);
+
+ if (annotation != null) {
+ String uri = annotation.getDetails().get("uri");
+ try {
+ return GeneratorUtils.loadMetamodel(URI.createURI(uri));
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
+
+ return null;
+ }
}
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenPackage.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenPackage.java
index 927fde5b6..09d7c2d08 100644
--- a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenPackage.java
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/codegen/STEMGenPackage.java
@@ -10,12 +10,18 @@
*******************************************************************************/
package org.eclipse.stem.model.codegen;
+import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EPackage;
import org.eclipse.stem.model.codegen.descriptor.ModelGeneratorDescriptor;
+import org.eclipse.stem.model.xtext.XtextUtils;
/**
* Wrapper for GenPackage. Provides STEM-specific methods for STEM's Model
@@ -201,6 +207,31 @@ public class STEMGenPackage {
}
return types;
}
+
+ public org.eclipse.stem.model.metamodel.Package getMetamodel()
+ {
+ // get metamodel
+
+ EPackage ePackage = pkg.getEcorePackage();
+
+ EAnnotation annotation = ePackage.getEAnnotation(CodeGenConstants.METAMODEL_URI_ANNOTATION_SOURCE);
+
+ if (annotation != null) {
+ String uri = annotation.getDetails().get("uri");
+ try {
+ return GeneratorUtils.loadMetamodel(URI.createURI(uri));
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
+
+ return null;
+ }
+
+ public Set<String> getContributingPlugins()
+ {
+ return XtextUtils.getContributingPluginsForMetamodel(getMetamodel());
+ }
// public List<STEMGenClass> getClassesThatExtendByQualifiedName(String
// className)
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodDefinition.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodDefinition.java
new file mode 100644
index 000000000..cbe5e9d69
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodDefinition.java
@@ -0,0 +1,43 @@
+package org.eclipse.stem.model.xtext;
+
+import org.eclipse.stem.model.codegen.GeneratorUtils;
+import org.eclipse.stem.model.metamodel.Transition;
+
+public class ExpressionMethodDefinition
+{
+ private final Transition transition;
+ private final String methodBody;
+
+ public ExpressionMethodDefinition(Transition transition, String methodBody)
+ {
+ this.transition = transition;
+ this.methodBody = methodBody;
+ }
+
+ public Transition getTransition()
+ {
+ return transition;
+ }
+
+ public String getMethodBody()
+ {
+ return methodBody;
+ }
+
+ public String getMethodName()
+ {
+ return transition.getSource().getName() + "_" + transition.getTarget().getName();
+ }
+
+ public String getSourceAccessorName()
+ {
+ return GeneratorUtils.formatToUpperCaseWordsNoSpaces(transition.getSource().getName());
+ }
+
+ public String getTargetAccessorName()
+ {
+ return GeneratorUtils.formatToUpperCaseWordsNoSpaces(transition.getTarget().getName());
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodGenerator.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodGenerator.java
new file mode 100644
index 000000000..96838d156
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/ExpressionMethodGenerator.java
@@ -0,0 +1,60 @@
+package org.eclipse.stem.model.xtext;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.stem.model.ctdl.generator.CTDLGenerator;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.InMemoryFileSystemAccess;
+import org.eclipse.xtext.resource.XtextResource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class ExpressionMethodGenerator
+{
+ private Injector injector;
+
+ private IGenerator generator;
+
+ private GenClass genClass;
+
+ public ExpressionMethodGenerator(GenClass genClass)
+ {
+ this.genClass = genClass;
+ init();
+ }
+
+ private void init()
+ {
+ injector = Guice.createInjector(new org.eclipse.stem.model.ctdl.CTDLRuntimeModule());
+ generator = injector.getInstance(IGenerator.class);
+ }
+
+ private CTDLGenerator getExpressionMethodGenerator()
+ {
+ return (CTDLGenerator)generator;
+ }
+
+ public ExpressionMethodDefinition generateExpressionMethod(Transition transition)
+ {
+ XtextResource r = XtextUtils.loadAndResolveXtextResourceForTransition(transition);
+ InMemoryFileSystemAccess fsa = new InMemoryFileSystemAccess();
+
+ CTDLGenerator gen = getExpressionMethodGenerator();
+ gen.setGenModel(genClass.getGenModel());
+
+ try {
+ gen.doGenerate(r, fsa);
+ } catch (Throwable t0) {
+ t0.printStackTrace();
+ }
+
+ ExpressionMethodDefinition definition = null;
+ if (fsa.getFiles().size() > 0) {
+ String methodBody = fsa.getFiles().values().iterator().next().toString();
+ definition = new ExpressionMethodDefinition(transition, methodBody);
+ }
+
+ return definition;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/XtextUtils.java b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/XtextUtils.java
new file mode 100644
index 000000000..94c135292
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.codegen/src/org/eclipse/stem/model/xtext/XtextUtils.java
@@ -0,0 +1,111 @@
+package org.eclipse.stem.model.xtext;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.stem.model.codegen.GeneratorUtils;
+import org.eclipse.stem.model.ctdl.ContextSensitiveResourceWrapper;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.util.CancelIndicator;
+import org.eclipse.xtext.util.StringInputStream;
+
+public class XtextUtils
+{
+
+ public static Set<String> getContributingPluginsForMetamodel(org.eclipse.stem.model.metamodel.Package metamodel)
+ {
+ Set<String> plugins = new HashSet<String>();
+ for (Model model : metamodel.getModels()) {
+ List<XtextResource> resources = getXtextResourcesForModel(model);
+ for (XtextResource resource : resources) {
+ plugins.addAll(getContributingPluginsForExpression(resource));
+ }
+ }
+ return plugins;
+ }
+
+ public static Set<String> getContributingPluginsForExpression(XtextResource resource)
+ {
+ Set<String> plugins = new HashSet<String>();
+ TreeIterator<EObject> iter = resource.getAllContents();
+ while (iter.hasNext()) {
+ EObject obj = iter.next();
+ if (obj instanceof FunctionCall && ((FunctionCall) obj).getRef() instanceof ExternalFunctionReference) {
+ ExternalFunctionReference ref = (ExternalFunctionReference)((FunctionCall) obj).getRef();
+ if (ref.getFunc() != null) {
+ plugins.add(ref.getFunc().getContributingPlugin());
+ }
+ }
+ }
+
+ return plugins;
+ }
+
+ public static List<XtextResource> getXtextResourcesForModel(Model model)
+ {
+ List<XtextResource> resources = new ArrayList<XtextResource>(model.getTransitions().size());
+ for (Transition transition : model.getTransitions()) {
+ XtextResource resource = loadAndResolveXtextResourceForTransition(transition);
+ if (resource != null) {
+ resources.add(resource);
+ }
+ }
+ return resources;
+ }
+
+ public static XtextResource loadAndResolveXtextResourceForTransition(Transition transition)
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ XtextResource resource = (XtextResource) resourceSet.createResource(URI.createURI("empty.sctd"));
+ InputStream is = new StringInputStream(transition.getExpression());
+
+ try {
+ resource.load(is, Collections.emptyMap());
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ GeneratorUtils.safeClose(is);
+ }
+
+ if (resource instanceof ContextSensitiveResourceWrapper) {
+ ((ContextSensitiveResourceWrapper) resource).setTransition(transition);
+ }
+
+ EcoreUtil2.resolveLazyCrossReferences(resource, new CancelIndicator() {
+
+ @Override
+ public boolean isCanceled() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ });
+
+ if (resource.getContents().size() > 0 &&
+ resource.getContents().get(0) instanceof CompartmentTransitionDefinitions) {
+ CompartmentTransitionDefinitions ctd = (CompartmentTransitionDefinitions)resource.getContents().get(0);
+ MetamodelResource mmrs = CtdlFactory.eINSTANCE.createMetamodelResource();
+ mmrs.setTransition(transition);
+ mmrs.setModel(transition.getContainerModel());
+ ctd.setMetamodel(mmrs);
+ }
+ return resource;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.codegen/templates/editor/manifest.mfjet b/modelgen/org.eclipse.stem.model.codegen/templates/editor/manifest.mfjet
index 1c90f52be..6eac8e132 100644
--- a/modelgen/org.eclipse.stem.model.codegen/templates/editor/manifest.mfjet
+++ b/modelgen/org.eclipse.stem.model.codegen/templates/editor/manifest.mfjet
@@ -21,7 +21,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: <%=genModel.getEditorPluginID()%>;singleton:=true
Bundle-Version: 1.0.0.qualifier
-Bundle-ClassPath: <%if (genModel.isRuntimeJar()) {%><%=genModel.getEditorPluginID()%>.jar<%}else{%>.<%}%>
+Bundle-ClassPath: <%if (genModel.isRuntimeJar()) {%><%=genModel.getEditorPluginID()%>.jar<%}else{%>.,bin/<%}%>
<%if (genModel.getRuntimePlatform() != GenRuntimePlatform.GWT) {%>
Bundle-Activator: <%=genModel.getQualifiedEditorPluginClassName()%>$Implementation
<%}%>
diff --git a/modelgen/org.eclipse.stem.model.codegen/templates/model/Class.javajet b/modelgen/org.eclipse.stem.model.codegen/templates/model/Class.javajet
index 882657572..0e4162896 100644
--- a/modelgen/org.eclipse.stem.model.codegen/templates/model/Class.javajet
+++ b/modelgen/org.eclipse.stem.model.codegen/templates/model/Class.javajet
@@ -2376,12 +2376,15 @@ if (index != -1) { head = typeName.substring(0, index); tail = typeName.substrin
<% String defaultLabelImportedName = genModel.getImportedName(stemGenClass.getDefaultModelLabelType()); %>
<% String defaultLabelValueImportedName = genModel.getImportedName(stemGenClass.getDefaultModelLabelValueType()); %>
+
+<% List<org.eclipse.stem.model.xtext.ExpressionMethodDefinition> generatedExpressionMethods = stemGenClass.getGeneratedExpressionMethods(); %>
+<% Set<String> affectedCompartments = stemGenClass.getGeneratorAffectedCompartments(generatedExpressionMethods); %>
+
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- @SuppressWarnings("unused")
@Override
public void calculateDeltas(<%=stemTimeImportName%> time, double t, long timeDelta, <%=elistImportName%><<%=dynamicLabelImportName%>> labels)
{
@@ -2401,6 +2404,19 @@ if (index != -1) { head = typeName.substring(0, index); tail = typeName.substrin
// Add code here to compute and set the delta (in deltaValue) from the current state (in currentDiseaseState)
// ...
+ <% for (String compartment : affectedCompartments) { %>
+ double delta<%=compartment%> = 0.0;
+ <% } %>
+
+ <% for (org.eclipse.stem.model.xtext.ExpressionMethodDefinition block : generatedExpressionMethods) { %>
+ double generated_<%= block.getMethodName() %> = <%= block.getMethodName() %>(t,timeDelta,time,currentDiseaseState,diseaseLabel.getNode());
+ delta<%=block.getSourceAccessorName()%> -= generated_<%= block.getMethodName() %>;
+ delta<%=block.getTargetAccessorName()%> += generated_<%= block.getMethodName() %>;
+
+ <%}%>
+ <% for (String compartment : affectedCompartments) { %>
+ deltaValue.set<%=compartment%>(delta<%=compartment%>);
+ <% } %>
// If you need to take into account any interventions currently in place for the region, use this
// code snippet as a sample:
@@ -2413,11 +2429,24 @@ if (index != -1) { head = typeName.substring(0, index); tail = typeName.substrin
// DO NOT REMOVE THIS LINE. It's critical to ensure disease deaths are being reported to
// other models that depend on it.
+ deltaValue.scale(((double) timeDelta / (double) getTimePeriod()));
computeAdditionalDeltasAndExchanges(diseaseLabel, time, t, timeDelta);
}
} // calculateDeltas
+
+ // Generated expression methods
+
+ <% for (org.eclipse.stem.model.xtext.ExpressionMethodDefinition block : generatedExpressionMethods) { %>
+ /**
+ * Method body for <%=block.getTransition().getSource().getName()%> -> <%=block.getTransition().getTarget().getName()%>
+ * @generated
+ */
+ <%= block.getMethodBody() %>
+
+ <%}%>
+
<%}%>
<%// Set up disease-model specific code%>
<%if ("DiseaseModel".equals(stemGenClass.getComputationalModelType())){%>
diff --git a/modelgen/org.eclipse.stem.model.common/.classpath b/modelgen/org.eclipse.stem.model.common/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/modelgen/org.eclipse.stem.model.common/.project b/modelgen/org.eclipse.stem.model.common/.project
new file mode 100644
index 000000000..c701d8da9
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.stem.model.common</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/modelgen/org.eclipse.stem.model.common/.settings/org.eclipse.jdt.core.prefs b/modelgen/org.eclipse.stem.model.common/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/modelgen/org.eclipse.stem.model.common/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.common/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..4d94eb855
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: STEM Model Generator Common
+Bundle-SymbolicName: org.eclipse.stem.model.common;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-Activator: org.eclipse.stem.model.common.Activator
+Bundle-Vendor: Eclipse.org
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.stem.model.common
diff --git a/modelgen/org.eclipse.stem.model.common/build.properties b/modelgen/org.eclipse.stem.model.common/build.properties
new file mode 100644
index 000000000..e9863e281
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/modelgen/org.eclipse.stem.model.common/plugin.xml b/modelgen/org.eclipse.stem.model.common/plugin.xml
new file mode 100644
index 000000000..d97117ab1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/plugin.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+-->
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.stem.model.common.Starter">
+ </startup>
+ </extension>
+
+ <extension
+ id="ModelProjectNature"
+ name="STEM Computational Model Project Nature"
+ point="org.eclipse.core.resources.natures">
+ <runtime>
+ <run class="org.eclipse.stem.model.common.ModelProjectNature"/>
+ </runtime>
+ </extension>
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Activator.java b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Activator.java
new file mode 100644
index 000000000..f4960d503
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Activator.java
@@ -0,0 +1,54 @@
+package org.eclipse.stem.model.common;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+
+ private static BundleContext context;
+
+ private static Activator plugin;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ static Activator getPlugin()
+ {
+ return plugin;
+ }
+
+ /**
+ * Logs a status message to the plug-in's logger
+ * @param status status message to log
+ */
+ public static void log(IStatus status)
+ {
+ getPlugin().getLog().log(status);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.plugin = this;
+ Activator.context = bundleContext;
+
+ ModelProjectBundleLoadHandler.getInstance().start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+
+ ModelProjectBundleLoadHandler.getInstance().stop();
+
+ Activator.context = null;
+ Activator.plugin = null;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectBundleLoadHandler.java b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectBundleLoadHandler.java
new file mode 100644
index 000000000..69c0d5107
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectBundleLoadHandler.java
@@ -0,0 +1,280 @@
+package org.eclipse.stem.model.common;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+
+
+/**
+ * <p>Handles the automatic install/uninstall of workspace-based
+ * plug-in projects into the running OSGi container for use with the
+ * model generation tools.</p>
+ */
+final class ModelProjectBundleLoadHandler {
+
+ private static final ModelProjectBundleLoadHandler INSTANCE =
+ new ModelProjectBundleLoadHandler();
+
+ private final List<IProject> changedProjects =
+ Collections.synchronizedList(new ArrayList<IProject>());
+
+ private final List<IProject> managedBundleProjects = new CopyOnWriteArrayList<IProject>();
+
+ private BundleContext bundleContext;
+
+ private ModelProjectBundleLoadHandler() {
+ }
+
+ static ModelProjectBundleLoadHandler getInstance() {
+ return INSTANCE;
+ }
+
+ void start(BundleContext ctx) {
+ this.bundleContext = ctx;
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(
+ resourceListener,
+ IResourceChangeEvent.PRE_CLOSE
+ | IResourceChangeEvent.PRE_DELETE
+ | IResourceChangeEvent.POST_CHANGE
+ | IResourceChangeEvent.POST_BUILD
+ | IResourceChangeEvent.PRE_BUILD);
+ Job.getJobManager().addJobChangeListener(jobListener);
+ loadProjects();
+ }
+
+ void stop() {
+ Job.getJobManager().removeJobChangeListener(jobListener);
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener);
+ shutdownProjects();
+ this.bundleContext = null;
+ }
+
+ private void shutdownProjects()
+ {
+ for (IProject project : managedBundleProjects) {
+ if (ModelProjectUtils.isValidProject(project)) {
+ handleStopProject(project);
+ }
+ }
+ }
+
+ private void loadProjects() {
+ IWorkspace ws = ResourcesPlugin.getWorkspace();
+ for (IProject project : ws.getRoot().getProjects()) {
+ if (ModelProjectUtils.isValidProject(project)) {
+ handleUpdatedProject(project);
+ }
+ }
+ }
+
+
+
+ private void installAndStartProjectBundle(IProject project)
+ {
+ if (!ModelProjectUtils.isValidProject(project)) {
+ return;
+ }
+ // TODO This needs to differentiate between bundles installed
+ // into the container when launched and those being installed and/or updated
+ // by this utility into the running container
+ Bundle bundle = getBundleForProject(project);
+ if (bundle != null) {
+ // Bundle already exists, determine what we should do instead.
+ // For now, we'll just update
+ updateBundle(bundle);
+ } else {
+ System.out.println("Installing bundle for " + project.getFullPath().toString());
+ Bundle newBundle = null;
+ try {
+ newBundle = bundleContext.installBundle(project.getLocationURI().toString());
+ newBundle.start();
+ } catch (BundleException be) {
+ if (newBundle != null) {
+ stopAndUninstallBundle(newBundle);
+ }
+
+ Activator.log(new Status(Status.ERROR,
+ project.getName(),
+ "Error installing project bundle into OSGi container", be));
+ }
+ System.out.println(" ... bundle installed "
+ + project.getFullPath().toString());
+ managedBundleProjects.add(project);
+ }
+ }
+
+
+ private void updateBundle(Bundle bundle)
+ {
+ try {
+ System.out.println("Updating bundle for "
+ + bundle.getLocation());
+ bundle.update();
+ System.out.println(" ... bundle updated for "
+ + bundle.getLocation());
+ } catch (BundleException be) {
+ Activator.log(new Status(Status.ERROR,
+ bundle.getSymbolicName(),
+ "Error updating the installed bundle.", be));
+ }
+ }
+
+ private void stopAndUninstallBundle(final Bundle bundle)
+ {
+ try {
+ bundle.stop();
+ } catch (BundleException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ bundle.uninstall();
+ } catch (BundleException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void handleUpdatedProject(IProject project) {
+ if (!ModelProjectUtils.isValidProject(project)) {
+ return;
+ }
+
+ try {
+ int severity = project.findMaxProblemSeverity(IMarker.PROBLEM,
+ true, IResource.DEPTH_INFINITE);
+ if (severity >= IMarker.SEVERITY_ERROR) {
+ // Error building project. Should not take action to
+ // install or update when this occurs
+ Activator.log(
+ new Status(Status.WARNING, project.getName(),
+ "Error building project, cannot install", null));
+ } else {
+ installAndStartProjectBundle(project);
+ }
+ } catch (CoreException ce) {
+ ce.printStackTrace();
+ }
+
+ }
+
+ private void handleStopProject(IProject project) {
+ if (!ModelProjectUtils.isValidProject(project)) {
+ return;
+ }
+
+ // TODO This needs to differentiate between bundles installed
+ // into the container when launched and those being installed and/or updated
+ // by this utility into the running container
+ Bundle bundle = getBundleForProject(project);
+ if (bundle != null) {
+ managedBundleProjects.remove(project);
+ System.out.println("Uninstalling bundle for "
+ + project.getFullPath().toString());
+ stopAndUninstallBundle(bundle);
+ System.out.println(" ... bundle uninstalled for "
+ + project.getFullPath().toString());
+ }
+ }
+
+ private Bundle getBundleForProject(IProject project)
+ {
+ Bundle b = Platform.getBundle(project.getName());
+ if (b != null) {
+ System.out.println("Bundle location:"+ b.getLocation());
+ System.out.println("Project location:"+ project.getLocation().toString());
+ return b;
+ }
+ return null;
+ }
+
+ private final IResourceChangeListener resourceListener = new IResourceChangeListener() {
+
+ @Override
+ public void resourceChanged(final IResourceChangeEvent event) {
+
+ if ((event.getType() == IResourceChangeEvent.PRE_CLOSE
+ || event.getType() == IResourceChangeEvent.PRE_DELETE)
+ && event.getResource() instanceof IProject) {
+
+
+ handleStopProject((IProject) event.getResource());
+ } else if (event.getType() == IResourceChangeEvent.POST_CHANGE) {
+ try {
+ if (event.getDelta() != null) {
+ event.getDelta().accept(new IResourceDeltaVisitor() {
+
+ @Override
+ public boolean visit(IResourceDelta delta)
+ throws CoreException {
+ if (delta.getResource() instanceof IProject) {
+ IProject proj = (IProject) delta
+ .getResource();
+ synchronized (changedProjects) {
+ if (!changedProjects.contains(proj)) {
+ changedProjects.add(proj);
+ }
+ }
+ return false;
+ }
+
+ return true;
+ }
+ });
+ }
+ } catch (CoreException ce) {
+ ce.printStackTrace();
+ }
+ }
+
+ }
+
+ };
+
+ private final IJobChangeListener jobListener = new JobChangeAdapter() {
+
+ @Override
+ public void done(IJobChangeEvent event) {
+ Job job = event.getJob();
+ if (job.belongsTo(ResourcesPlugin.FAMILY_AUTO_BUILD)
+ || job.belongsTo(ResourcesPlugin.FAMILY_MANUAL_BUILD)) {
+ System.out.println("build completed...");
+ synchronized (changedProjects) {
+ for (IProject project : changedProjects) {
+ handleUpdatedProject(project);
+ }
+ changedProjects.clear();
+ }
+ }
+ }
+
+ };
+
+
+
+
+
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectNature.java b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectNature.java
new file mode 100644
index 000000000..5334b9283
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectNature.java
@@ -0,0 +1,46 @@
+package org.eclipse.stem.model.common;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectNature;
+import org.eclipse.core.runtime.CoreException;
+
+public class ModelProjectNature implements IProjectNature
+{
+ public static final String ID = "org.eclipse.stem.model.common.ModelProjectNature";
+
+ private IProject project;
+
+ @Override
+ public void configure() throws CoreException {
+ }
+
+ @Override
+ public void deconfigure() throws CoreException {
+ }
+
+ @Override
+ public IProject getProject() {
+ return project;
+ }
+
+ @Override
+ public void setProject(IProject project) {
+ this.project = project;
+ }
+
+ public static void addNature(final IProject project) throws CoreException
+ {
+ ModelProjectUtils.addProjectNature(project, ID);
+ }
+
+ public static void removeNature(final IProject project) throws CoreException
+ {
+ ModelProjectUtils.removeProjectNature(project, ID);
+ }
+
+ public static boolean hasNature(final IProject project) throws CoreException
+ {
+ return project.hasNature(ID);
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectUtils.java b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectUtils.java
new file mode 100644
index 000000000..ff4d0c30a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/ModelProjectUtils.java
@@ -0,0 +1,54 @@
+package org.eclipse.stem.model.common;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+public class ModelProjectUtils
+{
+ private ModelProjectUtils() {}
+
+ public static boolean isValidProject(final IProject project)
+ {
+ try {
+ return project.exists() && project.isOpen()
+ && project.hasNature("org.eclipse.pde.PluginNature")
+ && project.hasNature(ModelProjectNature.ID);
+ } catch (CoreException ce) {
+ // Ignore exception, does not matter for this context
+ }
+ return false;
+ }
+
+
+ public static void removeProjectNature(final IProject project, final String natureId) throws CoreException
+ {
+ if (project.exists() && project.hasNature(natureId)) {
+ IProjectDescription description = project.getDescription();
+
+ List<String> natures = new ArrayList<String>();
+ natures.addAll(Arrays.asList(description.getNatureIds()));
+ natures.remove(natureId);
+ description.setNatureIds(natures.toArray(new String[natures.size()]));
+ project.setDescription(description, new NullProgressMonitor());
+ }
+ }
+
+ public static void addProjectNature(final IProject project, final String natureId) throws CoreException
+ {
+ if (project.exists() && !project.hasNature(natureId)) {
+ IProjectDescription description = project.getDescription();
+
+ List<String> natures = new ArrayList<String>();
+ natures.addAll(Arrays.asList(description.getNatureIds()));
+ natures.add(natureId);
+ description.setNatureIds(natures.toArray(new String[natures.size()]));
+ project.setDescription(description, new NullProgressMonitor());
+ }
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Starter.java b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Starter.java
new file mode 100644
index 000000000..0239be53d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.common/src/org/eclipse/stem/model/common/Starter.java
@@ -0,0 +1,11 @@
+package org.eclipse.stem.model.common;
+
+import org.eclipse.ui.IStartup;
+
+public class Starter implements IStartup {
+
+ @Override
+ public void earlyStartup() {
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/.classpath b/modelgen/org.eclipse.stem.model.ctdl.functions/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/.project b/modelgen/org.eclipse.stem.model.ctdl.functions/.project
new file mode 100644
index 000000000..41bd23e47
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.stem.model.ctdl.functions</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/.settings/org.eclipse.jdt.core.prefs b/modelgen/org.eclipse.stem.model.ctdl.functions/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.ctdl.functions/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..d0bb3b35e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: STEM External Function Definition
+Bundle-SymbolicName: org.eclipse.stem.model.ctdl.functions;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-Activator: org.eclipse.stem.model.ctdl.functions.Activator
+Bundle-Vendor: Eclipse.org
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.stem.core
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.stem.model.ctdl.functions,
+ org.eclipse.stem.model.ctdl.functions.util
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/build.properties b/modelgen/org.eclipse.stem.model.ctdl.functions/build.properties
new file mode 100644
index 000000000..bc38bc0f0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ model/
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.ecore b/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.ecore
new file mode 100644
index 000000000..9c655713b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.ecore
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="functions" nsURI="http:///org/eclipse/stem/model/ctdl/functions.ecore"
+ nsPrefix="org.eclipse.stem.model.ctdl.functions">
+ <eClassifiers xsi:type="ecore:EClass" name="ExternalFunctionDefinition">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="class">
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//Method"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="returnType" changeable="false"
+ volatile="true" transient="true" derived="true">
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="className" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributingPlugin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extPointDefinition" eType="#//IConfigurationElement"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="functionArguments" upperBound="-1"
+ eType="#//FunctionArgument" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaMethodArguments" upperBound="-1"
+ eType="#//JavaMethodArgument" transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionArgument">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaMethodArgument">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mapsFrom" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IConfigurationElement" instanceClassName="org.eclipse.core.runtime.IConfigurationElement"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Method" instanceClassName="java.lang.reflect.Method"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SystemArgumentReference" eSuperTypes="#//JavaMethodArgument">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionArgumentReference" eSuperTypes="#//JavaMethodArgument">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="argIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="#//FunctionArgument"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel b/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel
new file mode 100644
index 000000000..ea74057ce
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.stem.model.ctdl.functions/src" editDirectory="/org.eclipse.stem.model.ctdl.functions/src"
+ editorDirectory="/org.eclipse.stem.model.ctdl.functions.ui/src" modelPluginID="org.eclipse.stem.model.ctdl.functions"
+ modelName="ExternalFunctions" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+ copyrightFields="false" editorPluginID="org.eclipse.stem.model.ctdl.functions.ui"
+ runtimeVersion="2.7">
+ <foreignModel>ExternalFunctions.ecore</foreignModel>
+ <genPackages prefix="ExternalFunctions" basePackage="org.eclipse.stem.model.ctdl"
+ disposableProviderFactory="true" fileExtensions="extFunc" ecorePackage="ExternalFunctions.ecore#/">
+ <genDataTypes ecoreDataType="ExternalFunctions.ecore#//IConfigurationElement"/>
+ <genDataTypes ecoreDataType="ExternalFunctions.ecore#//Method"/>
+ <genClasses ecoreClass="ExternalFunctions.ecore#//ExternalFunctionDefinition">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/class"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/method"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/returnType"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/signature"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/className"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/methodName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/contributingPlugin"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//ExternalFunctionDefinition/extPointDefinition"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ExternalFunctions.ecore#//ExternalFunctionDefinition/functionArguments"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ExternalFunctions.ecore#//ExternalFunctionDefinition/javaMethodArguments"/>
+ </genClasses>
+ <genClasses ecoreClass="ExternalFunctions.ecore#//FunctionArgument">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//FunctionArgument/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//FunctionArgument/type"/>
+ </genClasses>
+ <genClasses ecoreClass="ExternalFunctions.ecore#//JavaMethodArgument">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//JavaMethodArgument/mapsFrom"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//JavaMethodArgument/type"/>
+ </genClasses>
+ <genClasses ecoreClass="ExternalFunctions.ecore#//SystemArgumentReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ExternalFunctions.ecore#//SystemArgumentReference/ref"/>
+ </genClasses>
+ <genClasses ecoreClass="ExternalFunctions.ecore#//FunctionArgumentReference">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ExternalFunctions.ecore#//FunctionArgumentReference/argIndex"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ExternalFunctions.ecore#//FunctionArgumentReference/ref"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.properties b/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.properties
new file mode 100644
index 000000000..6caf32d1e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = ExternalFunctions Model
+providerName = www.example.org
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.xml b/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.xml
new file mode 100644
index 000000000..828e70ecd
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/plugin.xml
@@ -0,0 +1,703 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http:///org/eclipse/stem/model/ctdl/functions.ecore"
+ class="org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage"
+ genModel="model/ExternalFunctions.genmodel"/>
+ </extension>
+
+
+ <extension-point id="functions" name="STEM External Functions" schema="schema/functions.exsd"/>
+
+ <extension
+ point="org.eclipse.stem.model.ctdl.functions.functions">
+
+ <function
+ name="test1"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test1Method">
+ <functionParams/>
+ <generatedParams>
+ <generatedParam name="node" mapsFrom="node" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="test2"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test2Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="node" mapsFrom="node" />
+ </generatedParams>
+ </function>
+
+
+
+
+ <!--
+ public static double test1Method(Node n)
+ public static double test2Method(double x, Node n)
+ public static double test3Method(double x, STEMTime time, Node n)
+ public static double test4Method(STEMTime time, Node n, double x)
+ -->
+ <function
+ name="test3"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test3Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="time" mapsFrom="time" />
+ <generatedParam name="node" mapsFrom="node" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="test4"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test4Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="time" mapsFrom="time" />
+ <generatedParam name="node" mapsFrom="node" />
+ <generatedParam name="x" mapsFrom="x" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="test5"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test5Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="java.lang.String" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ <generatedParam mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="test6"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test6Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="java.lang.String" />
+ <functionParam name="z" type="boolean" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ <generatedParam mapsFrom="y" />
+ <generatedParam mapsFrom="z" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="test7"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="test7Method">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="one"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="one">
+ <functionParams/>
+ <generatedParams/>
+ </function>
+
+ <function
+ name="add"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="add">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="y" mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="subtract"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="subtract">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="y" mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="multiply"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="multiply">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="y" mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <function
+ name="divide"
+ className="org.eclipse.stem.model.ctdl.functions.TestFunctions"
+ methodName="divide">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam name="x" mapsFrom="x" />
+ <generatedParam name="y" mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.abs(double) -->
+ <function
+ name="abs"
+ className="java.lang.Math"
+ methodName="abs">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.acos(double) -->
+ <function
+ name="acos"
+ className="java.lang.Math"
+ methodName="acos">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.asin(double) -->
+ <function
+ name="asin"
+ className="java.lang.Math"
+ methodName="asin">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.atan(double) -->
+ <function
+ name="atan"
+ className="java.lang.Math"
+ methodName="atan">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.atan2(double,double) -->
+ <function
+ name="atan2"
+ className="java.lang.Math"
+ methodName="atan2">
+ <functionParams>
+ <functionParam name="y" type="double" />
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="y" />
+ <generatedParam mapsFrom="x" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.cbrt(double) -->
+ <function
+ name="cbrt"
+ className="java.lang.Math"
+ methodName="cbrt">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.ceil(double) -->
+ <function
+ name="ceil"
+ className="java.lang.Math"
+ methodName="ceil">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.copySign(double,double) -->
+ <function
+ name="copySign"
+ className="java.lang.Math"
+ methodName="copySign">
+ <functionParams>
+ <functionParam name="magnitude" type="double" />
+ <functionParam name="sign" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="magnitude" />
+ <generatedParam mapsFrom="sign" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.cos(double) -->
+ <function
+ name="cos"
+ className="java.lang.Math"
+ methodName="cos">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.cosh(double) -->
+ <function
+ name="cosh"
+ className="java.lang.Math"
+ methodName="cosh">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.exp(double) -->
+ <function
+ name="exp"
+ className="java.lang.Math"
+ methodName="exp">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.expm1(double) -->
+ <function
+ name="expm1"
+ className="java.lang.Math"
+ methodName="expm1">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.floor(double) -->
+ <function
+ name="floor"
+ className="java.lang.Math"
+ methodName="floor">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.getExponent(double) -->
+ <function
+ name="getExponent"
+ className="java.lang.Math"
+ methodName="getExponent">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.hypot(double,double) -->
+ <function
+ name="hypot"
+ className="java.lang.Math"
+ methodName="hypot">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="y" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ <generatedParam mapsFrom="y" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.log(double) -->
+ <function
+ name="log"
+ className="java.lang.Math"
+ methodName="log">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.log10(double) -->
+ <function
+ name="log10"
+ className="java.lang.Math"
+ methodName="log10">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.log1p(double) -->
+ <function
+ name="log1p"
+ className="java.lang.Math"
+ methodName="log1p">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.max(double,double) -->
+ <function
+ name="max"
+ className="java.lang.Math"
+ methodName="max">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ <functionParam name="b" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ <generatedParam mapsFrom="b" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.min(double,double) -->
+ <function
+ name="min"
+ className="java.lang.Math"
+ methodName="min">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ <functionParam name="b" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ <generatedParam mapsFrom="b" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.nextAfter(double,double) -->
+ <function
+ name="nextAfter"
+ className="java.lang.Math"
+ methodName="nextAfter">
+ <functionParams>
+ <functionParam name="start" type="double" />
+ <functionParam name="direction" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="start" />
+ <generatedParam mapsFrom="direction" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.nextUp(double) -->
+ <function
+ name="nextUp"
+ className="java.lang.Math"
+ methodName="nextUp">
+ <functionParams>
+ <functionParam name="d" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="d" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.pow(double,double) -->
+ <function
+ name="pow"
+ className="java.lang.Math"
+ methodName="pow">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ <functionParam name="b" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ <generatedParam mapsFrom="b" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.random() -->
+ <function
+ name="random"
+ className="java.lang.Math"
+ methodName="random">
+ <functionParams/>
+ <generatedParams/>
+ </function>
+
+ <!-- java.lang.Math.rint(double) -->
+ <function
+ name="rint"
+ className="java.lang.Math"
+ methodName="rint">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.round(double) -->
+ <function
+ name="round"
+ className="java.lang.Math"
+ methodName="round">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.scalb(double,int) -->
+ <function
+ name="scalb"
+ className="java.lang.Math"
+ methodName="scalb">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ <functionParam name="scaleFactor" type="int" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ <generatedParam mapsFrom="scaleFactor" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.signum(double) -->
+ <function
+ name="signum"
+ className="java.lang.Math"
+ methodName="signum">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.sin(double) -->
+ <function
+ name="sin"
+ className="java.lang.Math"
+ methodName="sin">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.sinh(double) -->
+ <function
+ name="sinh"
+ className="java.lang.Math"
+ methodName="sinh">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.sqrt(double) -->
+ <function
+ name="sqrt"
+ className="java.lang.Math"
+ methodName="sqrt">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.tan(double) -->
+ <function
+ name="tan"
+ className="java.lang.Math"
+ methodName="tan">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.tanh(double) -->
+ <function
+ name="tanh"
+ className="java.lang.Math"
+ methodName="tanh">
+ <functionParams>
+ <functionParam name="x" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="x" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.degrees(double) -->
+ <function
+ name="degrees"
+ className="java.lang.Math"
+ methodName="toDegrees">
+ <functionParams>
+ <functionParam name="radians" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="radians" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.radians(double) -->
+ <function
+ name="radians"
+ className="java.lang.Math"
+ methodName="toRadians">
+ <functionParams>
+ <functionParam name="degrees" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="degrees" />
+ </generatedParams>
+ </function>
+
+ <!-- java.lang.Math.ulp(double) -->
+ <function
+ name="ulp"
+ className="java.lang.Math"
+ methodName="ulp">
+ <functionParams>
+ <functionParam name="a" type="double" />
+ </functionParams>
+ <generatedParams>
+ <generatedParam mapsFrom="a" />
+ </generatedParams>
+ </function>
+
+<!--
+acos(double)
+asin(double)
+atan(double)
+atan2(double, double)
+cbrt(double)
+ceil(double)
+copySign(double, double)
+cos(double)
+cosh(double)
+exp(double)
+expm1(double)
+floor(double)
+getExponent(double)
+hypot(double, double)
+log(double)
+log10(double)
+log1p(double)
+max(double, double)
+min(double, double)
+nextAfter(double, double)
+nextUp(double)
+pow(double, double)
+random()
+rint(double)
+round(double)
+scalb(double, int)
+signum(double)
+sin(double)
+sinh(double)
+sqrt(double)
+tan(double)
+tanh(double)
+toDegrees(double)
+toRadians(double)
+ulp(double)
+-->
+
+ </extension>
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/schema/functions.exsd b/modelgen/org.eclipse.stem.model.ctdl.functions/schema/functions.exsd
new file mode 100644
index 000000000..1d8d0af81
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/schema/functions.exsd
@@ -0,0 +1,174 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.stem.model.ctdl.functions" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.stem.model.ctdl.functions" id="functions" name="STEM External Functions"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="function"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="function">
+ <complexType>
+ <sequence>
+ <element ref="functionParams"/>
+ <element ref="generatedParams"/>
+ </sequence>
+ <attribute name="className" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="methodName" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="functionParams">
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="functionParam"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="generatedParams">
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="generatedParam"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="functionParam">
+ <complexType>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="type" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="generatedParam">
+ <complexType>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="mapsFrom" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/Activator.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/Activator.java
new file mode 100644
index 000000000..03d0bc54a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/Activator.java
@@ -0,0 +1,30 @@
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionDefinition.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionDefinition.java
new file mode 100644
index 000000000..e175c1c02
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionDefinition.java
@@ -0,0 +1,272 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import java.lang.reflect.Method;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>External Function Definition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClass_ <em>Class</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethod <em>Method</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getReturnType <em>Return Type</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getSignature <em>Signature</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClassName <em>Class Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethodName <em>Method Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getContributingPlugin <em>Contributing Plugin</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getExtPointDefinition <em>Ext Point Definition</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getFunctionArguments <em>Function Arguments</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getJavaMethodArguments <em>Java Method Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition()
+ * @model
+ * @generated
+ */
+public interface ExternalFunctionDefinition extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Class</em>' attribute.
+ * @see #setClass(Class)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_Class()
+ * @model
+ * @generated
+ */
+ Class<?> getClass_();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClass_ <em>Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Class</em>' attribute.
+ * @see #getClass_()
+ * @generated
+ */
+ void setClass(Class<?> value);
+
+ /**
+ * Returns the value of the '<em><b>Method</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Method</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Method</em>' attribute.
+ * @see #setMethod(Method)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_Method()
+ * @model dataType="org.eclipse.stem.model.ctdl.functions.Method" transient="true"
+ * @generated
+ */
+ Method getMethod();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethod <em>Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Method</em>' attribute.
+ * @see #getMethod()
+ * @generated
+ */
+ void setMethod(Method value);
+
+ /**
+ * Returns the value of the '<em><b>Return Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Return Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Return Type</em>' attribute.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_ReturnType()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ Class<?> getReturnType();
+
+ /**
+ * Returns the value of the '<em><b>Signature</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Signature</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Signature</em>' attribute.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_Signature()
+ * @model transient="true" changeable="false" derived="true"
+ * @generated
+ */
+ String getSignature();
+
+ /**
+ * Returns the value of the '<em><b>Class Name</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Class Name</em>' attribute.
+ * @see #setClassName(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_ClassName()
+ * @model default=""
+ * @generated
+ */
+ String getClassName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClassName <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Class Name</em>' attribute.
+ * @see #getClassName()
+ * @generated
+ */
+ void setClassName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Method Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Method Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Method Name</em>' attribute.
+ * @see #setMethodName(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_MethodName()
+ * @model
+ * @generated
+ */
+ String getMethodName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethodName <em>Method Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Method Name</em>' attribute.
+ * @see #getMethodName()
+ * @generated
+ */
+ void setMethodName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Contributing Plugin</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Contributing Plugin</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Contributing Plugin</em>' attribute.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_ContributingPlugin()
+ * @model transient="true" changeable="false" derived="true"
+ * @generated
+ */
+ String getContributingPlugin();
+
+ /**
+ * Returns the value of the '<em><b>Ext Point Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ext Point Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ext Point Definition</em>' attribute.
+ * @see #setExtPointDefinition(IConfigurationElement)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_ExtPointDefinition()
+ * @model dataType="org.eclipse.stem.model.ctdl.functions.IConfigurationElement" transient="true"
+ * @generated
+ */
+ IConfigurationElement getExtPointDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getExtPointDefinition <em>Ext Point Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ext Point Definition</em>' attribute.
+ * @see #getExtPointDefinition()
+ * @generated
+ */
+ void setExtPointDefinition(IConfigurationElement value);
+
+ /**
+ * Returns the value of the '<em><b>Function Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.model.ctdl.functions.FunctionArgument}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Function Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Function Arguments</em>' containment reference list.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_FunctionArguments()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<FunctionArgument> getFunctionArguments();
+
+ /**
+ * Returns the value of the '<em><b>Java Method Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Method Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Java Method Arguments</em>' containment reference list.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getExternalFunctionDefinition_JavaMethodArguments()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<JavaMethodArgument> getJavaMethodArguments();
+
+} // ExternalFunctionDefinition
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsFactory.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsFactory.java
new file mode 100644
index 000000000..aa4c02001
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsFactory.java
@@ -0,0 +1,78 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage
+ * @generated
+ */
+public interface ExternalFunctionsFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExternalFunctionsFactory eINSTANCE = org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>External Function Definition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>External Function Definition</em>'.
+ * @generated
+ */
+ ExternalFunctionDefinition createExternalFunctionDefinition();
+
+ /**
+ * Returns a new object of class '<em>Function Argument</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Function Argument</em>'.
+ * @generated
+ */
+ FunctionArgument createFunctionArgument();
+
+ /**
+ * Returns a new object of class '<em>Java Method Argument</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Java Method Argument</em>'.
+ * @generated
+ */
+ JavaMethodArgument createJavaMethodArgument();
+
+ /**
+ * Returns a new object of class '<em>System Argument Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>System Argument Reference</em>'.
+ * @generated
+ */
+ SystemArgumentReference createSystemArgumentReference();
+
+ /**
+ * Returns a new object of class '<em>Function Argument Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Function Argument Reference</em>'.
+ * @generated
+ */
+ FunctionArgumentReference createFunctionArgumentReference();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ExternalFunctionsPackage getExternalFunctionsPackage();
+
+} //ExternalFunctionsFactory
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsPackage.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsPackage.java
new file mode 100644
index 000000000..0759531b8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/ExternalFunctionsPackage.java
@@ -0,0 +1,881 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ExternalFunctionsPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "functions";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/model/ctdl/functions.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.model.ctdl.functions";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExternalFunctionsPackage eINSTANCE = org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl <em>External Function Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getExternalFunctionDefinition()
+ * @generated
+ */
+ int EXTERNAL_FUNCTION_DEFINITION = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__CLASS = 1;
+
+ /**
+ * The feature id for the '<em><b>Method</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__METHOD = 2;
+
+ /**
+ * The feature id for the '<em><b>Return Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__RETURN_TYPE = 3;
+
+ /**
+ * The feature id for the '<em><b>Signature</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__SIGNATURE = 4;
+
+ /**
+ * The feature id for the '<em><b>Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME = 5;
+
+ /**
+ * The feature id for the '<em><b>Method Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME = 6;
+
+ /**
+ * The feature id for the '<em><b>Contributing Plugin</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__CONTRIBUTING_PLUGIN = 7;
+
+ /**
+ * The feature id for the '<em><b>Ext Point Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION = 8;
+
+ /**
+ * The feature id for the '<em><b>Function Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS = 9;
+
+ /**
+ * The feature id for the '<em><b>Java Method Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS = 10;
+
+ /**
+ * The number of structural features of the '<em>External Function Definition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_DEFINITION_FEATURE_COUNT = 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl <em>Function Argument</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getFunctionArgument()
+ * @generated
+ */
+ int FUNCTION_ARGUMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Function Argument</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl <em>Java Method Argument</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getJavaMethodArgument()
+ * @generated
+ */
+ int JAVA_METHOD_ARGUMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Maps From</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_METHOD_ARGUMENT__MAPS_FROM = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_METHOD_ARGUMENT__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Java Method Argument</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_METHOD_ARGUMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.functions.impl.SystemArgumentReferenceImpl <em>System Argument Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.SystemArgumentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getSystemArgumentReference()
+ * @generated
+ */
+ int SYSTEM_ARGUMENT_REFERENCE = 3;
+
+ /**
+ * The feature id for the '<em><b>Maps From</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_ARGUMENT_REFERENCE__MAPS_FROM = JAVA_METHOD_ARGUMENT__MAPS_FROM;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_ARGUMENT_REFERENCE__TYPE = JAVA_METHOD_ARGUMENT__TYPE;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_ARGUMENT_REFERENCE__REF = JAVA_METHOD_ARGUMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>System Argument Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_ARGUMENT_REFERENCE_FEATURE_COUNT = JAVA_METHOD_ARGUMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl <em>Function Argument Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getFunctionArgumentReference()
+ * @generated
+ */
+ int FUNCTION_ARGUMENT_REFERENCE = 4;
+
+ /**
+ * The feature id for the '<em><b>Maps From</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_REFERENCE__MAPS_FROM = JAVA_METHOD_ARGUMENT__MAPS_FROM;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_REFERENCE__TYPE = JAVA_METHOD_ARGUMENT__TYPE;
+
+ /**
+ * The feature id for the '<em><b>Arg Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX = JAVA_METHOD_ARGUMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_REFERENCE__REF = JAVA_METHOD_ARGUMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Function Argument Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_ARGUMENT_REFERENCE_FEATURE_COUNT = JAVA_METHOD_ARGUMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '<em>IConfiguration Element</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.core.runtime.IConfigurationElement
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getIConfigurationElement()
+ * @generated
+ */
+ int ICONFIGURATION_ELEMENT = 5;
+
+ /**
+ * The meta object id for the '<em>Method</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.reflect.Method
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getMethod()
+ * @generated
+ */
+ int METHOD = 6;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition <em>External Function Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>External Function Definition</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition
+ * @generated
+ */
+ EClass getExternalFunctionDefinition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getName()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClass_ <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Class</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClass_()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_Class();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethod <em>Method</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Method</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethod()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_Method();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getReturnType <em>Return Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Return Type</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getReturnType()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_ReturnType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getSignature <em>Signature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Signature</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getSignature()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_Signature();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClassName <em>Class Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Class Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getClassName()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_ClassName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethodName <em>Method Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Method Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getMethodName()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_MethodName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getContributingPlugin <em>Contributing Plugin</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Contributing Plugin</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getContributingPlugin()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_ContributingPlugin();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getExtPointDefinition <em>Ext Point Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Ext Point Definition</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getExtPointDefinition()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EAttribute getExternalFunctionDefinition_ExtPointDefinition();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getFunctionArguments <em>Function Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Function Arguments</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getFunctionArguments()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EReference getExternalFunctionDefinition_FunctionArguments();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getJavaMethodArguments <em>Java Method Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Java Method Arguments</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition#getJavaMethodArguments()
+ * @see #getExternalFunctionDefinition()
+ * @generated
+ */
+ EReference getExternalFunctionDefinition_JavaMethodArguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument <em>Function Argument</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Function Argument</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgument
+ * @generated
+ */
+ EClass getFunctionArgument();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgument#getName()
+ * @see #getFunctionArgument()
+ * @generated
+ */
+ EAttribute getFunctionArgument_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgument#getType()
+ * @see #getFunctionArgument()
+ * @generated
+ */
+ EAttribute getFunctionArgument_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument <em>Java Method Argument</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Method Argument</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.JavaMethodArgument
+ * @generated
+ */
+ EClass getJavaMethodArgument();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getMapsFrom <em>Maps From</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Maps From</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getMapsFrom()
+ * @see #getJavaMethodArgument()
+ * @generated
+ */
+ EAttribute getJavaMethodArgument_MapsFrom();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getType()
+ * @see #getJavaMethodArgument()
+ * @generated
+ */
+ EAttribute getJavaMethodArgument_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.functions.SystemArgumentReference <em>System Argument Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>System Argument Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.SystemArgumentReference
+ * @generated
+ */
+ EClass getSystemArgumentReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.functions.SystemArgumentReference#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.SystemArgumentReference#getRef()
+ * @see #getSystemArgumentReference()
+ * @generated
+ */
+ EReference getSystemArgumentReference_Ref();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference <em>Function Argument Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Function Argument Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference
+ * @generated
+ */
+ EClass getFunctionArgumentReference();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getArgIndex <em>Arg Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Arg Index</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getArgIndex()
+ * @see #getFunctionArgumentReference()
+ * @generated
+ */
+ EAttribute getFunctionArgumentReference_ArgIndex();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getRef()
+ * @see #getFunctionArgumentReference()
+ * @generated
+ */
+ EReference getFunctionArgumentReference_Ref();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.core.runtime.IConfigurationElement <em>IConfiguration Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>IConfiguration Element</em>'.
+ * @see org.eclipse.core.runtime.IConfigurationElement
+ * @model instanceClass="org.eclipse.core.runtime.IConfigurationElement" serializeable="false"
+ * @generated
+ */
+ EDataType getIConfigurationElement();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.reflect.Method <em>Method</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Method</em>'.
+ * @see java.lang.reflect.Method
+ * @model instanceClass="java.lang.reflect.Method" serializeable="false"
+ * @generated
+ */
+ EDataType getMethod();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ExternalFunctionsFactory getExternalFunctionsFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl <em>External Function Definition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getExternalFunctionDefinition()
+ * @generated
+ */
+ EClass EXTERNAL_FUNCTION_DEFINITION = eINSTANCE.getExternalFunctionDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__NAME = eINSTANCE.getExternalFunctionDefinition_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__CLASS = eINSTANCE.getExternalFunctionDefinition_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Method</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__METHOD = eINSTANCE.getExternalFunctionDefinition_Method();
+
+ /**
+ * The meta object literal for the '<em><b>Return Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__RETURN_TYPE = eINSTANCE.getExternalFunctionDefinition_ReturnType();
+
+ /**
+ * The meta object literal for the '<em><b>Signature</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__SIGNATURE = eINSTANCE.getExternalFunctionDefinition_Signature();
+
+ /**
+ * The meta object literal for the '<em><b>Class Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME = eINSTANCE.getExternalFunctionDefinition_ClassName();
+
+ /**
+ * The meta object literal for the '<em><b>Method Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME = eINSTANCE.getExternalFunctionDefinition_MethodName();
+
+ /**
+ * The meta object literal for the '<em><b>Contributing Plugin</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__CONTRIBUTING_PLUGIN = eINSTANCE.getExternalFunctionDefinition_ContributingPlugin();
+
+ /**
+ * The meta object literal for the '<em><b>Ext Point Definition</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION = eINSTANCE.getExternalFunctionDefinition_ExtPointDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Function Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS = eINSTANCE.getExternalFunctionDefinition_FunctionArguments();
+
+ /**
+ * The meta object literal for the '<em><b>Java Method Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS = eINSTANCE.getExternalFunctionDefinition_JavaMethodArguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl <em>Function Argument</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getFunctionArgument()
+ * @generated
+ */
+ EClass FUNCTION_ARGUMENT = eINSTANCE.getFunctionArgument();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FUNCTION_ARGUMENT__NAME = eINSTANCE.getFunctionArgument_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FUNCTION_ARGUMENT__TYPE = eINSTANCE.getFunctionArgument_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl <em>Java Method Argument</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getJavaMethodArgument()
+ * @generated
+ */
+ EClass JAVA_METHOD_ARGUMENT = eINSTANCE.getJavaMethodArgument();
+
+ /**
+ * The meta object literal for the '<em><b>Maps From</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute JAVA_METHOD_ARGUMENT__MAPS_FROM = eINSTANCE.getJavaMethodArgument_MapsFrom();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute JAVA_METHOD_ARGUMENT__TYPE = eINSTANCE.getJavaMethodArgument_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.functions.impl.SystemArgumentReferenceImpl <em>System Argument Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.SystemArgumentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getSystemArgumentReference()
+ * @generated
+ */
+ EClass SYSTEM_ARGUMENT_REFERENCE = eINSTANCE.getSystemArgumentReference();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SYSTEM_ARGUMENT_REFERENCE__REF = eINSTANCE.getSystemArgumentReference_Ref();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl <em>Function Argument Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getFunctionArgumentReference()
+ * @generated
+ */
+ EClass FUNCTION_ARGUMENT_REFERENCE = eINSTANCE.getFunctionArgumentReference();
+
+ /**
+ * The meta object literal for the '<em><b>Arg Index</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX = eINSTANCE.getFunctionArgumentReference_ArgIndex();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FUNCTION_ARGUMENT_REFERENCE__REF = eINSTANCE.getFunctionArgumentReference_Ref();
+
+ /**
+ * The meta object literal for the '<em>IConfiguration Element</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.core.runtime.IConfigurationElement
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getIConfigurationElement()
+ * @generated
+ */
+ EDataType ICONFIGURATION_ELEMENT = eINSTANCE.getIConfigurationElement();
+
+ /**
+ * The meta object literal for the '<em>Method</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.reflect.Method
+ * @see org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionsPackageImpl#getMethod()
+ * @generated
+ */
+ EDataType METHOD = eINSTANCE.getMethod();
+
+ }
+
+} //ExternalFunctionsPackage
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgument.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgument.java
new file mode 100644
index 000000000..8e128d0fb
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgument.java
@@ -0,0 +1,77 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Argument</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgument()
+ * @model
+ * @generated
+ */
+public interface FunctionArgument extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgument_Name()
+ * @model transient="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see #setType(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgument_Type()
+ * @model transient="true"
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see #getType()
+ * @generated
+ */
+ void setType(String value);
+
+} // FunctionArgument
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgumentReference.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgumentReference.java
new file mode 100644
index 000000000..eea9263c3
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionArgumentReference.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Argument Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getArgIndex <em>Arg Index</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgumentReference()
+ * @model
+ * @generated
+ */
+public interface FunctionArgumentReference extends JavaMethodArgument {
+ /**
+ * Returns the value of the '<em><b>Arg Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arg Index</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arg Index</em>' attribute.
+ * @see #setArgIndex(int)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgumentReference_ArgIndex()
+ * @model
+ * @generated
+ */
+ int getArgIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getArgIndex <em>Arg Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Arg Index</em>' attribute.
+ * @see #getArgIndex()
+ * @generated
+ */
+ void setArgIndex(int value);
+
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(FunctionArgument)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getFunctionArgumentReference_Ref()
+ * @model
+ * @generated
+ */
+ FunctionArgument getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(FunctionArgument value);
+
+} // FunctionArgumentReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionException.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionException.java
new file mode 100644
index 000000000..795321091
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionException.java
@@ -0,0 +1,38 @@
+package org.eclipse.stem.model.ctdl.functions;
+
+public class FunctionDefinitionException extends Exception
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private ExternalFunctionDefinition fd;
+
+ public FunctionDefinitionException(String message)
+ {
+ this(message,null,null);
+ }
+
+ public FunctionDefinitionException(String message, Throwable parent)
+ {
+ this(message, null, parent);
+ }
+
+ public FunctionDefinitionException(String message, ExternalFunctionDefinition fd)
+ {
+ this(message,fd,null);
+ }
+
+ public FunctionDefinitionException(String message, ExternalFunctionDefinition fd, Throwable parent)
+ {
+ super(message, parent);
+ this.fd = fd;
+ }
+
+ public ExternalFunctionDefinition getFunctionDefinition()
+ {
+ return fd;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionLoader.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionLoader.java
new file mode 100644
index 000000000..a71f6262e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/FunctionDefinitionLoader.java
@@ -0,0 +1,232 @@
+package org.eclipse.stem.model.ctdl.functions;
+
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+public class FunctionDefinitionLoader {
+ public static final String EXTENSION_POINT_NAME = "org.eclipse.stem.model.ctdl.functions.functions";
+ private static FunctionDefinitionLoader INSTANCE;
+
+ private List<ExternalFunctionDefinition> functionDefinitions = new ArrayList<ExternalFunctionDefinition>();
+ private ResourceSet resourceSet;
+ private Resource defaultResource;
+
+ private FunctionDefinitionLoader()
+ {
+ load();
+ }
+
+ public static synchronized FunctionDefinitionLoader getInstance()
+ {
+ if (INSTANCE == null) {
+ INSTANCE = new FunctionDefinitionLoader();
+ }
+ return INSTANCE;
+ }
+
+ public List<ExternalFunctionDefinition> getDefinitions()
+ {
+ return Collections.unmodifiableList(functionDefinitions);
+ }
+
+ private void load()
+ {
+ resourceSet = new ResourceSetImpl();
+ defaultResource = resourceSet.createResource(URI
+ .createURI("empty.extFunc"));
+
+ IConfigurationElement[] extensions = Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_NAME);
+
+ for (IConfigurationElement extension : extensions) {
+ ExternalFunctionDefinition functionDef = getDefinitionForExtension(extension);
+ if (functionDef != null) {
+ functionDefinitions.add(functionDef);
+ }
+ }
+ }
+
+ private ExternalFunctionDefinition getDefinitionForExtension(
+ IConfigurationElement functionDef)
+ {
+
+ ExternalFunctionDefinition functionDefinition = ExternalFunctionsFactory.eINSTANCE.createExternalFunctionDefinition();
+
+ functionDefinition.setName(functionDef.getAttribute("name"));
+ functionDefinition.setClassName(functionDef.getAttribute("className"));
+ functionDefinition.setMethodName(functionDef.getAttribute("methodName"));
+ functionDefinition.setExtPointDefinition(functionDef);
+
+ try {
+ populateFunctionArguments(functionDefinition);
+ populateMethodArguments(functionDefinition);
+ validateClassAndMethodSignature(functionDefinition);
+ } catch (FunctionDefinitionException fde) {
+ fde.printStackTrace();
+ return null;
+ }
+
+ defaultResource.getContents().add(functionDefinition);
+ return functionDefinition;
+
+ }
+
+ private void populateFunctionArguments(ExternalFunctionDefinition definition)
+ {
+ IConfigurationElement[] functionParamBlocks = definition.getExtPointDefinition()
+ .getChildren("functionParams");
+ if (functionParamBlocks.length > 0) {
+ IConfigurationElement[] args = functionParamBlocks[0]
+ .getChildren("functionParam");
+ for (IConfigurationElement arg : args) {
+ FunctionArgument fa = ExternalFunctionsFactory.eINSTANCE.createFunctionArgument();
+ fa.setName(arg.getAttribute("name"));
+ fa.setType(arg.getAttribute("type"));
+ definition.getFunctionArguments().add(fa);
+ }
+ }
+ }
+
+ private void populateMethodArguments(ExternalFunctionDefinition definition) throws FunctionDefinitionException
+ {
+ IConfigurationElement[] generatedParamBlocks = definition.getExtPointDefinition()
+ .getChildren("generatedParams");
+ if (generatedParamBlocks.length > 0) {
+ IConfigurationElement[] args = generatedParamBlocks[0]
+ .getChildren("generatedParam");
+ for (IConfigurationElement arg : args) {
+ String mapsFrom = arg.getAttribute("mapsFrom");
+
+ FunctionArgument fa = getParameterByName(mapsFrom, definition);
+
+ if (fa != null) {
+ FunctionArgumentReference ref = ExternalFunctionsFactory.eINSTANCE.createFunctionArgumentReference();
+ ref.setArgIndex(definition.getFunctionArguments().indexOf(fa));
+ ref.setRef(fa);
+ ref.setType(fa.getType());
+ definition.getJavaMethodArguments().add(ref);
+ } else {
+ Class<?> globalType = STEMDSLUtils.getGlobalSystemVariables().get(mapsFrom);
+ if (globalType == null) {
+ globalType = STEMDSLUtils.getGlobalUserVariables().get(mapsFrom);
+ }
+ if (globalType == null) {
+ throw new FunctionDefinitionException("Unable to find parameter mapping for method parameter key "+ mapsFrom, definition);
+ }
+
+ SystemArgumentReference ref = ExternalFunctionsFactory.eINSTANCE.createSystemArgumentReference();
+ ref.setMapsFrom(mapsFrom);
+ ref.setType(globalType.getName());
+ definition.getJavaMethodArguments().add(ref);
+ }
+ }
+ }
+ }
+
+ private void validateClassAndMethodSignature(
+ ExternalFunctionDefinition definition) throws FunctionDefinitionException
+ {
+
+ Throwable parent = null;
+ Class<?> functionClass = null;
+
+ // Attempt 1: Try to grab it by class name
+ try {
+ functionClass = Class.forName(definition.getClassName());
+ } catch (ClassNotFoundException e) { } // continue
+
+ // Attempt 2: Use the definition available reflectively from OSGi
+ if (functionClass == null) {
+ try {
+ Object classInstance = definition.getExtPointDefinition().createExecutableExtension("className");
+ if (classInstance != null) {
+ functionClass = classInstance.getClass();
+ }
+ } catch (CoreException e) {
+ // It may be useful to hold on to this
+ parent = e;
+ }
+
+ }
+
+ definition.setClass(functionClass);
+
+ // If we still can't find it, then bail out.
+ // TODO Decide if we can still proceed without the class instance
+ if (definition.getClass_() == null) {
+ throw new FunctionDefinitionException("Could not instantiate instance of function definition class for function "+ definition.getName(), definition, parent);
+ }
+
+ String[] declaredParams = getJavaMethodArgTypes(definition);
+
+ Method foundMethod = null;
+ for (Method method : functionClass.getMethods()) {
+ if (method.getName().equals(definition.getMethodName()) // Check method name
+ /*&& method.getReturnType() == double.class*/ // Check return type
+ && Modifier.isPublic(method.getModifiers()) // Check is public
+ && Modifier.isStatic(method.getModifiers())) // Check is static
+ {
+ Class<?>[] methodParams = method.getParameterTypes();
+ if (methodParams.length == declaredParams.length) {
+ boolean match = true;
+ for (int idx=0; idx<methodParams.length; idx++) {
+ if (!methodParams[idx].getName().equals(declaredParams[idx])) {
+ match = false;
+ break;
+ }
+ }
+ if (match) {
+ foundMethod = method;
+ break;
+ }
+ }
+ }
+ }
+
+ definition.setMethod(foundMethod);
+
+ if (definition.getMethod() == null) {
+ throw new FunctionDefinitionException("Could not find an appropriate class method for definition "+ definition.getName(), definition);
+ }
+
+// for () {
+// Class<?> asdf = m.getReturnType();
+//
+// // if (asdf.getName())
+// System.out.println(m);
+// }
+
+ }
+
+ private String[] getJavaMethodArgTypes(ExternalFunctionDefinition definition) throws FunctionDefinitionException
+ {
+ String[] types = new String[definition.getJavaMethodArguments().size()];
+ int idx = 0;
+ for (JavaMethodArgument arg : definition.getJavaMethodArguments()) {
+ types[idx++] = arg.getType();
+ }
+ return types;
+ }
+
+ private FunctionArgument getParameterByName(String name, ExternalFunctionDefinition def)
+ {
+ for (FunctionArgument param : def.getFunctionArguments()) {
+ if (param.getName().equals(name)) {
+ return param;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/JavaMethodArgument.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/JavaMethodArgument.java
new file mode 100644
index 000000000..843361a3f
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/JavaMethodArgument.java
@@ -0,0 +1,77 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Method Argument</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getMapsFrom <em>Maps From</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getJavaMethodArgument()
+ * @model
+ * @generated
+ */
+public interface JavaMethodArgument extends EObject {
+ /**
+ * Returns the value of the '<em><b>Maps From</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Maps From</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Maps From</em>' attribute.
+ * @see #setMapsFrom(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getJavaMethodArgument_MapsFrom()
+ * @model transient="true"
+ * @generated
+ */
+ String getMapsFrom();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getMapsFrom <em>Maps From</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Maps From</em>' attribute.
+ * @see #getMapsFrom()
+ * @generated
+ */
+ void setMapsFrom(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see #setType(String)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getJavaMethodArgument_Type()
+ * @model transient="true"
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see #getType()
+ * @generated
+ */
+ void setType(String value);
+
+} // JavaMethodArgument
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/STEMDSLUtils.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/STEMDSLUtils.java
new file mode 100644
index 000000000..900aa320e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/STEMDSLUtils.java
@@ -0,0 +1,143 @@
+package org.eclipse.stem.model.ctdl.functions;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class STEMDSLUtils
+{
+ private static final Map<String, Class<?>> GLOBAL_USER_VARS = new HashMap<String, Class<?>>();
+ private static final Map<String, Class<?>> GLOBAL_SYSTEM_VARS = new HashMap<String, Class<?>>();
+ static
+ {
+ GLOBAL_USER_VARS.put("timeDelta", long.class);
+ GLOBAL_USER_VARS.put("t", double.class);
+
+ GLOBAL_SYSTEM_VARS
+ .put("time", org.eclipse.stem.core.model.STEMTime.class);
+ GLOBAL_SYSTEM_VARS.put("labelValue",
+ org.eclipse.stem.core.graph.LabelValue.class);
+ GLOBAL_SYSTEM_VARS.put("node",
+ org.eclipse.stem.core.graph.Node.class);
+
+ }
+
+ public static Class<?> getTypeForGlobalVariable(String name)
+ {
+ Class<?> type = GLOBAL_USER_VARS.get(name);
+ if (type == null) {
+ type = GLOBAL_SYSTEM_VARS.get(name);
+ }
+ return type;
+ }
+
+ public static Map<String, Class<?>> getGlobalUserVariables()
+ {
+ return Collections.unmodifiableMap(GLOBAL_USER_VARS);
+ }
+
+ public static Map<String, Class<?>> getGlobalSystemVariables()
+ {
+ return Collections.unmodifiableMap(GLOBAL_SYSTEM_VARS);
+ }
+//
+// public static String getNormalizedTypeNameForClass(Class<?> clazz)
+// {
+// if (clazz == null) {
+// return null;
+// }
+//
+// if (isNumber(clazz)) {
+// return "number";
+// } else if (clazz == String.class) {
+// return "string";
+// } else {
+// return clazz.getName();
+// }
+// }
+//
+// public static String getNormalizedTypeNameForClass(String className)
+// {
+// if (className == null) {
+// return null;
+// }
+//
+// if (isNumber(className)) {
+// return "number";
+// } else if (String.class.getName().equals(className)) {
+// return "string";
+// } else {
+// return className;
+// }
+// }
+//
+// public static List<String> classTypeNames = Arrays.asList(new String[] {
+// "double", "int", "float", "long", "short",
+// "java.lang.Double", "java.lang.Integer", "java.lang.Float", "java.lang.Long",
+// "java.lang.Short"
+// });
+//
+// public static boolean isNumber(String className)
+// {
+// return classTypeNames.contains(className);
+// }
+//
+// public static boolean isNumber(Class<?> clazz)
+// {
+// return (clazz == double.class || clazz == Double.class ||
+// clazz == int.class || clazz == Integer.class ||
+// clazz == float.class || clazz == Float.class ||
+// clazz == long.class || clazz == Long.class ||
+// clazz == short.class || clazz == Short.class);
+//
+// }
+//
+// public static List<Compartment> getAllCompartmentsForGroup(
+// CompartmentGroup cg) {
+// List<Compartment> compartments = new ArrayList<Compartment>();
+// if (cg != null) {
+// compartments.addAll(getAllCompartmentsForGroup(cg.getParentGroup()));
+// compartments.addAll(cg.getCompartments());
+//
+// }
+// return compartments;
+// }
+//
+// public static List<Compartment> getAllCompartmentsForModel(Model model) {
+// return getAllCompartmentsForGroup(model.getCompartments());
+// }
+//
+// public static List<ModelParam> getAllParametersForModel(Model model) {
+// List<ModelParam> params = new ArrayList<ModelParam>();
+// if (model != null) {
+// params.addAll(getAllParametersForModel(model.getParentModel()));
+// params.addAll(model.getParameters());
+// }
+// return params;
+// }
+//
+// public static String ucfirst(String str)
+// {
+// if (str.length() > 0 && Character.isLowerCase(str.codePointAt(0))) {
+// StringBuilder sb = new StringBuilder();
+// sb.appendCodePoint(Character.toUpperCase(str.codePointAt(0)));
+// sb.append(str.substring(1));
+// return sb.toString();
+// }
+//
+// return str;
+// }
+//
+// public static String lcfirst(String str)
+// {
+// if (str.length() > 0 && Character.isUpperCase(str.codePointAt(0))) {
+// StringBuilder sb = new StringBuilder();
+// sb.appendCodePoint(Character.toLowerCase(str.codePointAt(0)));
+// sb.append(str.substring(1));
+// return sb.toString();
+// }
+//
+// return str;
+// }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/SystemArgumentReference.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/SystemArgumentReference.java
new file mode 100644
index 000000000..1a8af5514
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/SystemArgumentReference.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>System Argument Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.SystemArgumentReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getSystemArgumentReference()
+ * @model
+ * @generated
+ */
+public interface SystemArgumentReference extends JavaMethodArgument {
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(EObject)
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#getSystemArgumentReference_Ref()
+ * @model
+ * @generated
+ */
+ EObject getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.functions.SystemArgumentReference#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(EObject value);
+
+} // SystemArgumentReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/TestFunctions.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/TestFunctions.java
new file mode 100644
index 000000000..7ce0c2112
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/TestFunctions.java
@@ -0,0 +1,68 @@
+package org.eclipse.stem.model.ctdl.functions;
+
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.model.STEMTime;
+
+public class TestFunctions
+{
+
+ public static double test1Method(Node n)
+ {
+ return 0.0;
+ }
+
+ public static double test2Method(double x, Node n)
+ {
+ return 0.0;
+ }
+
+ public static double test3Method(double x, STEMTime time, Node n)
+ {
+ return 0.0;
+ }
+
+ public static double test4Method(STEMTime time, Node n, double x)
+ {
+ return 0.0;
+ }
+
+ public static double test5Method(double x, String y)
+ {
+ return 0.0;
+ }
+
+ public static double test6Method(double x, String y, boolean tf)
+ {
+ return 0.0;
+ }
+
+ public static String test7Method(double x)
+ {
+ return "";
+ }
+
+ public static double one()
+ {
+ return 1;
+ }
+
+ public static double add(double x, double y)
+ {
+ return x+y;
+ }
+
+ public static double subtract(double x, double y)
+ {
+ return x-y;
+ }
+
+ public static double multiply(double x, double y)
+ {
+ return x*y;
+ }
+
+ public static double divide(double x, double y)
+ {
+ return x/y;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionDefinitionImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionDefinitionImpl.java
new file mode 100644
index 000000000..cc38adf76
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionDefinitionImpl.java
@@ -0,0 +1,626 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import java.lang.reflect.Method;
+import java.util.Collection;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+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.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External Function Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getClass_ <em>Class</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getMethod <em>Method</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getReturnType <em>Return Type</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getSignature <em>Signature</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getClassName <em>Class Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getMethodName <em>Method Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getContributingPlugin <em>Contributing Plugin</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getExtPointDefinition <em>Ext Point Definition</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getFunctionArguments <em>Function Arguments</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.ExternalFunctionDefinitionImpl#getJavaMethodArguments <em>Java Method Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExternalFunctionDefinitionImpl extends EObjectImpl implements ExternalFunctionDefinition {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getClass_() <em>Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClass_()
+ * @generated
+ * @ordered
+ */
+ protected Class<?> class_;
+
+ /**
+ * The default value of the '{@link #getMethod() <em>Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMethod()
+ * @generated
+ * @ordered
+ */
+ protected static final Method METHOD_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMethod() <em>Method</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMethod()
+ * @generated
+ * @ordered
+ */
+ protected Method method = METHOD_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSignature() <em>Signature</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSignature()
+ * @generated
+ * @ordered
+ */
+ protected static final String SIGNATURE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSignature() <em>Signature</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSignature()
+ * @generated
+ * @ordered
+ */
+ protected String signature = SIGNATURE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getClassName() <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassName()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASS_NAME_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getClassName() <em>Class Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassName()
+ * @generated
+ * @ordered
+ */
+ protected String className = CLASS_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getMethodName() <em>Method Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMethodName()
+ * @generated
+ * @ordered
+ */
+ protected static final String METHOD_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMethodName() <em>Method Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMethodName()
+ * @generated
+ * @ordered
+ */
+ protected String methodName = METHOD_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getContributingPlugin() <em>Contributing Plugin</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContributingPlugin()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTING_PLUGIN_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributingPlugin() <em>Contributing Plugin</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContributingPlugin()
+ * @generated
+ * @ordered
+ */
+ protected String contributingPlugin = CONTRIBUTING_PLUGIN_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getExtPointDefinition() <em>Ext Point Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExtPointDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final IConfigurationElement EXT_POINT_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getExtPointDefinition() <em>Ext Point Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExtPointDefinition()
+ * @generated
+ * @ordered
+ */
+ protected IConfigurationElement extPointDefinition = EXT_POINT_DEFINITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFunctionArguments() <em>Function Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFunctionArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<FunctionArgument> functionArguments;
+
+ /**
+ * The cached value of the '{@link #getJavaMethodArguments() <em>Java Method Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaMethodArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<JavaMethodArgument> javaMethodArguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalFunctionDefinitionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExternalFunctionsPackage.Literals.EXTERNAL_FUNCTION_DEFINITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Class<?> getClass_() {
+ return class_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClass(Class<?> newClass) {
+ Class<?> oldClass = class_;
+ class_ = newClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS, oldClass, class_));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Method getMethod() {
+ return method;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMethod(Method newMethod) {
+ Method oldMethod = method;
+ method = newMethod;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD, oldMethod, method));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Class<?> getReturnType() {
+ if (getMethod() == null) {
+ return null;
+ }
+ return getMethod().getReturnType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getSignature() {
+ if (signature == null) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getName());
+ sb.append("(");
+ EList<FunctionArgument> args = getFunctionArguments();
+ int paramCount = args.size();
+ for (int idx=0; idx<args.size(); idx++) {
+ sb.append(args.get(idx).getType());
+ if (idx < paramCount-1) {
+ sb.append(",");
+ }
+ }
+ sb.append(")");
+ signature = sb.toString();
+ }
+ return signature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getClassName() {
+ return className;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClassName(String newClassName) {
+ String oldClassName = className;
+ className = newClassName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME, oldClassName, className));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getMethodName() {
+ return methodName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMethodName(String newMethodName) {
+ String oldMethodName = methodName;
+ methodName = newMethodName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME, oldMethodName, methodName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getContributingPlugin() {
+ if (contributingPlugin == null) {
+ IConfigurationElement extPt = getExtPointDefinition();
+ if (extPt != null) {
+ contributingPlugin = extPt.getContributor().getName();
+ }
+ }
+ return contributingPlugin;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IConfigurationElement getExtPointDefinition() {
+ return extPointDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExtPointDefinition(IConfigurationElement newExtPointDefinition) {
+ IConfigurationElement oldExtPointDefinition = extPointDefinition;
+ extPointDefinition = newExtPointDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION, oldExtPointDefinition, extPointDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<FunctionArgument> getFunctionArguments() {
+ if (functionArguments == null) {
+ functionArguments = new EObjectContainmentEList<FunctionArgument>(FunctionArgument.class, this, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS);
+ }
+ return functionArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<JavaMethodArgument> getJavaMethodArguments() {
+ if (javaMethodArguments == null) {
+ javaMethodArguments = new EObjectContainmentEList<JavaMethodArgument>(JavaMethodArgument.class, this, ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS);
+ }
+ return javaMethodArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS:
+ return ((InternalEList<?>)getFunctionArguments()).basicRemove(otherEnd, msgs);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS:
+ return ((InternalEList<?>)getJavaMethodArguments()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__NAME:
+ return getName();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS:
+ return getClass_();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD:
+ return getMethod();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__RETURN_TYPE:
+ return getReturnType();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__SIGNATURE:
+ return getSignature();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME:
+ return getClassName();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME:
+ return getMethodName();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CONTRIBUTING_PLUGIN:
+ return getContributingPlugin();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION:
+ return getExtPointDefinition();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS:
+ return getFunctionArguments();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS:
+ return getJavaMethodArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__NAME:
+ setName((String)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS:
+ setClass((Class<?>)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD:
+ setMethod((Method)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME:
+ setClassName((String)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME:
+ setMethodName((String)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION:
+ setExtPointDefinition((IConfigurationElement)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS:
+ getFunctionArguments().clear();
+ getFunctionArguments().addAll((Collection<? extends FunctionArgument>)newValue);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS:
+ getJavaMethodArguments().clear();
+ getJavaMethodArguments().addAll((Collection<? extends JavaMethodArgument>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS:
+ setClass((Class<?>)null);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD:
+ setMethod(METHOD_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME:
+ setClassName(CLASS_NAME_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME:
+ setMethodName(METHOD_NAME_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION:
+ setExtPointDefinition(EXT_POINT_DEFINITION_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS:
+ getFunctionArguments().clear();
+ return;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS:
+ getJavaMethodArguments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS:
+ return class_ != null;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD:
+ return METHOD_EDEFAULT == null ? method != null : !METHOD_EDEFAULT.equals(method);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__RETURN_TYPE:
+ return getReturnType() != null;
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__SIGNATURE:
+ return SIGNATURE_EDEFAULT == null ? signature != null : !SIGNATURE_EDEFAULT.equals(signature);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME:
+ return CLASS_NAME_EDEFAULT == null ? className != null : !CLASS_NAME_EDEFAULT.equals(className);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME:
+ return METHOD_NAME_EDEFAULT == null ? methodName != null : !METHOD_NAME_EDEFAULT.equals(methodName);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__CONTRIBUTING_PLUGIN:
+ return CONTRIBUTING_PLUGIN_EDEFAULT == null ? contributingPlugin != null : !CONTRIBUTING_PLUGIN_EDEFAULT.equals(contributingPlugin);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION:
+ return EXT_POINT_DEFINITION_EDEFAULT == null ? extPointDefinition != null : !EXT_POINT_DEFINITION_EDEFAULT.equals(extPointDefinition);
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS:
+ return functionArguments != null && !functionArguments.isEmpty();
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS:
+ return javaMethodArguments != null && !javaMethodArguments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", class: ");
+ result.append(class_);
+ result.append(", method: ");
+ result.append(method);
+ result.append(", signature: ");
+ result.append(signature);
+ result.append(", className: ");
+ result.append(className);
+ result.append(", methodName: ");
+ result.append(methodName);
+ result.append(", contributingPlugin: ");
+ result.append(contributingPlugin);
+ result.append(", extPointDefinition: ");
+ result.append(extPointDefinition);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ExternalFunctionDefinitionImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsFactoryImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsFactoryImpl.java
new file mode 100644
index 000000000..26adec7f4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsFactoryImpl.java
@@ -0,0 +1,169 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsFactory;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalFunctionsFactoryImpl extends EFactoryImpl implements ExternalFunctionsFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ExternalFunctionsFactory init() {
+ try {
+ ExternalFunctionsFactory theExternalFunctionsFactory = (ExternalFunctionsFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/model/ctdl/functions.ecore");
+ if (theExternalFunctionsFactory != null) {
+ return theExternalFunctionsFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ExternalFunctionsFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionsFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION: return createExternalFunctionDefinition();
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT: return createFunctionArgument();
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT: return createJavaMethodArgument();
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE: return createSystemArgumentReference();
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE: return createFunctionArgumentReference();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionDefinition createExternalFunctionDefinition() {
+ ExternalFunctionDefinitionImpl externalFunctionDefinition = new ExternalFunctionDefinitionImpl();
+ return externalFunctionDefinition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionArgument createFunctionArgument() {
+ FunctionArgumentImpl functionArgument = new FunctionArgumentImpl();
+ return functionArgument;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaMethodArgument createJavaMethodArgument() {
+ JavaMethodArgumentImpl javaMethodArgument = new JavaMethodArgumentImpl();
+ return javaMethodArgument;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SystemArgumentReference createSystemArgumentReference() {
+ SystemArgumentReferenceImpl systemArgumentReference = new SystemArgumentReferenceImpl();
+ return systemArgumentReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionArgumentReference createFunctionArgumentReference() {
+ FunctionArgumentReferenceImpl functionArgumentReference = new FunctionArgumentReferenceImpl();
+ return functionArgumentReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionsPackage getExternalFunctionsPackage() {
+ return (ExternalFunctionsPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ExternalFunctionsPackage getPackage() {
+ return ExternalFunctionsPackage.eINSTANCE;
+ }
+
+} //ExternalFunctionsFactoryImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsPackageImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsPackageImpl.java
new file mode 100644
index 000000000..bf8de42d0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/ExternalFunctionsPackageImpl.java
@@ -0,0 +1,500 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import java.lang.reflect.Method;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsFactory;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalFunctionsPackageImpl extends EPackageImpl implements ExternalFunctionsPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass externalFunctionDefinitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass functionArgumentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaMethodArgumentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass systemArgumentReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass functionArgumentReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType iConfigurationElementEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType methodEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ExternalFunctionsPackageImpl() {
+ super(eNS_URI, ExternalFunctionsFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ExternalFunctionsPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ExternalFunctionsPackage init() {
+ if (isInited) return (ExternalFunctionsPackage)EPackage.Registry.INSTANCE.getEPackage(ExternalFunctionsPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ExternalFunctionsPackageImpl theExternalFunctionsPackage = (ExternalFunctionsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ExternalFunctionsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ExternalFunctionsPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theExternalFunctionsPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theExternalFunctionsPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theExternalFunctionsPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ExternalFunctionsPackage.eNS_URI, theExternalFunctionsPackage);
+ return theExternalFunctionsPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExternalFunctionDefinition() {
+ return externalFunctionDefinitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_Name() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_Class() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_Method() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_ReturnType() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_Signature() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_ClassName() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_MethodName() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_ContributingPlugin() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExternalFunctionDefinition_ExtPointDefinition() {
+ return (EAttribute)externalFunctionDefinitionEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExternalFunctionDefinition_FunctionArguments() {
+ return (EReference)externalFunctionDefinitionEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExternalFunctionDefinition_JavaMethodArguments() {
+ return (EReference)externalFunctionDefinitionEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFunctionArgument() {
+ return functionArgumentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFunctionArgument_Name() {
+ return (EAttribute)functionArgumentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFunctionArgument_Type() {
+ return (EAttribute)functionArgumentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getJavaMethodArgument() {
+ return javaMethodArgumentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getJavaMethodArgument_MapsFrom() {
+ return (EAttribute)javaMethodArgumentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getJavaMethodArgument_Type() {
+ return (EAttribute)javaMethodArgumentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSystemArgumentReference() {
+ return systemArgumentReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSystemArgumentReference_Ref() {
+ return (EReference)systemArgumentReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFunctionArgumentReference() {
+ return functionArgumentReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFunctionArgumentReference_ArgIndex() {
+ return (EAttribute)functionArgumentReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFunctionArgumentReference_Ref() {
+ return (EReference)functionArgumentReferenceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getIConfigurationElement() {
+ return iConfigurationElementEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getMethod() {
+ return methodEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionsFactory getExternalFunctionsFactory() {
+ return (ExternalFunctionsFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ externalFunctionDefinitionEClass = createEClass(EXTERNAL_FUNCTION_DEFINITION);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__NAME);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__CLASS);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__METHOD);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__RETURN_TYPE);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__SIGNATURE);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__CLASS_NAME);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__METHOD_NAME);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__CONTRIBUTING_PLUGIN);
+ createEAttribute(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__EXT_POINT_DEFINITION);
+ createEReference(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__FUNCTION_ARGUMENTS);
+ createEReference(externalFunctionDefinitionEClass, EXTERNAL_FUNCTION_DEFINITION__JAVA_METHOD_ARGUMENTS);
+
+ functionArgumentEClass = createEClass(FUNCTION_ARGUMENT);
+ createEAttribute(functionArgumentEClass, FUNCTION_ARGUMENT__NAME);
+ createEAttribute(functionArgumentEClass, FUNCTION_ARGUMENT__TYPE);
+
+ javaMethodArgumentEClass = createEClass(JAVA_METHOD_ARGUMENT);
+ createEAttribute(javaMethodArgumentEClass, JAVA_METHOD_ARGUMENT__MAPS_FROM);
+ createEAttribute(javaMethodArgumentEClass, JAVA_METHOD_ARGUMENT__TYPE);
+
+ systemArgumentReferenceEClass = createEClass(SYSTEM_ARGUMENT_REFERENCE);
+ createEReference(systemArgumentReferenceEClass, SYSTEM_ARGUMENT_REFERENCE__REF);
+
+ functionArgumentReferenceEClass = createEClass(FUNCTION_ARGUMENT_REFERENCE);
+ createEAttribute(functionArgumentReferenceEClass, FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX);
+ createEReference(functionArgumentReferenceEClass, FUNCTION_ARGUMENT_REFERENCE__REF);
+
+ // Create data types
+ iConfigurationElementEDataType = createEDataType(ICONFIGURATION_ELEMENT);
+ methodEDataType = createEDataType(METHOD);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ systemArgumentReferenceEClass.getESuperTypes().add(this.getJavaMethodArgument());
+ functionArgumentReferenceEClass.getESuperTypes().add(this.getJavaMethodArgument());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(externalFunctionDefinitionEClass, ExternalFunctionDefinition.class, "ExternalFunctionDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getExternalFunctionDefinition_Name(), ecorePackage.getEString(), "name", null, 0, 1, ExternalFunctionDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ EGenericType g1 = createEGenericType(ecorePackage.getEJavaClass());
+ EGenericType g2 = createEGenericType();
+ g1.getETypeArguments().add(g2);
+ initEAttribute(getExternalFunctionDefinition_Class(), g1, "class", null, 0, 1, ExternalFunctionDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_Method(), this.getMethod(), "method", null, 0, 1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ g1 = createEGenericType(ecorePackage.getEJavaClass());
+ g2 = createEGenericType();
+ g1.getETypeArguments().add(g2);
+ initEAttribute(getExternalFunctionDefinition_ReturnType(), g1, "returnType", null, 0, 1, ExternalFunctionDefinition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_Signature(), ecorePackage.getEString(), "signature", null, 0, 1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_ClassName(), ecorePackage.getEString(), "className", "", 0, 1, ExternalFunctionDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_MethodName(), ecorePackage.getEString(), "methodName", null, 0, 1, ExternalFunctionDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_ContributingPlugin(), ecorePackage.getEString(), "contributingPlugin", null, 0, 1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExternalFunctionDefinition_ExtPointDefinition(), this.getIConfigurationElement(), "extPointDefinition", null, 0, 1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getExternalFunctionDefinition_FunctionArguments(), this.getFunctionArgument(), null, "functionArguments", null, 0, -1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getExternalFunctionDefinition_JavaMethodArguments(), this.getJavaMethodArgument(), null, "javaMethodArguments", null, 0, -1, ExternalFunctionDefinition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(functionArgumentEClass, FunctionArgument.class, "FunctionArgument", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFunctionArgument_Name(), ecorePackage.getEString(), "name", null, 0, 1, FunctionArgument.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFunctionArgument_Type(), ecorePackage.getEString(), "type", null, 0, 1, FunctionArgument.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(javaMethodArgumentEClass, JavaMethodArgument.class, "JavaMethodArgument", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJavaMethodArgument_MapsFrom(), ecorePackage.getEString(), "mapsFrom", null, 0, 1, JavaMethodArgument.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getJavaMethodArgument_Type(), ecorePackage.getEString(), "type", null, 0, 1, JavaMethodArgument.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(systemArgumentReferenceEClass, SystemArgumentReference.class, "SystemArgumentReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSystemArgumentReference_Ref(), ecorePackage.getEObject(), null, "ref", null, 0, 1, SystemArgumentReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(functionArgumentReferenceEClass, FunctionArgumentReference.class, "FunctionArgumentReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFunctionArgumentReference_ArgIndex(), ecorePackage.getEInt(), "argIndex", null, 0, 1, FunctionArgumentReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFunctionArgumentReference_Ref(), this.getFunctionArgument(), null, "ref", null, 0, 1, FunctionArgumentReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize data types
+ initEDataType(iConfigurationElementEDataType, IConfigurationElement.class, "IConfigurationElement", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(methodEDataType, Method.class, "Method", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ExternalFunctionsPackageImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentImpl.java
new file mode 100644
index 000000000..4e8bcb4d9
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentImpl.java
@@ -0,0 +1,214 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Argument</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionArgumentImpl extends EObjectImpl implements FunctionArgument {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected String type = TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FunctionArgumentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExternalFunctionsPackage.Literals.FUNCTION_ARGUMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.FUNCTION_ARGUMENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(String newType) {
+ String oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.FUNCTION_ARGUMENT__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__NAME:
+ return getName();
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__NAME:
+ setName((String)newValue);
+ return;
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__TYPE:
+ setType((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FunctionArgumentImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentReferenceImpl.java
new file mode 100644
index 000000000..5d63001fd
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/FunctionArgumentReferenceImpl.java
@@ -0,0 +1,221 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Argument Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl#getArgIndex <em>Arg Index</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.FunctionArgumentReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionArgumentReferenceImpl extends JavaMethodArgumentImpl implements FunctionArgumentReference {
+ /**
+ * The default value of the '{@link #getArgIndex() <em>Arg Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArgIndex()
+ * @generated
+ * @ordered
+ */
+ protected static final int ARG_INDEX_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getArgIndex() <em>Arg Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArgIndex()
+ * @generated
+ * @ordered
+ */
+ protected int argIndex = ARG_INDEX_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected FunctionArgument ref;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FunctionArgumentReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExternalFunctionsPackage.Literals.FUNCTION_ARGUMENT_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getArgIndex() {
+ return argIndex;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setArgIndex(int newArgIndex) {
+ int oldArgIndex = argIndex;
+ argIndex = newArgIndex;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX, oldArgIndex, argIndex));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionArgument getRef() {
+ if (ref != null && ref.eIsProxy()) {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = (FunctionArgument)eResolveProxy(oldRef);
+ if (ref != oldRef) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionArgument basicGetRef() {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(FunctionArgument newRef) {
+ FunctionArgument oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX:
+ return getArgIndex();
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX:
+ setArgIndex((Integer)newValue);
+ return;
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF:
+ setRef((FunctionArgument)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX:
+ setArgIndex(ARG_INDEX_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF:
+ setRef((FunctionArgument)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__ARG_INDEX:
+ return argIndex != ARG_INDEX_EDEFAULT;
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE__REF:
+ return ref != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (argIndex: ");
+ result.append(argIndex);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FunctionArgumentReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/JavaMethodArgumentImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/JavaMethodArgumentImpl.java
new file mode 100644
index 000000000..1c96cb5b8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/JavaMethodArgumentImpl.java
@@ -0,0 +1,214 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Method Argument</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl#getMapsFrom <em>Maps From</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.JavaMethodArgumentImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JavaMethodArgumentImpl extends EObjectImpl implements JavaMethodArgument {
+ /**
+ * The default value of the '{@link #getMapsFrom() <em>Maps From</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMapsFrom()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPS_FROM_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMapsFrom() <em>Maps From</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMapsFrom()
+ * @generated
+ * @ordered
+ */
+ protected String mapsFrom = MAPS_FROM_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected String type = TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaMethodArgumentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExternalFunctionsPackage.Literals.JAVA_METHOD_ARGUMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getMapsFrom() {
+ return mapsFrom;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMapsFrom(String newMapsFrom) {
+ String oldMapsFrom = mapsFrom;
+ mapsFrom = newMapsFrom;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__MAPS_FROM, oldMapsFrom, mapsFrom));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(String newType) {
+ String oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__MAPS_FROM:
+ return getMapsFrom();
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__MAPS_FROM:
+ setMapsFrom((String)newValue);
+ return;
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__TYPE:
+ setType((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__MAPS_FROM:
+ setMapsFrom(MAPS_FROM_EDEFAULT);
+ return;
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__MAPS_FROM:
+ return MAPS_FROM_EDEFAULT == null ? mapsFrom != null : !MAPS_FROM_EDEFAULT.equals(mapsFrom);
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mapsFrom: ");
+ result.append(mapsFrom);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} //JavaMethodArgumentImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/SystemArgumentReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/SystemArgumentReferenceImpl.java
new file mode 100644
index 000000000..0278e7c4d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/impl/SystemArgumentReferenceImpl.java
@@ -0,0 +1,153 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>System Argument Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.functions.impl.SystemArgumentReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SystemArgumentReferenceImpl extends JavaMethodArgumentImpl implements SystemArgumentReference {
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected EObject ref;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SystemArgumentReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExternalFunctionsPackage.Literals.SYSTEM_ARGUMENT_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getRef() {
+ if (ref != null && ref.eIsProxy()) {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = eResolveProxy(oldRef);
+ if (ref != oldRef) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject basicGetRef() {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(EObject newRef) {
+ EObject oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF:
+ setRef((EObject)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF:
+ setRef((EObject)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE__REF:
+ return ref != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SystemArgumentReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsAdapterFactory.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsAdapterFactory.java
new file mode 100644
index 000000000..9d1218b7d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsAdapterFactory.java
@@ -0,0 +1,194 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage
+ * @generated
+ */
+public class ExternalFunctionsAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ExternalFunctionsPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionsAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ExternalFunctionsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalFunctionsSwitch<Adapter> modelSwitch =
+ new ExternalFunctionsSwitch<Adapter>() {
+ @Override
+ public Adapter caseExternalFunctionDefinition(ExternalFunctionDefinition object) {
+ return createExternalFunctionDefinitionAdapter();
+ }
+ @Override
+ public Adapter caseFunctionArgument(FunctionArgument object) {
+ return createFunctionArgumentAdapter();
+ }
+ @Override
+ public Adapter caseJavaMethodArgument(JavaMethodArgument object) {
+ return createJavaMethodArgumentAdapter();
+ }
+ @Override
+ public Adapter caseSystemArgumentReference(SystemArgumentReference object) {
+ return createSystemArgumentReferenceAdapter();
+ }
+ @Override
+ public Adapter caseFunctionArgumentReference(FunctionArgumentReference object) {
+ return createFunctionArgumentReferenceAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition <em>External Function Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition
+ * @generated
+ */
+ public Adapter createExternalFunctionDefinitionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgument <em>Function Argument</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgument
+ * @generated
+ */
+ public Adapter createFunctionArgumentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.functions.JavaMethodArgument <em>Java Method Argument</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.functions.JavaMethodArgument
+ * @generated
+ */
+ public Adapter createJavaMethodArgumentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.functions.SystemArgumentReference <em>System Argument Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.functions.SystemArgumentReference
+ * @generated
+ */
+ public Adapter createSystemArgumentReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference <em>Function Argument Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference
+ * @generated
+ */
+ public Adapter createFunctionArgumentReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ExternalFunctionsAdapterFactory
diff --git a/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsSwitch.java b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsSwitch.java
new file mode 100644
index 000000000..a2b5ad1ce
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.functions/src/org/eclipse/stem/model/ctdl/functions/util/ExternalFunctionsSwitch.java
@@ -0,0 +1,199 @@
+/**
+ */
+package org.eclipse.stem.model.ctdl.functions.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage
+ * @generated
+ */
+public class ExternalFunctionsSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ExternalFunctionsPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionsSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ExternalFunctionsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ExternalFunctionsPackage.EXTERNAL_FUNCTION_DEFINITION: {
+ ExternalFunctionDefinition externalFunctionDefinition = (ExternalFunctionDefinition)theEObject;
+ T result = caseExternalFunctionDefinition(externalFunctionDefinition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT: {
+ FunctionArgument functionArgument = (FunctionArgument)theEObject;
+ T result = caseFunctionArgument(functionArgument);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ExternalFunctionsPackage.JAVA_METHOD_ARGUMENT: {
+ JavaMethodArgument javaMethodArgument = (JavaMethodArgument)theEObject;
+ T result = caseJavaMethodArgument(javaMethodArgument);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ExternalFunctionsPackage.SYSTEM_ARGUMENT_REFERENCE: {
+ SystemArgumentReference systemArgumentReference = (SystemArgumentReference)theEObject;
+ T result = caseSystemArgumentReference(systemArgumentReference);
+ if (result == null) result = caseJavaMethodArgument(systemArgumentReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ExternalFunctionsPackage.FUNCTION_ARGUMENT_REFERENCE: {
+ FunctionArgumentReference functionArgumentReference = (FunctionArgumentReference)theEObject;
+ T result = caseFunctionArgumentReference(functionArgumentReference);
+ if (result == null) result = caseJavaMethodArgument(functionArgumentReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>External Function Definition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>External Function Definition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalFunctionDefinition(ExternalFunctionDefinition object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Function Argument</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Function Argument</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFunctionArgument(FunctionArgument object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Java Method Argument</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Java Method Argument</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaMethodArgument(JavaMethodArgument object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>System Argument Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>System Argument Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSystemArgumentReference(SystemArgumentReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Function Argument Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Function Argument Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFunctionArgumentReference(FunctionArgumentReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //ExternalFunctionsSwitch
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/.classpath b/modelgen/org.eclipse.stem.model.ctdl.ui/.classpath
new file mode 100644
index 000000000..5d0495ecf
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/.project b/modelgen/org.eclipse.stem.model.ctdl.ui/.project
new file mode 100644
index 000000000..7361e87a0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.stem.model.ctdl.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/.settings/org.eclipse.jdt.core.prefs b/modelgen/org.eclipse.stem.model.ctdl.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.ctdl.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..69a3e8750
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.stem.model.ctdl.ui
+Bundle-Vendor: Eclipse.org
+Bundle-Version: 2.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.stem.model.ctdl.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.stem.model.ctdl;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare,
+ org.eclipse.stem.model
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6,
+ J2SE-1.5
+Export-Package: org.eclipse.stem.model.ctdl.ui.contentassist,
+ org.eclipse.stem.model.ctdl.ui.contentassist.antlr,
+ org.eclipse.stem.model.ctdl.ui.embed,
+ org.eclipse.stem.model.ctdl.ui.internal
+Bundle-Activator: org.eclipse.stem.model.ctdl.ui.internal.CTDLActivator
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/build.properties b/modelgen/org.eclipse.stem.model.ctdl.ui/build.properties
new file mode 100644
index 000000000..cb4d0e07f
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/build.properties
@@ -0,0 +1,8 @@
+source.. = src/,\
+ src-gen/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
+
+javacSource=1.6
+javacTarget=1.6 \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml b/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml
new file mode 100644
index 000000000..92c0f15e4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ category="org.eclipse.stem.ui.views"
+ class="org.eclipse.stem.model.ctdl.ui.embed.EmbeddedEditorView"
+ id="org.eclipse.stem.model.ctdl.ui.embed.embeddedEditorView"
+ name="CTDL Viewer"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+ contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+ default="true"
+ extensions="sctd"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL Editor">
+ </editor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+ commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+ commandId="org.eclipse.stem.model.ctdl.CTDL.validate">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.core.expressions.definitions">
+ <definition id="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ <and>
+ <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+ <with variable="activeEditor">
+ <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+ value="org.eclipse.stem.model.ctdl.CTDL"
+ forcePluginActivation="true"/>
+ </with>
+ </and>
+ </definition>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.coloring"
+ name="Syntax Coloring">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.templates"
+ name="Templates">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ <enabledWhen>
+ <adapt type="org.eclipse.core.resources.IProject"/>
+ </enabledWhen>
+ <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"
+ label="CTDL"/>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Trigger expensive validation"
+ id="org.eclipse.stem.model.ctdl.CTDL.validate"
+ name="Validate">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command
+ commandId="org.eclipse.stem.model.ctdl.CTDL.validate"
+ style="push"
+ tooltip="Trigger expensive validation">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+ <command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+ commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+
+<!-- adding resource factories -->
+
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+ type="sctd">
+ </parser>
+ </extension>
+ <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+ <resourceServiceProvider
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+ uriExtension="sctd">
+ </resourceServiceProvider>
+ </extension>
+
+
+ <!-- marker definitions for org.eclipse.stem.model.ctdl.CTDL -->
+ <extension
+ id="ctdl.check.fast"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.fast"/>
+ <persistent value="true"/>
+ </extension>
+ <extension
+ id="ctdl.check.normal"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.normal"/>
+ <persistent value="true"/>
+ </extension>
+ <extension
+ id="ctdl.check.expensive"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.expensive"/>
+ <persistent value="true"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.xtext.builder.participant">
+ <participant
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+ </participant>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.compiler.preferencePage"
+ name="Compiler">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.compiler.propertyPage"
+ name="Compiler">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ <enabledWhen>
+ <adapt type="org.eclipse.core.resources.IProject"/>
+ </enabledWhen>
+ <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+ </page>
+ </extension>
+
+ <!-- Quick Outline -->
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+ commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Open the quick outline."
+ id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ name="Quick Outline">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.open">
+ <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ style="push"
+ tooltip="Open Quick Outline">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened"/>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <!-- quickfix marker resolution generator for org.eclipse.stem.model.ctdl.CTDL -->
+ <extension
+ point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.fast">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.normal">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.expensive">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ </extension>
+ <!-- Rename Refactoring -->
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+ commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+ style="push">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.refactoring"
+ name="Refactoring">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+
+ <extension point="org.eclipse.compare.contentViewers">
+ <viewer id="org.eclipse.stem.model.ctdl.CTDL.compare.contentViewers"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+ extensions="sctd">
+ </viewer>
+ </extension>
+ <extension point="org.eclipse.compare.contentMergeViewers">
+ <viewer id="org.eclipse.stem.model.ctdl.CTDL.compare.contentMergeViewers"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+ extensions="sctd" label="CTDL Compare">
+ </viewer>
+ </extension>
+ <extension point="org.eclipse.ui.editors.documentProviders">
+ <provider id="org.eclipse.stem.model.ctdl.CTDL.editors.documentProviders"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+ extensions="sctd">
+ </provider>
+ </extension>
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml_gen b/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml_gen
new file mode 100644
index 000000000..e9bdb35da
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/plugin.xml_gen
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+ contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+ default="true"
+ extensions="sctd"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL Editor">
+ </editor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+ commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+ commandId="org.eclipse.stem.model.ctdl.CTDL.validate">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.core.expressions.definitions">
+ <definition id="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ <and>
+ <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+ <with variable="activeEditor">
+ <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+ value="org.eclipse.stem.model.ctdl.CTDL"
+ forcePluginActivation="true"/>
+ </with>
+ </and>
+ </definition>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.coloring"
+ name="Syntax Coloring">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.templates"
+ name="Templates">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL"
+ name="CTDL">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ <enabledWhen>
+ <adapt type="org.eclipse.core.resources.IProject"/>
+ </enabledWhen>
+ <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"
+ label="CTDL"/>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Trigger expensive validation"
+ id="org.eclipse.stem.model.ctdl.CTDL.validate"
+ name="Validate">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command
+ commandId="org.eclipse.stem.model.ctdl.CTDL.validate"
+ style="push"
+ tooltip="Trigger expensive validation">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+ <command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+ commandId="org.eclipse.xtext.ui.editor.FindReferences">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+
+<!-- adding resource factories -->
+
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+ type="sctd">
+ </parser>
+ </extension>
+ <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+ <resourceServiceProvider
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+ uriExtension="sctd">
+ </resourceServiceProvider>
+ </extension>
+
+
+ <!-- marker definitions for org.eclipse.stem.model.ctdl.CTDL -->
+ <extension
+ id="ctdl.check.fast"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.fast"/>
+ <persistent value="true"/>
+ </extension>
+ <extension
+ id="ctdl.check.normal"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.normal"/>
+ <persistent value="true"/>
+ </extension>
+ <extension
+ id="ctdl.check.expensive"
+ name="CTDL Problem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.xtext.ui.check.expensive"/>
+ <persistent value="true"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.xtext.builder.participant">
+ <participant
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+ </participant>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.compiler.preferencePage"
+ name="Compiler">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.compiler.propertyPage"
+ name="Compiler">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ <enabledWhen>
+ <adapt type="org.eclipse.core.resources.IProject"/>
+ </enabledWhen>
+ <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+ </page>
+ </extension>
+
+ <!-- Quick Outline -->
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+ commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Open the quick outline."
+ id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ name="Quick Outline">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.open">
+ <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+ style="push"
+ tooltip="Open Quick Outline">
+ <visibleWhen checkEnabled="false">
+ <reference definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened"/>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <!-- quickfix marker resolution generator for org.eclipse.stem.model.ctdl.CTDL -->
+ <extension
+ point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.fast">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.normal">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ <markerResolutionGenerator
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+ markerType="org.eclipse.stem.model.ctdl.ui.ctdl.check.expensive">
+ <attribute
+ name="FIXABLE_KEY"
+ value="true">
+ </attribute>
+ </markerResolutionGenerator>
+ </extension>
+ <!-- Rename Refactoring -->
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+ commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+ <activeWhen>
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:#TextEditorContext?after=group.edit">
+ <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+ style="push">
+ <visibleWhen checkEnabled="false">
+ <reference
+ definitionId="org.eclipse.stem.model.ctdl.CTDL.Editor.opened">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.stem.model.ctdl.CTDL"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+ id="org.eclipse.stem.model.ctdl.CTDL.refactoring"
+ name="Refactoring">
+ <keywordReference id="org.eclipse.stem.model.ctdl.ui.keyword_CTDL"/>
+ </page>
+ </extension>
+
+ <extension point="org.eclipse.compare.contentViewers">
+ <viewer id="org.eclipse.stem.model.ctdl.CTDL.compare.contentViewers"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+ extensions="sctd">
+ </viewer>
+ </extension>
+ <extension point="org.eclipse.compare.contentMergeViewers">
+ <viewer id="org.eclipse.stem.model.ctdl.CTDL.compare.contentMergeViewers"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+ extensions="sctd" label="CTDL Compare">
+ </viewer>
+ </extension>
+ <extension point="org.eclipse.ui.editors.documentProviders">
+ <provider id="org.eclipse.stem.model.ctdl.CTDL.editors.documentProviders"
+ class="org.eclipse.stem.model.ctdl.ui.CTDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+ extensions="sctd">
+ </provider>
+ </extension>
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/AbstractCTDLUiModule.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/AbstractCTDLUiModule.java
new file mode 100644
index 000000000..8c4fd2220
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/AbstractCTDLUiModule.java
@@ -0,0 +1,247 @@
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.DefaultUiModule;
+
+/**
+ * Manual modifications go to {org.eclipse.stem.model.ctdl.ui.CTDLUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractCTDLUiModule extends DefaultUiModule {
+
+ public AbstractCTDLUiModule(AbstractUIPlugin plugin) {
+ super(plugin);
+ }
+
+
+ // contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+ public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+ return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+ return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureHighlightingLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+ return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+ return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+ return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+ public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+ return org.eclipse.xtext.builder.BuilderParticipant.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+ public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+ return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+ }
+
+ // contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+ public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+ public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+ return org.eclipse.stem.model.ctdl.ui.labeling.CTDLLabelProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+ public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.stem.model.ctdl.ui.labeling.CTDLDescriptionLabelProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+ return org.eclipse.stem.model.ctdl.ui.outline.CTDLOutlineTreeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+ return org.eclipse.stem.model.ctdl.ui.outline.CTDLOutlineTreeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+ return org.eclipse.stem.model.ctdl.ui.quickfix.CTDLQuickfixProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+ return org.eclipse.stem.model.ctdl.ui.contentassist.CTDLProposalProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+ return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+ return org.eclipse.stem.model.ctdl.ui.contentassist.antlr.CTDLParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLLexer.class));
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+ public void configureContentAssistLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+ return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+ return org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+ return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+ return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport.Factory.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler> bindIRenameElementHandler() {
+ return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public java.lang.ClassLoader bindClassLoaderToInstance() {
+ return getClass().getClassLoader();
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+ return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+ return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+ return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+ return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+ return org.eclipse.xtext.common.types.xtext.ui.TypeAwareHyperlinkHelper.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+ return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+ return org.eclipse.xtext.common.types.xtext.ui.TypeAwareReferenceProposalCreator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+ return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+ return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+ return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.Yes.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+ public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+ return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+ public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+ return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+ @org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+ return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+ return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+ return org.eclipse.stem.model.ctdl.ui.contentassist.antlr.PartialCTDLContentAssistParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+ public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+ return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/CTDLExecutableExtensionFactory.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/CTDLExecutableExtensionFactory.java
new file mode 100644
index 000000000..4442c602a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/CTDLExecutableExtensionFactory.java
@@ -0,0 +1,28 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.ui;
+
+import org.eclipse.stem.model.ctdl.ui.internal.CTDLActivator;
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass.
+ */
+public class CTDLExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+ @Override
+ protected Bundle getBundle() {
+ return CTDLActivator.getInstance().getBundle();
+ }
+
+ @Override
+ protected Injector getInjector() {
+ return CTDLActivator.getInstance().getInjector(CTDLActivator.ORG_ECLIPSE_STEM_MODEL_CTDL_CTDL);
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/AbstractCTDLProposalProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/AbstractCTDLProposalProvider.java
new file mode 100644
index 000000000..31e67b76d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/AbstractCTDLProposalProvider.java
@@ -0,0 +1,185 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+/**
+ * Represents a generated, default implementation of interface {@link IProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them
+ * with a more concrete subtype.
+ */
+@SuppressWarnings("all")
+public class AbstractCTDLProposalProvider extends TerminalsProposalProvider {
+
+ public void completeCompartmentTransitionDefinitions_Metamodel(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCompartmentTransitionDefinitions_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMetamodelResource_Package(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMetamodelResource_Model(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMetamodelResource_Transition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTransitionBlock_Block(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTransition_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeTransition_Target(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCompartment_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBlock_Statements(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeBlock_Ret(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDefStatement_Varname(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeDefStatement_Expr(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeEvaluation_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeAddition_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeMultiplication_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeNegatedExpression_Negate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void completeNegatedExpression_Exp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePrimaryExpression_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePrimaryExpression_Exp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePrimaryExpression_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completePrimaryExpression_Args(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFunctionArgument_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFunctionReference_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeFunctionReference_Func(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeScopedVariableReference_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeLocalVariableReference_Obj(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeCompartmentReference_Obj(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeModelParamReference_Obj(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+ }
+ public void completeGlobalVariable_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+ }
+
+ public void complete_CompartmentTransitionDefinitions(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_MetamodelResource(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_TransitionBlock(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Transition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Compartment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Block(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_DefStatement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ReturnStatement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Evaluation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Expression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Addition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_Multiplication(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_NegatedExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_PrimaryExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_FunctionArgument(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_FunctionReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ScopedVariableReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_LocalVariableReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_CompartmentReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_ModelParamReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_GlobalVariable(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_BOOLEAN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_NUMBER(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+ public void complete_INT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+ // subclasses may override
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/CTDLParser.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/CTDLParser.java
new file mode 100644
index 000000000..078de86b6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/CTDLParser.java
@@ -0,0 +1,134 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+public class CTDLParser extends AbstractContentAssistParser {
+
+ @Inject
+ private CTDLGrammarAccess grammarAccess;
+
+ private Map<AbstractElement, String> nameMappings;
+
+ @Override
+ protected org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLParser createParser() {
+ org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLParser result = new org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLParser(null);
+ result.setGrammarAccess(grammarAccess);
+ return result;
+ }
+
+ @Override
+ protected String getRuleName(AbstractElement element) {
+ if (nameMappings == null) {
+ nameMappings = new HashMap<AbstractElement, String>() {
+ private static final long serialVersionUID = 1L;
+ {
+ put(grammarAccess.getAdditionAccess().getAlternatives_1_0(), "rule__Addition__Alternatives_1_0");
+ put(grammarAccess.getMultiplicationAccess().getAlternatives_1_0(), "rule__Multiplication__Alternatives_1_0");
+ put(grammarAccess.getPrimaryExpressionAccess().getAlternatives(), "rule__PrimaryExpression__Alternatives");
+ put(grammarAccess.getFunctionArgumentAccess().getAlternatives(), "rule__FunctionArgument__Alternatives");
+ put(grammarAccess.getFunctionReferenceAccess().getAlternatives(), "rule__FunctionReference__Alternatives");
+ put(grammarAccess.getScopedVariableReferenceAccess().getAlternatives(), "rule__ScopedVariableReference__Alternatives");
+ put(grammarAccess.getCompartmentReferenceAccess().getAlternatives(), "rule__CompartmentReference__Alternatives");
+ put(grammarAccess.getCompartmentTransitionDefinitionsAccess().getGroup(), "rule__CompartmentTransitionDefinitions__Group__0");
+ put(grammarAccess.getMetamodelResourceAccess().getGroup(), "rule__MetamodelResource__Group__0");
+ put(grammarAccess.getTransitionAccess().getGroup(), "rule__Transition__Group__0");
+ put(grammarAccess.getBlockAccess().getGroup(), "rule__Block__Group__0");
+ put(grammarAccess.getDefStatementAccess().getGroup(), "rule__DefStatement__Group__0");
+ put(grammarAccess.getReturnStatementAccess().getGroup(), "rule__ReturnStatement__Group__0");
+ put(grammarAccess.getEvaluationAccess().getGroup(), "rule__Evaluation__Group__0");
+ put(grammarAccess.getAdditionAccess().getGroup(), "rule__Addition__Group__0");
+ put(grammarAccess.getAdditionAccess().getGroup_1(), "rule__Addition__Group_1__0");
+ put(grammarAccess.getAdditionAccess().getGroup_1_0_0(), "rule__Addition__Group_1_0_0__0");
+ put(grammarAccess.getAdditionAccess().getGroup_1_0_1(), "rule__Addition__Group_1_0_1__0");
+ put(grammarAccess.getMultiplicationAccess().getGroup(), "rule__Multiplication__Group__0");
+ put(grammarAccess.getMultiplicationAccess().getGroup_1(), "rule__Multiplication__Group_1__0");
+ put(grammarAccess.getMultiplicationAccess().getGroup_1_0_0(), "rule__Multiplication__Group_1_0_0__0");
+ put(grammarAccess.getMultiplicationAccess().getGroup_1_0_1(), "rule__Multiplication__Group_1_0_1__0");
+ put(grammarAccess.getNegatedExpressionAccess().getGroup(), "rule__NegatedExpression__Group__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_0(), "rule__PrimaryExpression__Group_0__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_1(), "rule__PrimaryExpression__Group_1__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_2(), "rule__PrimaryExpression__Group_2__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2(), "rule__PrimaryExpression__Group_2_2__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2_2(), "rule__PrimaryExpression__Group_2_2_2__0");
+ put(grammarAccess.getPrimaryExpressionAccess().getGroup_3(), "rule__PrimaryExpression__Group_3__0");
+ put(grammarAccess.getFunctionArgumentAccess().getGroup_0(), "rule__FunctionArgument__Group_0__0");
+ put(grammarAccess.getFunctionArgumentAccess().getGroup_1(), "rule__FunctionArgument__Group_1__0");
+ put(grammarAccess.getFunctionReferenceAccess().getGroup_1(), "rule__FunctionReference__Group_1__0");
+ put(grammarAccess.getLocalVariableReferenceAccess().getGroup(), "rule__LocalVariableReference__Group__0");
+ put(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelAssignment_0(), "rule__CompartmentTransitionDefinitions__MetamodelAssignment_0");
+ put(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionAssignment_1(), "rule__CompartmentTransitionDefinitions__ExpressionAssignment_1");
+ put(grammarAccess.getMetamodelResourceAccess().getPackageAssignment_1(), "rule__MetamodelResource__PackageAssignment_1");
+ put(grammarAccess.getMetamodelResourceAccess().getModelAssignment_3(), "rule__MetamodelResource__ModelAssignment_3");
+ put(grammarAccess.getMetamodelResourceAccess().getTransitionAssignment_5(), "rule__MetamodelResource__TransitionAssignment_5");
+ put(grammarAccess.getTransitionBlockAccess().getBlockAssignment(), "rule__TransitionBlock__BlockAssignment");
+ put(grammarAccess.getTransitionAccess().getSourceAssignment_1(), "rule__Transition__SourceAssignment_1");
+ put(grammarAccess.getTransitionAccess().getTargetAssignment_3(), "rule__Transition__TargetAssignment_3");
+ put(grammarAccess.getCompartmentAccess().getNameAssignment(), "rule__Compartment__NameAssignment");
+ put(grammarAccess.getBlockAccess().getStatementsAssignment_1(), "rule__Block__StatementsAssignment_1");
+ put(grammarAccess.getBlockAccess().getRetAssignment_2(), "rule__Block__RetAssignment_2");
+ put(grammarAccess.getDefStatementAccess().getVarnameAssignment_0(), "rule__DefStatement__VarnameAssignment_0");
+ put(grammarAccess.getDefStatementAccess().getExprAssignment_2(), "rule__DefStatement__ExprAssignment_2");
+ put(grammarAccess.getEvaluationAccess().getExpressionAssignment_0(), "rule__Evaluation__ExpressionAssignment_0");
+ put(grammarAccess.getAdditionAccess().getRightAssignment_1_1(), "rule__Addition__RightAssignment_1_1");
+ put(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1(), "rule__Multiplication__RightAssignment_1_1");
+ put(grammarAccess.getNegatedExpressionAccess().getNegateAssignment_1(), "rule__NegatedExpression__NegateAssignment_1");
+ put(grammarAccess.getNegatedExpressionAccess().getExpAssignment_2(), "rule__NegatedExpression__ExpAssignment_2");
+ put(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_0_1(), "rule__PrimaryExpression__ValueAssignment_0_1");
+ put(grammarAccess.getPrimaryExpressionAccess().getExpAssignment_1_1(), "rule__PrimaryExpression__ExpAssignment_1_1");
+ put(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_2_1(), "rule__PrimaryExpression__RefAssignment_2_1");
+ put(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_1(), "rule__PrimaryExpression__ArgsAssignment_2_2_1");
+ put(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_2_1(), "rule__PrimaryExpression__ArgsAssignment_2_2_2_1");
+ put(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_3_1(), "rule__PrimaryExpression__RefAssignment_3_1");
+ put(grammarAccess.getFunctionArgumentAccess().getValueAssignment_0_1(), "rule__FunctionArgument__ValueAssignment_0_1");
+ put(grammarAccess.getFunctionArgumentAccess().getValueAssignment_1_1(), "rule__FunctionArgument__ValueAssignment_1_1");
+ put(grammarAccess.getFunctionReferenceAccess().getNameAssignment_0(), "rule__FunctionReference__NameAssignment_0");
+ put(grammarAccess.getFunctionReferenceAccess().getFuncAssignment_1_1(), "rule__FunctionReference__FuncAssignment_1_1");
+ put(grammarAccess.getScopedVariableReferenceAccess().getNameAssignment_0(), "rule__ScopedVariableReference__NameAssignment_0");
+ put(grammarAccess.getLocalVariableReferenceAccess().getObjAssignment_1(), "rule__LocalVariableReference__ObjAssignment_1");
+ put(grammarAccess.getCompartmentReferenceAccess().getObjAssignment_0(), "rule__CompartmentReference__ObjAssignment_0");
+ put(grammarAccess.getModelParamReferenceAccess().getObjAssignment(), "rule__ModelParamReference__ObjAssignment");
+ put(grammarAccess.getGlobalVariableAccess().getNameAssignment(), "rule__GlobalVariable__NameAssignment");
+ }
+ };
+ }
+ return nameMappings.get(element);
+ }
+
+ @Override
+ protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+ try {
+ org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLParser typedParser = (org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal.InternalCTDLParser) parser;
+ typedParser.entryRuleCompartmentTransitionDefinitions();
+ return typedParser.getFollowElements();
+ } catch(RecognitionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ @Override
+ protected String[] getInitialHiddenTokens() {
+ return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+ }
+
+ public CTDLGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(CTDLGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/PartialCTDLContentAssistParser.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/PartialCTDLContentAssistParser.java
new file mode 100644
index 000000000..bca9868f3
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/PartialCTDLContentAssistParser.java
@@ -0,0 +1,38 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+public class PartialCTDLContentAssistParser extends CTDLParser implements IPartialContentAssistParser {
+
+ private AbstractRule rule;
+
+ public void initializeFor(AbstractRule rule) {
+ this.rule = rule;
+ }
+
+ @Override
+ protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+ if (rule == null || rule.eIsProxy())
+ return Collections.emptyList();
+ String methodName = "entryRule" + rule.getName();
+ PolymorphicDispatcher<Collection<FollowElement>> dispatcher =
+ new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+ dispatcher.invoke();
+ return parser.getFollowElements();
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g
new file mode 100644
index 000000000..9f33e077e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g
@@ -0,0 +1,2487 @@
+/*
+* generated by Xtext
+*/
+grammar InternalCTDL;
+
+options {
+ superClass=AbstractInternalContentAssistParser;
+
+}
+
+@lexer::header {
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+
+}
+
+@parser::members {
+
+ private CTDLGrammarAccess grammarAccess;
+
+ public void setGrammarAccess(CTDLGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected Grammar getGrammar() {
+ return grammarAccess.getGrammar();
+ }
+
+ @Override
+ protected String getValueForTokenName(String tokenName) {
+ return tokenName;
+ }
+
+}
+
+
+
+
+// Entry rule entryRuleCompartmentTransitionDefinitions
+entryRuleCompartmentTransitionDefinitions
+:
+{ before(grammarAccess.getCompartmentTransitionDefinitionsRule()); }
+ ruleCompartmentTransitionDefinitions
+{ after(grammarAccess.getCompartmentTransitionDefinitionsRule()); }
+ EOF
+;
+
+// Rule CompartmentTransitionDefinitions
+ruleCompartmentTransitionDefinitions
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getGroup()); }
+(rule__CompartmentTransitionDefinitions__Group__0)
+{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTransitionBlock
+entryRuleTransitionBlock
+:
+{ before(grammarAccess.getTransitionBlockRule()); }
+ ruleTransitionBlock
+{ after(grammarAccess.getTransitionBlockRule()); }
+ EOF
+;
+
+// Rule TransitionBlock
+ruleTransitionBlock
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getTransitionBlockAccess().getBlockAssignment()); }
+(rule__TransitionBlock__BlockAssignment)
+{ after(grammarAccess.getTransitionBlockAccess().getBlockAssignment()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleBlock
+entryRuleBlock
+:
+{ before(grammarAccess.getBlockRule()); }
+ ruleBlock
+{ after(grammarAccess.getBlockRule()); }
+ EOF
+;
+
+// Rule Block
+ruleBlock
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getBlockAccess().getGroup()); }
+(rule__Block__Group__0)
+{ after(grammarAccess.getBlockAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefStatement
+entryRuleDefStatement
+:
+{ before(grammarAccess.getDefStatementRule()); }
+ ruleDefStatement
+{ after(grammarAccess.getDefStatementRule()); }
+ EOF
+;
+
+// Rule DefStatement
+ruleDefStatement
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getDefStatementAccess().getGroup()); }
+(rule__DefStatement__Group__0)
+{ after(grammarAccess.getDefStatementAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleReturnStatement
+entryRuleReturnStatement
+:
+{ before(grammarAccess.getReturnStatementRule()); }
+ ruleReturnStatement
+{ after(grammarAccess.getReturnStatementRule()); }
+ EOF
+;
+
+// Rule ReturnStatement
+ruleReturnStatement
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getReturnStatementAccess().getGroup()); }
+(rule__ReturnStatement__Group__0)
+{ after(grammarAccess.getReturnStatementAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEvaluation
+entryRuleEvaluation
+:
+{ before(grammarAccess.getEvaluationRule()); }
+ ruleEvaluation
+{ after(grammarAccess.getEvaluationRule()); }
+ EOF
+;
+
+// Rule Evaluation
+ruleEvaluation
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getEvaluationAccess().getGroup()); }
+(rule__Evaluation__Group__0)
+{ after(grammarAccess.getEvaluationAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpression
+entryRuleExpression
+:
+{ before(grammarAccess.getExpressionRule()); }
+ ruleExpression
+{ after(grammarAccess.getExpressionRule()); }
+ EOF
+;
+
+// Rule Expression
+ruleExpression
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getExpressionAccess().getAdditionParserRuleCall()); }
+ ruleAddition
+{ after(grammarAccess.getExpressionAccess().getAdditionParserRuleCall()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAddition
+entryRuleAddition
+:
+{ before(grammarAccess.getAdditionRule()); }
+ ruleAddition
+{ after(grammarAccess.getAdditionRule()); }
+ EOF
+;
+
+// Rule Addition
+ruleAddition
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getAdditionAccess().getGroup()); }
+(rule__Addition__Group__0)
+{ after(grammarAccess.getAdditionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplication
+entryRuleMultiplication
+:
+{ before(grammarAccess.getMultiplicationRule()); }
+ ruleMultiplication
+{ after(grammarAccess.getMultiplicationRule()); }
+ EOF
+;
+
+// Rule Multiplication
+ruleMultiplication
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getMultiplicationAccess().getGroup()); }
+(rule__Multiplication__Group__0)
+{ after(grammarAccess.getMultiplicationAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNegatedExpression
+entryRuleNegatedExpression
+:
+{ before(grammarAccess.getNegatedExpressionRule()); }
+ ruleNegatedExpression
+{ after(grammarAccess.getNegatedExpressionRule()); }
+ EOF
+;
+
+// Rule NegatedExpression
+ruleNegatedExpression
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getGroup()); }
+(rule__NegatedExpression__Group__0)
+{ after(grammarAccess.getNegatedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimaryExpression
+entryRulePrimaryExpression
+:
+{ before(grammarAccess.getPrimaryExpressionRule()); }
+ rulePrimaryExpression
+{ after(grammarAccess.getPrimaryExpressionRule()); }
+ EOF
+;
+
+// Rule PrimaryExpression
+rulePrimaryExpression
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); }
+(rule__PrimaryExpression__Alternatives)
+{ after(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFunctionArgument
+entryRuleFunctionArgument
+:
+{ before(grammarAccess.getFunctionArgumentRule()); }
+ ruleFunctionArgument
+{ after(grammarAccess.getFunctionArgumentRule()); }
+ EOF
+;
+
+// Rule FunctionArgument
+ruleFunctionArgument
+ @init {
+ int stackSize = keepStackSize();
+ }
+ :
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getAlternatives()); }
+(rule__FunctionArgument__Alternatives)
+{ after(grammarAccess.getFunctionArgumentAccess().getAlternatives()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Addition__Alternatives_1_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getGroup_1_0_0()); }
+(rule__Addition__Group_1_0_0__0)
+{ after(grammarAccess.getAdditionAccess().getGroup_1_0_0()); }
+)
+
+ |(
+{ before(grammarAccess.getAdditionAccess().getGroup_1_0_1()); }
+(rule__Addition__Group_1_0_1__0)
+{ after(grammarAccess.getAdditionAccess().getGroup_1_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Alternatives_1_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getGroup_1_0_0()); }
+(rule__Multiplication__Group_1_0_0__0)
+{ after(grammarAccess.getMultiplicationAccess().getGroup_1_0_0()); }
+)
+
+ |(
+{ before(grammarAccess.getMultiplicationAccess().getGroup_1_0_1()); }
+(rule__Multiplication__Group_1_0_1__0)
+{ after(grammarAccess.getMultiplicationAccess().getGroup_1_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_0()); }
+(rule__PrimaryExpression__Group_0__0)
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_0()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_1()); }
+(rule__PrimaryExpression__Group_1__0)
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_1()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2()); }
+(rule__PrimaryExpression__Group_2__0)
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2()); }
+)
+
+ |(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_3()); }
+(rule__PrimaryExpression__Group_3__0)
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__Alternatives
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getGroup_0()); }
+(rule__FunctionArgument__Group_0__0)
+{ after(grammarAccess.getFunctionArgumentAccess().getGroup_0()); }
+)
+
+ |(
+{ before(grammarAccess.getFunctionArgumentAccess().getGroup_1()); }
+(rule__FunctionArgument__Group_1__0)
+{ after(grammarAccess.getFunctionArgumentAccess().getGroup_1()); }
+)
+
+ |(
+{ before(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2()); }
+ ruleExpression
+{ after(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CompartmentTransitionDefinitions__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CompartmentTransitionDefinitions__Group__0__Impl
+ rule__CompartmentTransitionDefinitions__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CompartmentTransitionDefinitions__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelAssignment_0()); }
+(rule__CompartmentTransitionDefinitions__MetamodelAssignment_0)?
+{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__CompartmentTransitionDefinitions__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__CompartmentTransitionDefinitions__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CompartmentTransitionDefinitions__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionAssignment_1()); }
+(rule__CompartmentTransitionDefinitions__ExpressionAssignment_1)
+{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Block__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Block__Group__0__Impl
+ rule__Block__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Block__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBlockAccess().getBlockAction_0()); }
+(
+
+)
+{ after(grammarAccess.getBlockAccess().getBlockAction_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Block__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Block__Group__1__Impl
+ rule__Block__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Block__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBlockAccess().getStatementsAssignment_1()); }
+(rule__Block__StatementsAssignment_1)*
+{ after(grammarAccess.getBlockAccess().getStatementsAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Block__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Block__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Block__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBlockAccess().getRetAssignment_2()); }
+(rule__Block__RetAssignment_2)
+{ after(grammarAccess.getBlockAccess().getRetAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DefStatement__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DefStatement__Group__0__Impl
+ rule__DefStatement__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DefStatement__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDefStatementAccess().getVarnameAssignment_0()); }
+(rule__DefStatement__VarnameAssignment_0)
+{ after(grammarAccess.getDefStatementAccess().getVarnameAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DefStatement__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DefStatement__Group__1__Impl
+ rule__DefStatement__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DefStatement__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1()); }
+
+ '='
+
+{ after(grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__DefStatement__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__DefStatement__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DefStatement__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDefStatementAccess().getExprAssignment_2()); }
+(rule__DefStatement__ExprAssignment_2)
+{ after(grammarAccess.getDefStatementAccess().getExprAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ReturnStatement__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ReturnStatement__Group__0__Impl
+ rule__ReturnStatement__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ReturnStatement__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getReturnStatementAccess().getDeltaKeyword_0()); }
+
+ 'delta'
+
+{ after(grammarAccess.getReturnStatementAccess().getDeltaKeyword_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__ReturnStatement__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__ReturnStatement__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__ReturnStatement__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1()); }
+ ruleEvaluation
+{ after(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Evaluation__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Evaluation__Group__0__Impl
+ rule__Evaluation__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Evaluation__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEvaluationAccess().getExpressionAssignment_0()); }
+(rule__Evaluation__ExpressionAssignment_0)
+{ after(grammarAccess.getEvaluationAccess().getExpressionAssignment_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Evaluation__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Evaluation__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Evaluation__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEvaluationAccess().getSemicolonKeyword_1()); }
+
+ ';'
+
+{ after(grammarAccess.getEvaluationAccess().getSemicolonKeyword_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Addition__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group__0__Impl
+ rule__Addition__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0()); }
+ ruleMultiplication
+{ after(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Addition__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getGroup_1()); }
+(rule__Addition__Group_1__0)*
+{ after(grammarAccess.getAdditionAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Addition__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1__0__Impl
+ rule__Addition__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getAlternatives_1_0()); }
+(rule__Addition__Alternatives_1_0)
+{ after(grammarAccess.getAdditionAccess().getAlternatives_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Addition__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getRightAssignment_1_1()); }
+(rule__Addition__RightAssignment_1_1)
+{ after(grammarAccess.getAdditionAccess().getRightAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Addition__Group_1_0_0__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1_0_0__0__Impl
+ rule__Addition__Group_1_0_0__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1_0_0__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Addition__Group_1_0_0__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1_0_0__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1_0_0__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1()); }
+
+ '+'
+
+{ after(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Addition__Group_1_0_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1_0_1__0__Impl
+ rule__Addition__Group_1_0_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1_0_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Addition__Group_1_0_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Addition__Group_1_0_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__Group_1_0_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1()); }
+
+ '-'
+
+{ after(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Multiplication__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group__0__Impl
+ rule__Multiplication__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0()); }
+ ruleNegatedExpression
+{ after(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Multiplication__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getGroup_1()); }
+(rule__Multiplication__Group_1__0)*
+{ after(grammarAccess.getMultiplicationAccess().getGroup_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Multiplication__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1__0__Impl
+ rule__Multiplication__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getAlternatives_1_0()); }
+(rule__Multiplication__Alternatives_1_0)
+{ after(grammarAccess.getMultiplicationAccess().getAlternatives_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Multiplication__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1()); }
+(rule__Multiplication__RightAssignment_1_1)
+{ after(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Multiplication__Group_1_0_0__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1_0_0__0__Impl
+ rule__Multiplication__Group_1_0_0__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1_0_0__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Multiplication__Group_1_0_0__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1_0_0__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1_0_0__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1()); }
+
+ '*'
+
+{ after(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Multiplication__Group_1_0_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1_0_1__0__Impl
+ rule__Multiplication__Group_1_0_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1_0_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__Multiplication__Group_1_0_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__Multiplication__Group_1_0_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__Group_1_0_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1()); }
+
+ '/'
+
+{ after(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NegatedExpression__Group__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__NegatedExpression__Group__0__Impl
+ rule__NegatedExpression__Group__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NegatedExpression__Group__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__NegatedExpression__Group__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__NegatedExpression__Group__1__Impl
+ rule__NegatedExpression__Group__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NegatedExpression__Group__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getNegateAssignment_1()); }
+(rule__NegatedExpression__NegateAssignment_1)?
+{ after(grammarAccess.getNegatedExpressionAccess().getNegateAssignment_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__NegatedExpression__Group__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__NegatedExpression__Group__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NegatedExpression__Group__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getExpAssignment_2()); }
+(rule__NegatedExpression__ExpAssignment_2)
+{ after(grammarAccess.getNegatedExpressionAccess().getExpAssignment_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrimaryExpression__Group_0__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_0__0__Impl
+ rule__PrimaryExpression__Group_0__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_0__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_0__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_0__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_0__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_0_1()); }
+(rule__PrimaryExpression__ValueAssignment_0_1)
+{ after(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PrimaryExpression__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_1__0__Impl
+ rule__PrimaryExpression__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0()); }
+
+ '('
+
+{ after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_1__1__Impl
+ rule__PrimaryExpression__Group_1__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getExpAssignment_1_1()); }
+(rule__PrimaryExpression__ExpAssignment_1_1)
+{ after(grammarAccess.getPrimaryExpressionAccess().getExpAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_1__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_1__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_1__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2()); }
+
+ ')'
+
+{ after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrimaryExpression__Group_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2__0__Impl
+ rule__PrimaryExpression__Group_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0()); }
+(
+
+)
+{ after(grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2__1__Impl
+ rule__PrimaryExpression__Group_2__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_2_1()); }
+(rule__PrimaryExpression__RefAssignment_2_1)
+{ after(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2__2__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2()); }
+(rule__PrimaryExpression__Group_2_2__0)
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrimaryExpression__Group_2_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2__0__Impl
+ rule__PrimaryExpression__Group_2_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0()); }
+
+ '('
+
+{ after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2__1__Impl
+ rule__PrimaryExpression__Group_2_2__2
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_1()); }
+(rule__PrimaryExpression__ArgsAssignment_2_2_1)?
+{ after(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2_2__2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2__2__Impl
+ rule__PrimaryExpression__Group_2_2__3
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2__2__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2_2()); }
+(rule__PrimaryExpression__Group_2_2_2__0)*
+{ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2_2()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2_2__3
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2__3__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2__3__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3()); }
+
+ ')'
+
+{ after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__PrimaryExpression__Group_2_2_2__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2_2__0__Impl
+ rule__PrimaryExpression__Group_2_2_2__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2_2__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0()); }
+
+ ','
+
+{ after(grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_2_2_2__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_2_2_2__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_2_2_2__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_2_1()); }
+(rule__PrimaryExpression__ArgsAssignment_2_2_2_1)
+{ after(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_2_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PrimaryExpression__Group_3__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_3__0__Impl
+ rule__PrimaryExpression__Group_3__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_3__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0()); }
+(
+
+)
+{ after(grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__PrimaryExpression__Group_3__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__PrimaryExpression__Group_3__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__Group_3__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_3_1()); }
+(rule__PrimaryExpression__RefAssignment_3_1)
+{ after(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_3_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FunctionArgument__Group_0__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FunctionArgument__Group_0__0__Impl
+ rule__FunctionArgument__Group_0__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__Group_0__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FunctionArgument__Group_0__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FunctionArgument__Group_0__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__Group_0__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getValueAssignment_0_1()); }
+(rule__FunctionArgument__ValueAssignment_0_1)
+{ after(grammarAccess.getFunctionArgumentAccess().getValueAssignment_0_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FunctionArgument__Group_1__0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FunctionArgument__Group_1__0__Impl
+ rule__FunctionArgument__Group_1__1
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__Group_1__0__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+rule__FunctionArgument__Group_1__1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+ rule__FunctionArgument__Group_1__1__Impl
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__Group_1__1__Impl
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getValueAssignment_1_1()); }
+(rule__FunctionArgument__ValueAssignment_1_1)
+{ after(grammarAccess.getFunctionArgumentAccess().getValueAssignment_1_1()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+rule__CompartmentTransitionDefinitions__MetamodelAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0()); }
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1()); }
+ RULE_ID{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__CompartmentTransitionDefinitions__ExpressionAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0()); }
+ ruleTransitionBlock{ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+rule__TransitionBlock__BlockAssignment
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0()); }
+ ruleBlock{ after(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+rule__Block__StatementsAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0()); }
+ ruleDefStatement{ after(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Block__RetAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0()); }
+ ruleReturnStatement{ after(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DefStatement__VarnameAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0()); }
+ RULE_ID{ after(grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__DefStatement__ExprAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0()); }
+ ruleEvaluation{ after(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Evaluation__ExpressionAssignment_0
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0()); }
+ ruleExpression{ after(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Addition__RightAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0()); }
+ ruleMultiplication{ after(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__Multiplication__RightAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0()); }
+ ruleNegatedExpression{ after(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NegatedExpression__NegateAssignment_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0()); }
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0()); }
+
+ '-'
+
+{ after(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__NegatedExpression__ExpAssignment_2
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0()); }
+ rulePrimaryExpression{ after(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__ValueAssignment_0_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0()); }
+ RULE_NUMBER{ after(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__ExpAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0()); }
+ ruleExpression{ after(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__RefAssignment_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0()); }
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceIDTerminalRuleCall_2_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceIDTerminalRuleCall_2_1_0_1()); }
+)
+{ after(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__ArgsAssignment_2_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0()); }
+ ruleFunctionArgument{ after(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__ArgsAssignment_2_2_2_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0()); }
+ ruleFunctionArgument{ after(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpression__RefAssignment_3_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0()); }
+(
+{ before(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1()); }
+ RULE_ID{ after(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1()); }
+)
+{ after(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__ValueAssignment_0_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0()); }
+ RULE_BOOLEAN{ after(grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+rule__FunctionArgument__ValueAssignment_1_1
+ @init {
+ int stackSize = keepStackSize();
+ }
+:
+(
+{ before(grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0()); }
+ RULE_STRING{ after(grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0()); }
+)
+
+;
+finally {
+ restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+RULE_BOOLEAN : ('true'|'false');
+
+RULE_NUMBER : (('0'..'9')+ ('.' ('0'..'9')*)?|'.' ('0'..'9')+) (('e'|'E') ('+'|'-')? ('0'..'9')+)?;
+
+RULE_INT : 'this one has been deactivated';
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.tokens b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.tokens
new file mode 100644
index 000000000..090f73453
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.tokens
@@ -0,0 +1,29 @@
+RULE_BOOLEAN=6
+RULE_ID=4
+T__22=22
+RULE_ANY_OTHER=12
+T__21=21
+T__20=20
+RULE_SL_COMMENT=10
+RULE_ML_COMMENT=9
+T__19=19
+RULE_STRING=7
+T__16=16
+T__15=15
+T__18=18
+T__17=17
+RULE_NUMBER=5
+T__14=14
+T__13=13
+RULE_INT=8
+RULE_WS=11
+';'=15
+'delta'=14
+'='=13
+'/'=19
+'('=20
+'*'=18
+'-'=17
+'+'=16
+','=22
+')'=21
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLLexer.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLLexer.java
new file mode 100644
index 000000000..9fa4440c1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLLexer.java
@@ -0,0 +1,1368 @@
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+@SuppressWarnings("all")
+public class InternalCTDLLexer extends Lexer {
+ public static final int RULE_BOOLEAN=6;
+ public static final int RULE_ID=4;
+ public static final int T__22=22;
+ public static final int RULE_ANY_OTHER=12;
+ public static final int T__21=21;
+ public static final int T__20=20;
+ public static final int EOF=-1;
+ public static final int RULE_SL_COMMENT=10;
+ public static final int RULE_ML_COMMENT=9;
+ public static final int T__19=19;
+ public static final int RULE_STRING=7;
+ public static final int T__16=16;
+ public static final int T__15=15;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_NUMBER=5;
+ public static final int T__14=14;
+ public static final int T__13=13;
+ public static final int RULE_INT=8;
+ public static final int RULE_WS=11;
+
+ // delegates
+ // delegators
+
+ public InternalCTDLLexer() {;}
+ public InternalCTDLLexer(CharStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalCTDLLexer(CharStream input, RecognizerSharedState state) {
+ super(input,state);
+
+ }
+ public String getGrammarFileName() { return "../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g"; }
+
+ // $ANTLR start "T__13"
+ public final void mT__13() throws RecognitionException {
+ try {
+ int _type = T__13;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:11:7: ( '=' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:11:9: '='
+ {
+ match('=');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__13"
+
+ // $ANTLR start "T__14"
+ public final void mT__14() throws RecognitionException {
+ try {
+ int _type = T__14;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:12:7: ( 'delta' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:12:9: 'delta'
+ {
+ match("delta");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__14"
+
+ // $ANTLR start "T__15"
+ public final void mT__15() throws RecognitionException {
+ try {
+ int _type = T__15;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:13:7: ( ';' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:13:9: ';'
+ {
+ match(';');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__15"
+
+ // $ANTLR start "T__16"
+ public final void mT__16() throws RecognitionException {
+ try {
+ int _type = T__16;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:14:7: ( '+' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:14:9: '+'
+ {
+ match('+');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__16"
+
+ // $ANTLR start "T__17"
+ public final void mT__17() throws RecognitionException {
+ try {
+ int _type = T__17;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:15:7: ( '-' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:15:9: '-'
+ {
+ match('-');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__17"
+
+ // $ANTLR start "T__18"
+ public final void mT__18() throws RecognitionException {
+ try {
+ int _type = T__18;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:16:7: ( '*' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:16:9: '*'
+ {
+ match('*');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__18"
+
+ // $ANTLR start "T__19"
+ public final void mT__19() throws RecognitionException {
+ try {
+ int _type = T__19;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:17:7: ( '/' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:17:9: '/'
+ {
+ match('/');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__19"
+
+ // $ANTLR start "T__20"
+ public final void mT__20() throws RecognitionException {
+ try {
+ int _type = T__20;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:18:7: ( '(' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:18:9: '('
+ {
+ match('(');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__20"
+
+ // $ANTLR start "T__21"
+ public final void mT__21() throws RecognitionException {
+ try {
+ int _type = T__21;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:19:7: ( ')' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:19:9: ')'
+ {
+ match(')');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__21"
+
+ // $ANTLR start "T__22"
+ public final void mT__22() throws RecognitionException {
+ try {
+ int _type = T__22;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:20:7: ( ',' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:20:9: ','
+ {
+ match(',');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__22"
+
+ // $ANTLR start "RULE_BOOLEAN"
+ public final void mRULE_BOOLEAN() throws RecognitionException {
+ try {
+ int _type = RULE_BOOLEAN;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2469:14: ( ( 'true' | 'false' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2469:16: ( 'true' | 'false' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2469:16: ( 'true' | 'false' )
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='t') ) {
+ alt1=1;
+ }
+ else if ( (LA1_0=='f') ) {
+ alt1=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 0, input);
+
+ throw nvae;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2469:17: 'true'
+ {
+ match("true");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2469:24: 'false'
+ {
+ match("false");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_BOOLEAN"
+
+ // $ANTLR start "RULE_NUMBER"
+ public final void mRULE_NUMBER() throws RecognitionException {
+ try {
+ int _type = RULE_NUMBER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:13: ( ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ ) ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )? )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:15: ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ ) ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )?
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:15: ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+ alt6=1;
+ }
+ else if ( (LA6_0=='.') ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:16: ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )?
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:16: ( '0' .. '9' )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:17: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt2 >= 1 ) break loop2;
+ EarlyExitException eee =
+ new EarlyExitException(2, input);
+ throw eee;
+ }
+ cnt2++;
+ } while (true);
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:28: ( '.' ( '0' .. '9' )* )?
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='.') ) {
+ alt4=1;
+ }
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:29: '.' ( '0' .. '9' )*
+ {
+ match('.');
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:33: ( '0' .. '9' )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:34: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:47: '.' ( '0' .. '9' )+
+ {
+ match('.');
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:51: ( '0' .. '9' )+
+ int cnt5=0;
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( ((LA5_0>='0' && LA5_0<='9')) ) {
+ alt5=1;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:52: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt5 >= 1 ) break loop5;
+ EarlyExitException eee =
+ new EarlyExitException(5, input);
+ throw eee;
+ }
+ cnt5++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:64: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='E'||LA9_0=='e') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:65: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+ {
+ if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:75: ( '+' | '-' )?
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='+'||LA7_0=='-') ) {
+ alt7=1;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:
+ {
+ if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:86: ( '0' .. '9' )+
+ int cnt8=0;
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2471:87: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt8 >= 1 ) break loop8;
+ EarlyExitException eee =
+ new EarlyExitException(8, input);
+ throw eee;
+ }
+ cnt8++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_NUMBER"
+
+ // $ANTLR start "RULE_INT"
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2473:10: ( 'this one has been deactivated' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2473:12: 'this one has been deactivated'
+ {
+ match("this one has been deactivated");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_INT"
+
+ // $ANTLR start "RULE_ID"
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2475:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2475:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2475:11: ( '^' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='^') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2475:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2475:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>='0' && LA11_0<='9')||(LA11_0>='A' && LA11_0<='Z')||LA11_0=='_'||(LA11_0>='a' && LA11_0<='z')) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ID"
+
+ // $ANTLR start "RULE_STRING"
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0=='\"') ) {
+ alt14=1;
+ }
+ else if ( (LA14_0=='\'') ) {
+ alt14=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 14, 0, input);
+
+ throw nvae;
+ }
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+ {
+ match('\"');
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop12:
+ do {
+ int alt12=3;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='\\') ) {
+ alt12=1;
+ }
+ else if ( ((LA12_0>='\u0000' && LA12_0<='!')||(LA12_0>='#' && LA12_0<='[')||(LA12_0>=']' && LA12_0<='\uFFFF')) ) {
+ alt12=2;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:66: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+ {
+ match('\'');
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop13:
+ do {
+ int alt13=3;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0=='\\') ) {
+ alt13=1;
+ }
+ else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+ alt13=2;
+ }
+
+
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2477:137: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop13;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_STRING"
+
+ // $ANTLR start "RULE_ML_COMMENT"
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2479:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2479:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2479:24: ( options {greedy=false; } : . )*
+ loop15:
+ do {
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0=='*') ) {
+ int LA15_1 = input.LA(2);
+
+ if ( (LA15_1=='/') ) {
+ alt15=2;
+ }
+ else if ( ((LA15_1>='\u0000' && LA15_1<='.')||(LA15_1>='0' && LA15_1<='\uFFFF')) ) {
+ alt15=1;
+ }
+
+
+ }
+ else if ( ((LA15_0>='\u0000' && LA15_0<=')')||(LA15_0>='+' && LA15_0<='\uFFFF')) ) {
+ alt15=1;
+ }
+
+
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2479:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop15;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ML_COMMENT"
+
+ // $ANTLR start "RULE_SL_COMMENT"
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop16:
+ do {
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( ((LA16_0>='\u0000' && LA16_0<='\t')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\uFFFF')) ) {
+ alt16=1;
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:40: ( ( '\\r' )? '\\n' )?
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0=='\n'||LA18_0=='\r') ) {
+ alt18=1;
+ }
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:41: ( '\\r' )? '\\n'
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:41: ( '\\r' )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0=='\r') ) {
+ alt17=1;
+ }
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2481:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_SL_COMMENT"
+
+ // $ANTLR start "RULE_WS"
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2483:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2483:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2483:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt19=0;
+ loop19:
+ do {
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( ((LA19_0>='\t' && LA19_0<='\n')||LA19_0=='\r'||LA19_0==' ') ) {
+ alt19=1;
+ }
+
+
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ if ( cnt19 >= 1 ) break loop19;
+ EarlyExitException eee =
+ new EarlyExitException(19, input);
+ throw eee;
+ }
+ cnt19++;
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_WS"
+
+ // $ANTLR start "RULE_ANY_OTHER"
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2485:16: ( . )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2485:18: .
+ {
+ matchAny();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ANY_OTHER"
+
+ public void mTokens() throws RecognitionException {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_BOOLEAN | RULE_NUMBER | RULE_INT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt20=19;
+ alt20 = dfa20.predict(input);
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:10: T__13
+ {
+ mT__13();
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:16: T__14
+ {
+ mT__14();
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:22: T__15
+ {
+ mT__15();
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:28: T__16
+ {
+ mT__16();
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:34: T__17
+ {
+ mT__17();
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:40: T__18
+ {
+ mT__18();
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:46: T__19
+ {
+ mT__19();
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:52: T__20
+ {
+ mT__20();
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:58: T__21
+ {
+ mT__21();
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:64: T__22
+ {
+ mT__22();
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:70: RULE_BOOLEAN
+ {
+ mRULE_BOOLEAN();
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:83: RULE_NUMBER
+ {
+ mRULE_NUMBER();
+
+ }
+ break;
+ case 13 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:95: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 14 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:104: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 15 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:112: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 16 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:124: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 17 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:140: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 18 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:156: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 19 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1:164: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+ protected DFA20 dfa20 = new DFA20(this);
+ static final String DFA20_eotS =
+ "\2\uffff\1\27\4\uffff\1\36\3\uffff\2\27\1\uffff\2\24\1\uffff\2\24"+
+ "\3\uffff\1\27\13\uffff\3\27\3\uffff\5\27\1\61\2\27\1\64\2\uffff"+
+ "\1\61\1\uffff";
+ static final String DFA20_eofS =
+ "\65\uffff";
+ static final String DFA20_minS =
+ "\1\0\1\uffff\1\145\4\uffff\1\52\3\uffff\1\150\1\141\1\uffff\1\60"+
+ "\1\101\1\uffff\2\0\3\uffff\1\154\13\uffff\1\165\1\151\1\154\3\uffff"+
+ "\1\164\1\145\2\163\1\141\1\60\1\40\1\145\1\60\2\uffff\1\60\1\uffff";
+ static final String DFA20_maxS =
+ "\1\uffff\1\uffff\1\145\4\uffff\1\57\3\uffff\1\162\1\141\1\uffff"+
+ "\1\71\1\172\1\uffff\2\uffff\3\uffff\1\154\13\uffff\1\165\1\151\1"+
+ "\154\3\uffff\1\164\1\145\2\163\1\141\1\172\1\40\1\145\1\172\2\uffff"+
+ "\1\172\1\uffff";
+ static final String DFA20_acceptS =
+ "\1\uffff\1\1\1\uffff\1\3\1\4\1\5\1\6\1\uffff\1\10\1\11\1\12\2\uffff"+
+ "\1\14\2\uffff\1\16\2\uffff\1\22\1\23\1\1\1\uffff\1\16\1\3\1\4\1"+
+ "\5\1\6\1\20\1\21\1\7\1\10\1\11\1\12\3\uffff\1\14\1\17\1\22\11\uffff"+
+ "\1\13\1\15\1\uffff\1\2";
+ static final String DFA20_specialS =
+ "\1\2\20\uffff\1\1\1\0\42\uffff}>";
+ static final String[] DFA20_transitionS = {
+ "\11\24\2\23\2\24\1\23\22\24\1\23\1\24\1\21\4\24\1\22\1\10\1"+
+ "\11\1\6\1\4\1\12\1\5\1\16\1\7\12\15\1\24\1\3\1\24\1\1\3\24\32"+
+ "\20\3\24\1\17\1\20\1\24\3\20\1\2\1\20\1\14\15\20\1\13\6\20\uff85"+
+ "\24",
+ "",
+ "\1\26",
+ "",
+ "",
+ "",
+ "",
+ "\1\34\4\uffff\1\35",
+ "",
+ "",
+ "",
+ "\1\43\11\uffff\1\42",
+ "\1\44",
+ "",
+ "\12\45",
+ "\32\27\4\uffff\1\27\1\uffff\32\27",
+ "",
+ "\0\46",
+ "\0\46",
+ "",
+ "",
+ "",
+ "\1\50",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\51",
+ "\1\52",
+ "\1\53",
+ "",
+ "",
+ "",
+ "\1\54",
+ "\1\55",
+ "\1\56",
+ "\1\57",
+ "\1\60",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ "\1\62",
+ "\1\63",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ "",
+ "",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ ""
+ };
+
+ static final short[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
+ static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
+ static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
+ static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
+ static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
+ static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
+ static final short[][] DFA20_transition;
+
+ static {
+ int numStates = DFA20_transitionS.length;
+ DFA20_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
+ }
+ }
+
+ class DFA20 extends DFA {
+
+ public DFA20(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 20;
+ this.eot = DFA20_eot;
+ this.eof = DFA20_eof;
+ this.min = DFA20_min;
+ this.max = DFA20_max;
+ this.accept = DFA20_accept;
+ this.special = DFA20_special;
+ this.transition = DFA20_transition;
+ }
+ public String getDescription() {
+ return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_BOOLEAN | RULE_NUMBER | RULE_INT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+ }
+ public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+ IntStream input = _input;
+ int _s = s;
+ switch ( s ) {
+ case 0 :
+ int LA20_18 = input.LA(1);
+
+ s = -1;
+ if ( ((LA20_18>='\u0000' && LA20_18<='\uFFFF')) ) {s = 38;}
+
+ else s = 20;
+
+ if ( s>=0 ) return s;
+ break;
+ case 1 :
+ int LA20_17 = input.LA(1);
+
+ s = -1;
+ if ( ((LA20_17>='\u0000' && LA20_17<='\uFFFF')) ) {s = 38;}
+
+ else s = 20;
+
+ if ( s>=0 ) return s;
+ break;
+ case 2 :
+ int LA20_0 = input.LA(1);
+
+ s = -1;
+ if ( (LA20_0=='=') ) {s = 1;}
+
+ else if ( (LA20_0=='d') ) {s = 2;}
+
+ else if ( (LA20_0==';') ) {s = 3;}
+
+ else if ( (LA20_0=='+') ) {s = 4;}
+
+ else if ( (LA20_0=='-') ) {s = 5;}
+
+ else if ( (LA20_0=='*') ) {s = 6;}
+
+ else if ( (LA20_0=='/') ) {s = 7;}
+
+ else if ( (LA20_0=='(') ) {s = 8;}
+
+ else if ( (LA20_0==')') ) {s = 9;}
+
+ else if ( (LA20_0==',') ) {s = 10;}
+
+ else if ( (LA20_0=='t') ) {s = 11;}
+
+ else if ( (LA20_0=='f') ) {s = 12;}
+
+ else if ( ((LA20_0>='0' && LA20_0<='9')) ) {s = 13;}
+
+ else if ( (LA20_0=='.') ) {s = 14;}
+
+ else if ( (LA20_0=='^') ) {s = 15;}
+
+ else if ( ((LA20_0>='A' && LA20_0<='Z')||LA20_0=='_'||(LA20_0>='a' && LA20_0<='c')||LA20_0=='e'||(LA20_0>='g' && LA20_0<='s')||(LA20_0>='u' && LA20_0<='z')) ) {s = 16;}
+
+ else if ( (LA20_0=='\"') ) {s = 17;}
+
+ else if ( (LA20_0=='\'') ) {s = 18;}
+
+ else if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {s = 19;}
+
+ else if ( ((LA20_0>='\u0000' && LA20_0<='\b')||(LA20_0>='\u000B' && LA20_0<='\f')||(LA20_0>='\u000E' && LA20_0<='\u001F')||LA20_0=='!'||(LA20_0>='#' && LA20_0<='&')||LA20_0==':'||LA20_0=='<'||(LA20_0>='>' && LA20_0<='@')||(LA20_0>='[' && LA20_0<=']')||LA20_0=='`'||(LA20_0>='{' && LA20_0<='\uFFFF')) ) {s = 20;}
+
+ if ( s>=0 ) return s;
+ break;
+ }
+ NoViableAltException nvae =
+ new NoViableAltException(getDescription(), 20, _s, input);
+ error(nvae);
+ throw nvae;
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLParser.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLParser.java
new file mode 100644
index 000000000..177f8d389
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDLParser.java
@@ -0,0 +1,6558 @@
+package org.eclipse.stem.model.ctdl.ui.contentassist.antlr.internal;
+
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.TokenStream;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+@SuppressWarnings("all")
+public class InternalCTDLParser extends AbstractInternalContentAssistParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_NUMBER", "RULE_BOOLEAN", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'delta'", "';'", "'+'", "'-'", "'*'", "'/'", "'('", "')'", "','"
+ };
+ public static final int RULE_BOOLEAN=6;
+ public static final int RULE_ID=4;
+ public static final int T__22=22;
+ public static final int RULE_ANY_OTHER=12;
+ public static final int T__21=21;
+ public static final int T__20=20;
+ public static final int RULE_SL_COMMENT=10;
+ public static final int EOF=-1;
+ public static final int RULE_ML_COMMENT=9;
+ public static final int T__19=19;
+ public static final int RULE_STRING=7;
+ public static final int T__16=16;
+ public static final int T__15=15;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_NUMBER=5;
+ public static final int T__14=14;
+ public static final int T__13=13;
+ public static final int RULE_INT=8;
+ public static final int RULE_WS=11;
+
+ // delegates
+ // delegators
+
+
+ public InternalCTDLParser(TokenStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalCTDLParser(TokenStream input, RecognizerSharedState state) {
+ super(input, state);
+
+ }
+
+
+ public String[] getTokenNames() { return InternalCTDLParser.tokenNames; }
+ public String getGrammarFileName() { return "../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g"; }
+
+
+
+ private CTDLGrammarAccess grammarAccess;
+
+ public void setGrammarAccess(CTDLGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+ @Override
+ protected Grammar getGrammar() {
+ return grammarAccess.getGrammar();
+ }
+
+ @Override
+ protected String getValueForTokenName(String tokenName) {
+ return tokenName;
+ }
+
+
+
+
+ // $ANTLR start "entryRuleCompartmentTransitionDefinitions"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:60:1: entryRuleCompartmentTransitionDefinitions : ruleCompartmentTransitionDefinitions EOF ;
+ public final void entryRuleCompartmentTransitionDefinitions() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:61:1: ( ruleCompartmentTransitionDefinitions EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:62:1: ruleCompartmentTransitionDefinitions EOF
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ pushFollow(FOLLOW_ruleCompartmentTransitionDefinitions_in_entryRuleCompartmentTransitionDefinitions61);
+ ruleCompartmentTransitionDefinitions();
+
+ state._fsp--;
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleCompartmentTransitionDefinitions68);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleCompartmentTransitionDefinitions"
+
+
+ // $ANTLR start "ruleCompartmentTransitionDefinitions"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:69:1: ruleCompartmentTransitionDefinitions : ( ( rule__CompartmentTransitionDefinitions__Group__0 ) ) ;
+ public final void ruleCompartmentTransitionDefinitions() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:73:2: ( ( ( rule__CompartmentTransitionDefinitions__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:74:1: ( ( rule__CompartmentTransitionDefinitions__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:74:1: ( ( rule__CompartmentTransitionDefinitions__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:75:1: ( rule__CompartmentTransitionDefinitions__Group__0 )
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:76:1: ( rule__CompartmentTransitionDefinitions__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:76:2: rule__CompartmentTransitionDefinitions__Group__0
+ {
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__Group__0_in_ruleCompartmentTransitionDefinitions94);
+ rule__CompartmentTransitionDefinitions__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleCompartmentTransitionDefinitions"
+
+
+ // $ANTLR start "entryRuleTransitionBlock"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:90:1: entryRuleTransitionBlock : ruleTransitionBlock EOF ;
+ public final void entryRuleTransitionBlock() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:91:1: ( ruleTransitionBlock EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:92:1: ruleTransitionBlock EOF
+ {
+ before(grammarAccess.getTransitionBlockRule());
+ pushFollow(FOLLOW_ruleTransitionBlock_in_entryRuleTransitionBlock123);
+ ruleTransitionBlock();
+
+ state._fsp--;
+
+ after(grammarAccess.getTransitionBlockRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionBlock130);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleTransitionBlock"
+
+
+ // $ANTLR start "ruleTransitionBlock"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:99:1: ruleTransitionBlock : ( ( rule__TransitionBlock__BlockAssignment ) ) ;
+ public final void ruleTransitionBlock() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:103:2: ( ( ( rule__TransitionBlock__BlockAssignment ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:104:1: ( ( rule__TransitionBlock__BlockAssignment ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:104:1: ( ( rule__TransitionBlock__BlockAssignment ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:105:1: ( rule__TransitionBlock__BlockAssignment )
+ {
+ before(grammarAccess.getTransitionBlockAccess().getBlockAssignment());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:106:1: ( rule__TransitionBlock__BlockAssignment )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:106:2: rule__TransitionBlock__BlockAssignment
+ {
+ pushFollow(FOLLOW_rule__TransitionBlock__BlockAssignment_in_ruleTransitionBlock156);
+ rule__TransitionBlock__BlockAssignment();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getTransitionBlockAccess().getBlockAssignment());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleTransitionBlock"
+
+
+ // $ANTLR start "entryRuleBlock"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:122:1: entryRuleBlock : ruleBlock EOF ;
+ public final void entryRuleBlock() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:123:1: ( ruleBlock EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:124:1: ruleBlock EOF
+ {
+ before(grammarAccess.getBlockRule());
+ pushFollow(FOLLOW_ruleBlock_in_entryRuleBlock187);
+ ruleBlock();
+
+ state._fsp--;
+
+ after(grammarAccess.getBlockRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBlock194);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleBlock"
+
+
+ // $ANTLR start "ruleBlock"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:131:1: ruleBlock : ( ( rule__Block__Group__0 ) ) ;
+ public final void ruleBlock() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:135:2: ( ( ( rule__Block__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:136:1: ( ( rule__Block__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:136:1: ( ( rule__Block__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:137:1: ( rule__Block__Group__0 )
+ {
+ before(grammarAccess.getBlockAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:138:1: ( rule__Block__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:138:2: rule__Block__Group__0
+ {
+ pushFollow(FOLLOW_rule__Block__Group__0_in_ruleBlock220);
+ rule__Block__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getBlockAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleBlock"
+
+
+ // $ANTLR start "entryRuleDefStatement"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:150:1: entryRuleDefStatement : ruleDefStatement EOF ;
+ public final void entryRuleDefStatement() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:151:1: ( ruleDefStatement EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:152:1: ruleDefStatement EOF
+ {
+ before(grammarAccess.getDefStatementRule());
+ pushFollow(FOLLOW_ruleDefStatement_in_entryRuleDefStatement247);
+ ruleDefStatement();
+
+ state._fsp--;
+
+ after(grammarAccess.getDefStatementRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDefStatement254);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleDefStatement"
+
+
+ // $ANTLR start "ruleDefStatement"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:159:1: ruleDefStatement : ( ( rule__DefStatement__Group__0 ) ) ;
+ public final void ruleDefStatement() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:163:2: ( ( ( rule__DefStatement__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:164:1: ( ( rule__DefStatement__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:164:1: ( ( rule__DefStatement__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:165:1: ( rule__DefStatement__Group__0 )
+ {
+ before(grammarAccess.getDefStatementAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:166:1: ( rule__DefStatement__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:166:2: rule__DefStatement__Group__0
+ {
+ pushFollow(FOLLOW_rule__DefStatement__Group__0_in_ruleDefStatement280);
+ rule__DefStatement__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getDefStatementAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleDefStatement"
+
+
+ // $ANTLR start "entryRuleReturnStatement"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:178:1: entryRuleReturnStatement : ruleReturnStatement EOF ;
+ public final void entryRuleReturnStatement() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:179:1: ( ruleReturnStatement EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:180:1: ruleReturnStatement EOF
+ {
+ before(grammarAccess.getReturnStatementRule());
+ pushFollow(FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement307);
+ ruleReturnStatement();
+
+ state._fsp--;
+
+ after(grammarAccess.getReturnStatementRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleReturnStatement314);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleReturnStatement"
+
+
+ // $ANTLR start "ruleReturnStatement"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:187:1: ruleReturnStatement : ( ( rule__ReturnStatement__Group__0 ) ) ;
+ public final void ruleReturnStatement() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:191:2: ( ( ( rule__ReturnStatement__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:192:1: ( ( rule__ReturnStatement__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:192:1: ( ( rule__ReturnStatement__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:193:1: ( rule__ReturnStatement__Group__0 )
+ {
+ before(grammarAccess.getReturnStatementAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:194:1: ( rule__ReturnStatement__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:194:2: rule__ReturnStatement__Group__0
+ {
+ pushFollow(FOLLOW_rule__ReturnStatement__Group__0_in_ruleReturnStatement340);
+ rule__ReturnStatement__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getReturnStatementAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleReturnStatement"
+
+
+ // $ANTLR start "entryRuleEvaluation"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:206:1: entryRuleEvaluation : ruleEvaluation EOF ;
+ public final void entryRuleEvaluation() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:207:1: ( ruleEvaluation EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:208:1: ruleEvaluation EOF
+ {
+ before(grammarAccess.getEvaluationRule());
+ pushFollow(FOLLOW_ruleEvaluation_in_entryRuleEvaluation367);
+ ruleEvaluation();
+
+ state._fsp--;
+
+ after(grammarAccess.getEvaluationRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEvaluation374);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleEvaluation"
+
+
+ // $ANTLR start "ruleEvaluation"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:215:1: ruleEvaluation : ( ( rule__Evaluation__Group__0 ) ) ;
+ public final void ruleEvaluation() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:219:2: ( ( ( rule__Evaluation__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:220:1: ( ( rule__Evaluation__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:220:1: ( ( rule__Evaluation__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:221:1: ( rule__Evaluation__Group__0 )
+ {
+ before(grammarAccess.getEvaluationAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:222:1: ( rule__Evaluation__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:222:2: rule__Evaluation__Group__0
+ {
+ pushFollow(FOLLOW_rule__Evaluation__Group__0_in_ruleEvaluation400);
+ rule__Evaluation__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getEvaluationAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleEvaluation"
+
+
+ // $ANTLR start "entryRuleExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:234:1: entryRuleExpression : ruleExpression EOF ;
+ public final void entryRuleExpression() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:235:1: ( ruleExpression EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:236:1: ruleExpression EOF
+ {
+ before(grammarAccess.getExpressionRule());
+ pushFollow(FOLLOW_ruleExpression_in_entryRuleExpression427);
+ ruleExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getExpressionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExpression434);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleExpression"
+
+
+ // $ANTLR start "ruleExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:243:1: ruleExpression : ( ruleAddition ) ;
+ public final void ruleExpression() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:247:2: ( ( ruleAddition ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:248:1: ( ruleAddition )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:248:1: ( ruleAddition )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:249:1: ruleAddition
+ {
+ before(grammarAccess.getExpressionAccess().getAdditionParserRuleCall());
+ pushFollow(FOLLOW_ruleAddition_in_ruleExpression460);
+ ruleAddition();
+
+ state._fsp--;
+
+ after(grammarAccess.getExpressionAccess().getAdditionParserRuleCall());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleExpression"
+
+
+ // $ANTLR start "entryRuleAddition"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:262:1: entryRuleAddition : ruleAddition EOF ;
+ public final void entryRuleAddition() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:263:1: ( ruleAddition EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:264:1: ruleAddition EOF
+ {
+ before(grammarAccess.getAdditionRule());
+ pushFollow(FOLLOW_ruleAddition_in_entryRuleAddition486);
+ ruleAddition();
+
+ state._fsp--;
+
+ after(grammarAccess.getAdditionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAddition493);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleAddition"
+
+
+ // $ANTLR start "ruleAddition"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:271:1: ruleAddition : ( ( rule__Addition__Group__0 ) ) ;
+ public final void ruleAddition() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:275:2: ( ( ( rule__Addition__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:276:1: ( ( rule__Addition__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:276:1: ( ( rule__Addition__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:277:1: ( rule__Addition__Group__0 )
+ {
+ before(grammarAccess.getAdditionAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:278:1: ( rule__Addition__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:278:2: rule__Addition__Group__0
+ {
+ pushFollow(FOLLOW_rule__Addition__Group__0_in_ruleAddition519);
+ rule__Addition__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getAdditionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleAddition"
+
+
+ // $ANTLR start "entryRuleMultiplication"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:290:1: entryRuleMultiplication : ruleMultiplication EOF ;
+ public final void entryRuleMultiplication() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:291:1: ( ruleMultiplication EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:292:1: ruleMultiplication EOF
+ {
+ before(grammarAccess.getMultiplicationRule());
+ pushFollow(FOLLOW_ruleMultiplication_in_entryRuleMultiplication546);
+ ruleMultiplication();
+
+ state._fsp--;
+
+ after(grammarAccess.getMultiplicationRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMultiplication553);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleMultiplication"
+
+
+ // $ANTLR start "ruleMultiplication"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:299:1: ruleMultiplication : ( ( rule__Multiplication__Group__0 ) ) ;
+ public final void ruleMultiplication() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:303:2: ( ( ( rule__Multiplication__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:304:1: ( ( rule__Multiplication__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:304:1: ( ( rule__Multiplication__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:305:1: ( rule__Multiplication__Group__0 )
+ {
+ before(grammarAccess.getMultiplicationAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:306:1: ( rule__Multiplication__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:306:2: rule__Multiplication__Group__0
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group__0_in_ruleMultiplication579);
+ rule__Multiplication__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleMultiplication"
+
+
+ // $ANTLR start "entryRuleNegatedExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:318:1: entryRuleNegatedExpression : ruleNegatedExpression EOF ;
+ public final void entryRuleNegatedExpression() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:319:1: ( ruleNegatedExpression EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:320:1: ruleNegatedExpression EOF
+ {
+ before(grammarAccess.getNegatedExpressionRule());
+ pushFollow(FOLLOW_ruleNegatedExpression_in_entryRuleNegatedExpression606);
+ ruleNegatedExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getNegatedExpressionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNegatedExpression613);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleNegatedExpression"
+
+
+ // $ANTLR start "ruleNegatedExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:327:1: ruleNegatedExpression : ( ( rule__NegatedExpression__Group__0 ) ) ;
+ public final void ruleNegatedExpression() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:331:2: ( ( ( rule__NegatedExpression__Group__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:332:1: ( ( rule__NegatedExpression__Group__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:332:1: ( ( rule__NegatedExpression__Group__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:333:1: ( rule__NegatedExpression__Group__0 )
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getGroup());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:334:1: ( rule__NegatedExpression__Group__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:334:2: rule__NegatedExpression__Group__0
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__0_in_ruleNegatedExpression639);
+ rule__NegatedExpression__Group__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getNegatedExpressionAccess().getGroup());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleNegatedExpression"
+
+
+ // $ANTLR start "entryRulePrimaryExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:346:1: entryRulePrimaryExpression : rulePrimaryExpression EOF ;
+ public final void entryRulePrimaryExpression() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:347:1: ( rulePrimaryExpression EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:348:1: rulePrimaryExpression EOF
+ {
+ before(grammarAccess.getPrimaryExpressionRule());
+ pushFollow(FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression666);
+ rulePrimaryExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getPrimaryExpressionRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRulePrimaryExpression673);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRulePrimaryExpression"
+
+
+ // $ANTLR start "rulePrimaryExpression"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:355:1: rulePrimaryExpression : ( ( rule__PrimaryExpression__Alternatives ) ) ;
+ public final void rulePrimaryExpression() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:359:2: ( ( ( rule__PrimaryExpression__Alternatives ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:360:1: ( ( rule__PrimaryExpression__Alternatives ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:360:1: ( ( rule__PrimaryExpression__Alternatives ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:361:1: ( rule__PrimaryExpression__Alternatives )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getAlternatives());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:362:1: ( rule__PrimaryExpression__Alternatives )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:362:2: rule__PrimaryExpression__Alternatives
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Alternatives_in_rulePrimaryExpression699);
+ rule__PrimaryExpression__Alternatives();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rulePrimaryExpression"
+
+
+ // $ANTLR start "entryRuleFunctionArgument"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:374:1: entryRuleFunctionArgument : ruleFunctionArgument EOF ;
+ public final void entryRuleFunctionArgument() throws RecognitionException {
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:375:1: ( ruleFunctionArgument EOF )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:376:1: ruleFunctionArgument EOF
+ {
+ before(grammarAccess.getFunctionArgumentRule());
+ pushFollow(FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument726);
+ ruleFunctionArgument();
+
+ state._fsp--;
+
+ after(grammarAccess.getFunctionArgumentRule());
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionArgument733);
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end "entryRuleFunctionArgument"
+
+
+ // $ANTLR start "ruleFunctionArgument"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:383:1: ruleFunctionArgument : ( ( rule__FunctionArgument__Alternatives ) ) ;
+ public final void ruleFunctionArgument() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:387:2: ( ( ( rule__FunctionArgument__Alternatives ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:388:1: ( ( rule__FunctionArgument__Alternatives ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:388:1: ( ( rule__FunctionArgument__Alternatives ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:389:1: ( rule__FunctionArgument__Alternatives )
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getAlternatives());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:390:1: ( rule__FunctionArgument__Alternatives )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:390:2: rule__FunctionArgument__Alternatives
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Alternatives_in_ruleFunctionArgument759);
+ rule__FunctionArgument__Alternatives();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getAlternatives());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "ruleFunctionArgument"
+
+
+ // $ANTLR start "rule__Addition__Alternatives_1_0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:414:1: rule__Addition__Alternatives_1_0 : ( ( ( rule__Addition__Group_1_0_0__0 ) ) | ( ( rule__Addition__Group_1_0_1__0 ) ) );
+ public final void rule__Addition__Alternatives_1_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:418:1: ( ( ( rule__Addition__Group_1_0_0__0 ) ) | ( ( rule__Addition__Group_1_0_1__0 ) ) )
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==16) ) {
+ alt1=1;
+ }
+ else if ( (LA1_0==17) ) {
+ alt1=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 0, input);
+
+ throw nvae;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:419:1: ( ( rule__Addition__Group_1_0_0__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:419:1: ( ( rule__Addition__Group_1_0_0__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:420:1: ( rule__Addition__Group_1_0_0__0 )
+ {
+ before(grammarAccess.getAdditionAccess().getGroup_1_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:421:1: ( rule__Addition__Group_1_0_0__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:421:2: rule__Addition__Group_1_0_0__0
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_0__0_in_rule__Addition__Alternatives_1_0807);
+ rule__Addition__Group_1_0_0__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getAdditionAccess().getGroup_1_0_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:425:6: ( ( rule__Addition__Group_1_0_1__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:425:6: ( ( rule__Addition__Group_1_0_1__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:426:1: ( rule__Addition__Group_1_0_1__0 )
+ {
+ before(grammarAccess.getAdditionAccess().getGroup_1_0_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:427:1: ( rule__Addition__Group_1_0_1__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:427:2: rule__Addition__Group_1_0_1__0
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_1__0_in_rule__Addition__Alternatives_1_0825);
+ rule__Addition__Group_1_0_1__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getAdditionAccess().getGroup_1_0_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Alternatives_1_0"
+
+
+ // $ANTLR start "rule__Multiplication__Alternatives_1_0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:436:1: rule__Multiplication__Alternatives_1_0 : ( ( ( rule__Multiplication__Group_1_0_0__0 ) ) | ( ( rule__Multiplication__Group_1_0_1__0 ) ) );
+ public final void rule__Multiplication__Alternatives_1_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:440:1: ( ( ( rule__Multiplication__Group_1_0_0__0 ) ) | ( ( rule__Multiplication__Group_1_0_1__0 ) ) )
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==18) ) {
+ alt2=1;
+ }
+ else if ( (LA2_0==19) ) {
+ alt2=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 2, 0, input);
+
+ throw nvae;
+ }
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:441:1: ( ( rule__Multiplication__Group_1_0_0__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:441:1: ( ( rule__Multiplication__Group_1_0_0__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:442:1: ( rule__Multiplication__Group_1_0_0__0 )
+ {
+ before(grammarAccess.getMultiplicationAccess().getGroup_1_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:443:1: ( rule__Multiplication__Group_1_0_0__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:443:2: rule__Multiplication__Group_1_0_0__0
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__0_in_rule__Multiplication__Alternatives_1_0858);
+ rule__Multiplication__Group_1_0_0__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getGroup_1_0_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:447:6: ( ( rule__Multiplication__Group_1_0_1__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:447:6: ( ( rule__Multiplication__Group_1_0_1__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:448:1: ( rule__Multiplication__Group_1_0_1__0 )
+ {
+ before(grammarAccess.getMultiplicationAccess().getGroup_1_0_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:449:1: ( rule__Multiplication__Group_1_0_1__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:449:2: rule__Multiplication__Group_1_0_1__0
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__0_in_rule__Multiplication__Alternatives_1_0876);
+ rule__Multiplication__Group_1_0_1__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getGroup_1_0_1());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Alternatives_1_0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Alternatives"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:458:1: rule__PrimaryExpression__Alternatives : ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ( rule__PrimaryExpression__Group_2__0 ) ) | ( ( rule__PrimaryExpression__Group_3__0 ) ) );
+ public final void rule__PrimaryExpression__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:462:1: ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ( rule__PrimaryExpression__Group_2__0 ) ) | ( ( rule__PrimaryExpression__Group_3__0 ) ) )
+ int alt3=4;
+ switch ( input.LA(1) ) {
+ case RULE_NUMBER:
+ {
+ alt3=1;
+ }
+ break;
+ case 20:
+ {
+ alt3=2;
+ }
+ break;
+ case RULE_ID:
+ {
+ int LA3_3 = input.LA(2);
+
+ if ( (LA3_3==EOF||(LA3_3>=15 && LA3_3<=19)||(LA3_3>=21 && LA3_3<=22)) ) {
+ alt3=4;
+ }
+ else if ( (LA3_3==20) ) {
+ alt3=3;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 3, 3, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 3, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:463:1: ( ( rule__PrimaryExpression__Group_0__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:463:1: ( ( rule__PrimaryExpression__Group_0__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:464:1: ( rule__PrimaryExpression__Group_0__0 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:465:1: ( rule__PrimaryExpression__Group_0__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:465:2: rule__PrimaryExpression__Group_0__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__0_in_rule__PrimaryExpression__Alternatives909);
+ rule__PrimaryExpression__Group_0__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:469:6: ( ( rule__PrimaryExpression__Group_1__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:469:6: ( ( rule__PrimaryExpression__Group_1__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:470:1: ( rule__PrimaryExpression__Group_1__0 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:471:1: ( rule__PrimaryExpression__Group_1__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:471:2: rule__PrimaryExpression__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__0_in_rule__PrimaryExpression__Alternatives927);
+ rule__PrimaryExpression__Group_1__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:475:6: ( ( rule__PrimaryExpression__Group_2__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:475:6: ( ( rule__PrimaryExpression__Group_2__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:476:1: ( rule__PrimaryExpression__Group_2__0 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:477:1: ( rule__PrimaryExpression__Group_2__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:477:2: rule__PrimaryExpression__Group_2__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__0_in_rule__PrimaryExpression__Alternatives945);
+ rule__PrimaryExpression__Group_2__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2());
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:481:6: ( ( rule__PrimaryExpression__Group_3__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:481:6: ( ( rule__PrimaryExpression__Group_3__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:482:1: ( rule__PrimaryExpression__Group_3__0 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_3());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:483:1: ( rule__PrimaryExpression__Group_3__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:483:2: rule__PrimaryExpression__Group_3__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__0_in_rule__PrimaryExpression__Alternatives963);
+ rule__PrimaryExpression__Group_3__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_3());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Alternatives"
+
+
+ // $ANTLR start "rule__FunctionArgument__Alternatives"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:492:1: rule__FunctionArgument__Alternatives : ( ( ( rule__FunctionArgument__Group_0__0 ) ) | ( ( rule__FunctionArgument__Group_1__0 ) ) | ( ruleExpression ) );
+ public final void rule__FunctionArgument__Alternatives() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:496:1: ( ( ( rule__FunctionArgument__Group_0__0 ) ) | ( ( rule__FunctionArgument__Group_1__0 ) ) | ( ruleExpression ) )
+ int alt4=3;
+ switch ( input.LA(1) ) {
+ case RULE_BOOLEAN:
+ {
+ alt4=1;
+ }
+ break;
+ case RULE_STRING:
+ {
+ alt4=2;
+ }
+ break;
+ case RULE_ID:
+ case RULE_NUMBER:
+ case 17:
+ case 20:
+ {
+ alt4=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 4, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:497:1: ( ( rule__FunctionArgument__Group_0__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:497:1: ( ( rule__FunctionArgument__Group_0__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:498:1: ( rule__FunctionArgument__Group_0__0 )
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getGroup_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:499:1: ( rule__FunctionArgument__Group_0__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:499:2: rule__FunctionArgument__Group_0__0
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_0__0_in_rule__FunctionArgument__Alternatives996);
+ rule__FunctionArgument__Group_0__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getGroup_0());
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:503:6: ( ( rule__FunctionArgument__Group_1__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:503:6: ( ( rule__FunctionArgument__Group_1__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:504:1: ( rule__FunctionArgument__Group_1__0 )
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getGroup_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:505:1: ( rule__FunctionArgument__Group_1__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:505:2: rule__FunctionArgument__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_1__0_in_rule__FunctionArgument__Alternatives1014);
+ rule__FunctionArgument__Group_1__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getGroup_1());
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:509:6: ( ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:509:6: ( ruleExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:510:1: ruleExpression
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2());
+ pushFollow(FOLLOW_ruleExpression_in_rule__FunctionArgument__Alternatives1032);
+ ruleExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2());
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Alternatives"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:525:1: rule__CompartmentTransitionDefinitions__Group__0 : rule__CompartmentTransitionDefinitions__Group__0__Impl rule__CompartmentTransitionDefinitions__Group__1 ;
+ public final void rule__CompartmentTransitionDefinitions__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:529:1: ( rule__CompartmentTransitionDefinitions__Group__0__Impl rule__CompartmentTransitionDefinitions__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:530:2: rule__CompartmentTransitionDefinitions__Group__0__Impl rule__CompartmentTransitionDefinitions__Group__1
+ {
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__Group__0__Impl_in_rule__CompartmentTransitionDefinitions__Group__01065);
+ rule__CompartmentTransitionDefinitions__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__Group__1_in_rule__CompartmentTransitionDefinitions__Group__01068);
+ rule__CompartmentTransitionDefinitions__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__Group__0"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:537:1: rule__CompartmentTransitionDefinitions__Group__0__Impl : ( ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )? ) ;
+ public final void rule__CompartmentTransitionDefinitions__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:541:1: ( ( ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )? ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:542:1: ( ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )? )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:542:1: ( ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )? )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:543:1: ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )?
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelAssignment_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:544:1: ( rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 )?
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==RULE_ID) ) {
+ int LA5_1 = input.LA(2);
+
+ if ( (LA5_1==RULE_ID||LA5_1==14) ) {
+ alt5=1;
+ }
+ }
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:544:2: rule__CompartmentTransitionDefinitions__MetamodelAssignment_0
+ {
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__MetamodelAssignment_0_in_rule__CompartmentTransitionDefinitions__Group__0__Impl1095);
+ rule__CompartmentTransitionDefinitions__MetamodelAssignment_0();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__Group__0__Impl"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:554:1: rule__CompartmentTransitionDefinitions__Group__1 : rule__CompartmentTransitionDefinitions__Group__1__Impl ;
+ public final void rule__CompartmentTransitionDefinitions__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:558:1: ( rule__CompartmentTransitionDefinitions__Group__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:559:2: rule__CompartmentTransitionDefinitions__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__Group__1__Impl_in_rule__CompartmentTransitionDefinitions__Group__11126);
+ rule__CompartmentTransitionDefinitions__Group__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__Group__1"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:565:1: rule__CompartmentTransitionDefinitions__Group__1__Impl : ( ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 ) ) ;
+ public final void rule__CompartmentTransitionDefinitions__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:569:1: ( ( ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:570:1: ( ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:570:1: ( ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:571:1: ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 )
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionAssignment_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:572:1: ( rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:572:2: rule__CompartmentTransitionDefinitions__ExpressionAssignment_1
+ {
+ pushFollow(FOLLOW_rule__CompartmentTransitionDefinitions__ExpressionAssignment_1_in_rule__CompartmentTransitionDefinitions__Group__1__Impl1153);
+ rule__CompartmentTransitionDefinitions__ExpressionAssignment_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Block__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:588:1: rule__Block__Group__0 : rule__Block__Group__0__Impl rule__Block__Group__1 ;
+ public final void rule__Block__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:592:1: ( rule__Block__Group__0__Impl rule__Block__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:593:2: rule__Block__Group__0__Impl rule__Block__Group__1
+ {
+ pushFollow(FOLLOW_rule__Block__Group__0__Impl_in_rule__Block__Group__01189);
+ rule__Block__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Block__Group__1_in_rule__Block__Group__01192);
+ rule__Block__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__0"
+
+
+ // $ANTLR start "rule__Block__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:600:1: rule__Block__Group__0__Impl : ( () ) ;
+ public final void rule__Block__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:604:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:605:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:605:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:606:1: ()
+ {
+ before(grammarAccess.getBlockAccess().getBlockAction_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:607:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:609:1:
+ {
+ }
+
+ after(grammarAccess.getBlockAccess().getBlockAction_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__0__Impl"
+
+
+ // $ANTLR start "rule__Block__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:619:1: rule__Block__Group__1 : rule__Block__Group__1__Impl rule__Block__Group__2 ;
+ public final void rule__Block__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:623:1: ( rule__Block__Group__1__Impl rule__Block__Group__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:624:2: rule__Block__Group__1__Impl rule__Block__Group__2
+ {
+ pushFollow(FOLLOW_rule__Block__Group__1__Impl_in_rule__Block__Group__11250);
+ rule__Block__Group__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Block__Group__2_in_rule__Block__Group__11253);
+ rule__Block__Group__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__1"
+
+
+ // $ANTLR start "rule__Block__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:631:1: rule__Block__Group__1__Impl : ( ( rule__Block__StatementsAssignment_1 )* ) ;
+ public final void rule__Block__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:635:1: ( ( ( rule__Block__StatementsAssignment_1 )* ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:636:1: ( ( rule__Block__StatementsAssignment_1 )* )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:636:1: ( ( rule__Block__StatementsAssignment_1 )* )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:637:1: ( rule__Block__StatementsAssignment_1 )*
+ {
+ before(grammarAccess.getBlockAccess().getStatementsAssignment_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:638:1: ( rule__Block__StatementsAssignment_1 )*
+ loop6:
+ do {
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0==RULE_ID) ) {
+ alt6=1;
+ }
+
+
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:638:2: rule__Block__StatementsAssignment_1
+ {
+ pushFollow(FOLLOW_rule__Block__StatementsAssignment_1_in_rule__Block__Group__1__Impl1280);
+ rule__Block__StatementsAssignment_1();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop6;
+ }
+ } while (true);
+
+ after(grammarAccess.getBlockAccess().getStatementsAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Block__Group__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:648:1: rule__Block__Group__2 : rule__Block__Group__2__Impl ;
+ public final void rule__Block__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:652:1: ( rule__Block__Group__2__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:653:2: rule__Block__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__Block__Group__2__Impl_in_rule__Block__Group__21311);
+ rule__Block__Group__2__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__2"
+
+
+ // $ANTLR start "rule__Block__Group__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:659:1: rule__Block__Group__2__Impl : ( ( rule__Block__RetAssignment_2 ) ) ;
+ public final void rule__Block__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:663:1: ( ( ( rule__Block__RetAssignment_2 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:664:1: ( ( rule__Block__RetAssignment_2 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:664:1: ( ( rule__Block__RetAssignment_2 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:665:1: ( rule__Block__RetAssignment_2 )
+ {
+ before(grammarAccess.getBlockAccess().getRetAssignment_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:666:1: ( rule__Block__RetAssignment_2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:666:2: rule__Block__RetAssignment_2
+ {
+ pushFollow(FOLLOW_rule__Block__RetAssignment_2_in_rule__Block__Group__2__Impl1338);
+ rule__Block__RetAssignment_2();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getBlockAccess().getRetAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__Group__2__Impl"
+
+
+ // $ANTLR start "rule__DefStatement__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:682:1: rule__DefStatement__Group__0 : rule__DefStatement__Group__0__Impl rule__DefStatement__Group__1 ;
+ public final void rule__DefStatement__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:686:1: ( rule__DefStatement__Group__0__Impl rule__DefStatement__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:687:2: rule__DefStatement__Group__0__Impl rule__DefStatement__Group__1
+ {
+ pushFollow(FOLLOW_rule__DefStatement__Group__0__Impl_in_rule__DefStatement__Group__01374);
+ rule__DefStatement__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__DefStatement__Group__1_in_rule__DefStatement__Group__01377);
+ rule__DefStatement__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__0"
+
+
+ // $ANTLR start "rule__DefStatement__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:694:1: rule__DefStatement__Group__0__Impl : ( ( rule__DefStatement__VarnameAssignment_0 ) ) ;
+ public final void rule__DefStatement__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:698:1: ( ( ( rule__DefStatement__VarnameAssignment_0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:699:1: ( ( rule__DefStatement__VarnameAssignment_0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:699:1: ( ( rule__DefStatement__VarnameAssignment_0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:700:1: ( rule__DefStatement__VarnameAssignment_0 )
+ {
+ before(grammarAccess.getDefStatementAccess().getVarnameAssignment_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:701:1: ( rule__DefStatement__VarnameAssignment_0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:701:2: rule__DefStatement__VarnameAssignment_0
+ {
+ pushFollow(FOLLOW_rule__DefStatement__VarnameAssignment_0_in_rule__DefStatement__Group__0__Impl1404);
+ rule__DefStatement__VarnameAssignment_0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getDefStatementAccess().getVarnameAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__0__Impl"
+
+
+ // $ANTLR start "rule__DefStatement__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:711:1: rule__DefStatement__Group__1 : rule__DefStatement__Group__1__Impl rule__DefStatement__Group__2 ;
+ public final void rule__DefStatement__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:715:1: ( rule__DefStatement__Group__1__Impl rule__DefStatement__Group__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:716:2: rule__DefStatement__Group__1__Impl rule__DefStatement__Group__2
+ {
+ pushFollow(FOLLOW_rule__DefStatement__Group__1__Impl_in_rule__DefStatement__Group__11434);
+ rule__DefStatement__Group__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__DefStatement__Group__2_in_rule__DefStatement__Group__11437);
+ rule__DefStatement__Group__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__1"
+
+
+ // $ANTLR start "rule__DefStatement__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:723:1: rule__DefStatement__Group__1__Impl : ( '=' ) ;
+ public final void rule__DefStatement__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:727:1: ( ( '=' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:728:1: ( '=' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:728:1: ( '=' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:729:1: '='
+ {
+ before(grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1());
+ match(input,13,FOLLOW_13_in_rule__DefStatement__Group__1__Impl1465);
+ after(grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__1__Impl"
+
+
+ // $ANTLR start "rule__DefStatement__Group__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:742:1: rule__DefStatement__Group__2 : rule__DefStatement__Group__2__Impl ;
+ public final void rule__DefStatement__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:746:1: ( rule__DefStatement__Group__2__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:747:2: rule__DefStatement__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__DefStatement__Group__2__Impl_in_rule__DefStatement__Group__21496);
+ rule__DefStatement__Group__2__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__2"
+
+
+ // $ANTLR start "rule__DefStatement__Group__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:753:1: rule__DefStatement__Group__2__Impl : ( ( rule__DefStatement__ExprAssignment_2 ) ) ;
+ public final void rule__DefStatement__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:757:1: ( ( ( rule__DefStatement__ExprAssignment_2 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:758:1: ( ( rule__DefStatement__ExprAssignment_2 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:758:1: ( ( rule__DefStatement__ExprAssignment_2 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:759:1: ( rule__DefStatement__ExprAssignment_2 )
+ {
+ before(grammarAccess.getDefStatementAccess().getExprAssignment_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:760:1: ( rule__DefStatement__ExprAssignment_2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:760:2: rule__DefStatement__ExprAssignment_2
+ {
+ pushFollow(FOLLOW_rule__DefStatement__ExprAssignment_2_in_rule__DefStatement__Group__2__Impl1523);
+ rule__DefStatement__ExprAssignment_2();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getDefStatementAccess().getExprAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__Group__2__Impl"
+
+
+ // $ANTLR start "rule__ReturnStatement__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:776:1: rule__ReturnStatement__Group__0 : rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1 ;
+ public final void rule__ReturnStatement__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:780:1: ( rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:781:2: rule__ReturnStatement__Group__0__Impl rule__ReturnStatement__Group__1
+ {
+ pushFollow(FOLLOW_rule__ReturnStatement__Group__0__Impl_in_rule__ReturnStatement__Group__01559);
+ rule__ReturnStatement__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__ReturnStatement__Group__1_in_rule__ReturnStatement__Group__01562);
+ rule__ReturnStatement__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__ReturnStatement__Group__0"
+
+
+ // $ANTLR start "rule__ReturnStatement__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:788:1: rule__ReturnStatement__Group__0__Impl : ( 'delta' ) ;
+ public final void rule__ReturnStatement__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:792:1: ( ( 'delta' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:793:1: ( 'delta' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:793:1: ( 'delta' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:794:1: 'delta'
+ {
+ before(grammarAccess.getReturnStatementAccess().getDeltaKeyword_0());
+ match(input,14,FOLLOW_14_in_rule__ReturnStatement__Group__0__Impl1590);
+ after(grammarAccess.getReturnStatementAccess().getDeltaKeyword_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__ReturnStatement__Group__0__Impl"
+
+
+ // $ANTLR start "rule__ReturnStatement__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:807:1: rule__ReturnStatement__Group__1 : rule__ReturnStatement__Group__1__Impl ;
+ public final void rule__ReturnStatement__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:811:1: ( rule__ReturnStatement__Group__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:812:2: rule__ReturnStatement__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__ReturnStatement__Group__1__Impl_in_rule__ReturnStatement__Group__11621);
+ rule__ReturnStatement__Group__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__ReturnStatement__Group__1"
+
+
+ // $ANTLR start "rule__ReturnStatement__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:818:1: rule__ReturnStatement__Group__1__Impl : ( ruleEvaluation ) ;
+ public final void rule__ReturnStatement__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:822:1: ( ( ruleEvaluation ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:823:1: ( ruleEvaluation )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:823:1: ( ruleEvaluation )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:824:1: ruleEvaluation
+ {
+ before(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1());
+ pushFollow(FOLLOW_ruleEvaluation_in_rule__ReturnStatement__Group__1__Impl1648);
+ ruleEvaluation();
+
+ state._fsp--;
+
+ after(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__ReturnStatement__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Evaluation__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:839:1: rule__Evaluation__Group__0 : rule__Evaluation__Group__0__Impl rule__Evaluation__Group__1 ;
+ public final void rule__Evaluation__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:843:1: ( rule__Evaluation__Group__0__Impl rule__Evaluation__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:844:2: rule__Evaluation__Group__0__Impl rule__Evaluation__Group__1
+ {
+ pushFollow(FOLLOW_rule__Evaluation__Group__0__Impl_in_rule__Evaluation__Group__01681);
+ rule__Evaluation__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Evaluation__Group__1_in_rule__Evaluation__Group__01684);
+ rule__Evaluation__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Evaluation__Group__0"
+
+
+ // $ANTLR start "rule__Evaluation__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:851:1: rule__Evaluation__Group__0__Impl : ( ( rule__Evaluation__ExpressionAssignment_0 ) ) ;
+ public final void rule__Evaluation__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:855:1: ( ( ( rule__Evaluation__ExpressionAssignment_0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:856:1: ( ( rule__Evaluation__ExpressionAssignment_0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:856:1: ( ( rule__Evaluation__ExpressionAssignment_0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:857:1: ( rule__Evaluation__ExpressionAssignment_0 )
+ {
+ before(grammarAccess.getEvaluationAccess().getExpressionAssignment_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:858:1: ( rule__Evaluation__ExpressionAssignment_0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:858:2: rule__Evaluation__ExpressionAssignment_0
+ {
+ pushFollow(FOLLOW_rule__Evaluation__ExpressionAssignment_0_in_rule__Evaluation__Group__0__Impl1711);
+ rule__Evaluation__ExpressionAssignment_0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getEvaluationAccess().getExpressionAssignment_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Evaluation__Group__0__Impl"
+
+
+ // $ANTLR start "rule__Evaluation__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:868:1: rule__Evaluation__Group__1 : rule__Evaluation__Group__1__Impl ;
+ public final void rule__Evaluation__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:872:1: ( rule__Evaluation__Group__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:873:2: rule__Evaluation__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Evaluation__Group__1__Impl_in_rule__Evaluation__Group__11741);
+ rule__Evaluation__Group__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Evaluation__Group__1"
+
+
+ // $ANTLR start "rule__Evaluation__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:879:1: rule__Evaluation__Group__1__Impl : ( ';' ) ;
+ public final void rule__Evaluation__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:883:1: ( ( ';' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:884:1: ( ';' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:884:1: ( ';' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:885:1: ';'
+ {
+ before(grammarAccess.getEvaluationAccess().getSemicolonKeyword_1());
+ match(input,15,FOLLOW_15_in_rule__Evaluation__Group__1__Impl1769);
+ after(grammarAccess.getEvaluationAccess().getSemicolonKeyword_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Evaluation__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:902:1: rule__Addition__Group__0 : rule__Addition__Group__0__Impl rule__Addition__Group__1 ;
+ public final void rule__Addition__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:906:1: ( rule__Addition__Group__0__Impl rule__Addition__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:907:2: rule__Addition__Group__0__Impl rule__Addition__Group__1
+ {
+ pushFollow(FOLLOW_rule__Addition__Group__0__Impl_in_rule__Addition__Group__01804);
+ rule__Addition__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Addition__Group__1_in_rule__Addition__Group__01807);
+ rule__Addition__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group__0"
+
+
+ // $ANTLR start "rule__Addition__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:914:1: rule__Addition__Group__0__Impl : ( ruleMultiplication ) ;
+ public final void rule__Addition__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:918:1: ( ( ruleMultiplication ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:919:1: ( ruleMultiplication )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:919:1: ( ruleMultiplication )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:920:1: ruleMultiplication
+ {
+ before(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0());
+ pushFollow(FOLLOW_ruleMultiplication_in_rule__Addition__Group__0__Impl1834);
+ ruleMultiplication();
+
+ state._fsp--;
+
+ after(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group__0__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:931:1: rule__Addition__Group__1 : rule__Addition__Group__1__Impl ;
+ public final void rule__Addition__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:935:1: ( rule__Addition__Group__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:936:2: rule__Addition__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Addition__Group__1__Impl_in_rule__Addition__Group__11863);
+ rule__Addition__Group__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group__1"
+
+
+ // $ANTLR start "rule__Addition__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:942:1: rule__Addition__Group__1__Impl : ( ( rule__Addition__Group_1__0 )* ) ;
+ public final void rule__Addition__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:946:1: ( ( ( rule__Addition__Group_1__0 )* ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:947:1: ( ( rule__Addition__Group_1__0 )* )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:947:1: ( ( rule__Addition__Group_1__0 )* )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:948:1: ( rule__Addition__Group_1__0 )*
+ {
+ before(grammarAccess.getAdditionAccess().getGroup_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:949:1: ( rule__Addition__Group_1__0 )*
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( ((LA7_0>=16 && LA7_0<=17)) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:949:2: rule__Addition__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1__0_in_rule__Addition__Group__1__Impl1890);
+ rule__Addition__Group_1__0();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop7;
+ }
+ } while (true);
+
+ after(grammarAccess.getAdditionAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:963:1: rule__Addition__Group_1__0 : rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 ;
+ public final void rule__Addition__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:967:1: ( rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:968:2: rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1__0__Impl_in_rule__Addition__Group_1__01925);
+ rule__Addition__Group_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Addition__Group_1__1_in_rule__Addition__Group_1__01928);
+ rule__Addition__Group_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1__0"
+
+
+ // $ANTLR start "rule__Addition__Group_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:975:1: rule__Addition__Group_1__0__Impl : ( ( rule__Addition__Alternatives_1_0 ) ) ;
+ public final void rule__Addition__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:979:1: ( ( ( rule__Addition__Alternatives_1_0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:980:1: ( ( rule__Addition__Alternatives_1_0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:980:1: ( ( rule__Addition__Alternatives_1_0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:981:1: ( rule__Addition__Alternatives_1_0 )
+ {
+ before(grammarAccess.getAdditionAccess().getAlternatives_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:982:1: ( rule__Addition__Alternatives_1_0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:982:2: rule__Addition__Alternatives_1_0
+ {
+ pushFollow(FOLLOW_rule__Addition__Alternatives_1_0_in_rule__Addition__Group_1__0__Impl1955);
+ rule__Addition__Alternatives_1_0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getAdditionAccess().getAlternatives_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1__0__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:992:1: rule__Addition__Group_1__1 : rule__Addition__Group_1__1__Impl ;
+ public final void rule__Addition__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:996:1: ( rule__Addition__Group_1__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:997:2: rule__Addition__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1__1__Impl_in_rule__Addition__Group_1__11985);
+ rule__Addition__Group_1__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1__1"
+
+
+ // $ANTLR start "rule__Addition__Group_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1003:1: rule__Addition__Group_1__1__Impl : ( ( rule__Addition__RightAssignment_1_1 ) ) ;
+ public final void rule__Addition__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1007:1: ( ( ( rule__Addition__RightAssignment_1_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1008:1: ( ( rule__Addition__RightAssignment_1_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1008:1: ( ( rule__Addition__RightAssignment_1_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1009:1: ( rule__Addition__RightAssignment_1_1 )
+ {
+ before(grammarAccess.getAdditionAccess().getRightAssignment_1_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1010:1: ( rule__Addition__RightAssignment_1_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1010:2: rule__Addition__RightAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__Addition__RightAssignment_1_1_in_rule__Addition__Group_1__1__Impl2012);
+ rule__Addition__RightAssignment_1_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getAdditionAccess().getRightAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1__1__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_0__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1024:1: rule__Addition__Group_1_0_0__0 : rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1 ;
+ public final void rule__Addition__Group_1_0_0__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1028:1: ( rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1029:2: rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_0__0__Impl_in_rule__Addition__Group_1_0_0__02046);
+ rule__Addition__Group_1_0_0__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_0__1_in_rule__Addition__Group_1_0_0__02049);
+ rule__Addition__Group_1_0_0__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_0__0"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_0__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1036:1: rule__Addition__Group_1_0_0__0__Impl : ( () ) ;
+ public final void rule__Addition__Group_1_0_0__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1040:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1041:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1041:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1042:1: ()
+ {
+ before(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1043:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1045:1:
+ {
+ }
+
+ after(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_0__0__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_0__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1055:1: rule__Addition__Group_1_0_0__1 : rule__Addition__Group_1_0_0__1__Impl ;
+ public final void rule__Addition__Group_1_0_0__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1059:1: ( rule__Addition__Group_1_0_0__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1060:2: rule__Addition__Group_1_0_0__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_0__1__Impl_in_rule__Addition__Group_1_0_0__12107);
+ rule__Addition__Group_1_0_0__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_0__1"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_0__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1066:1: rule__Addition__Group_1_0_0__1__Impl : ( '+' ) ;
+ public final void rule__Addition__Group_1_0_0__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1070:1: ( ( '+' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1071:1: ( '+' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1071:1: ( '+' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1072:1: '+'
+ {
+ before(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1());
+ match(input,16,FOLLOW_16_in_rule__Addition__Group_1_0_0__1__Impl2135);
+ after(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_0__1__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1089:1: rule__Addition__Group_1_0_1__0 : rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1 ;
+ public final void rule__Addition__Group_1_0_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1093:1: ( rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1094:2: rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_1__0__Impl_in_rule__Addition__Group_1_0_1__02170);
+ rule__Addition__Group_1_0_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_1__1_in_rule__Addition__Group_1_0_1__02173);
+ rule__Addition__Group_1_0_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_1__0"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1101:1: rule__Addition__Group_1_0_1__0__Impl : ( () ) ;
+ public final void rule__Addition__Group_1_0_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1105:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1106:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1106:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1107:1: ()
+ {
+ before(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1108:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1110:1:
+ {
+ }
+
+ after(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_1__0__Impl"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1120:1: rule__Addition__Group_1_0_1__1 : rule__Addition__Group_1_0_1__1__Impl ;
+ public final void rule__Addition__Group_1_0_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1124:1: ( rule__Addition__Group_1_0_1__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1125:2: rule__Addition__Group_1_0_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Addition__Group_1_0_1__1__Impl_in_rule__Addition__Group_1_0_1__12231);
+ rule__Addition__Group_1_0_1__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_1__1"
+
+
+ // $ANTLR start "rule__Addition__Group_1_0_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1131:1: rule__Addition__Group_1_0_1__1__Impl : ( '-' ) ;
+ public final void rule__Addition__Group_1_0_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1135:1: ( ( '-' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1136:1: ( '-' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1136:1: ( '-' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1137:1: '-'
+ {
+ before(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+ match(input,17,FOLLOW_17_in_rule__Addition__Group_1_0_1__1__Impl2259);
+ after(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__Group_1_0_1__1__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1154:1: rule__Multiplication__Group__0 : rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 ;
+ public final void rule__Multiplication__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1158:1: ( rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1159:2: rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group__0__Impl_in_rule__Multiplication__Group__02294);
+ rule__Multiplication__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Multiplication__Group__1_in_rule__Multiplication__Group__02297);
+ rule__Multiplication__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group__0"
+
+
+ // $ANTLR start "rule__Multiplication__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1166:1: rule__Multiplication__Group__0__Impl : ( ruleNegatedExpression ) ;
+ public final void rule__Multiplication__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1170:1: ( ( ruleNegatedExpression ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1171:1: ( ruleNegatedExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1171:1: ( ruleNegatedExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1172:1: ruleNegatedExpression
+ {
+ before(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0());
+ pushFollow(FOLLOW_ruleNegatedExpression_in_rule__Multiplication__Group__0__Impl2324);
+ ruleNegatedExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group__0__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1183:1: rule__Multiplication__Group__1 : rule__Multiplication__Group__1__Impl ;
+ public final void rule__Multiplication__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1187:1: ( rule__Multiplication__Group__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1188:2: rule__Multiplication__Group__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group__1__Impl_in_rule__Multiplication__Group__12353);
+ rule__Multiplication__Group__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group__1"
+
+
+ // $ANTLR start "rule__Multiplication__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1194:1: rule__Multiplication__Group__1__Impl : ( ( rule__Multiplication__Group_1__0 )* ) ;
+ public final void rule__Multiplication__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1198:1: ( ( ( rule__Multiplication__Group_1__0 )* ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1199:1: ( ( rule__Multiplication__Group_1__0 )* )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1199:1: ( ( rule__Multiplication__Group_1__0 )* )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1200:1: ( rule__Multiplication__Group_1__0 )*
+ {
+ before(grammarAccess.getMultiplicationAccess().getGroup_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1201:1: ( rule__Multiplication__Group_1__0 )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>=18 && LA8_0<=19)) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1201:2: rule__Multiplication__Group_1__0
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1__0_in_rule__Multiplication__Group__1__Impl2380);
+ rule__Multiplication__Group_1__0();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ after(grammarAccess.getMultiplicationAccess().getGroup_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group__1__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1215:1: rule__Multiplication__Group_1__0 : rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 ;
+ public final void rule__Multiplication__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1219:1: ( rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1220:2: rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1__0__Impl_in_rule__Multiplication__Group_1__02415);
+ rule__Multiplication__Group_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Multiplication__Group_1__1_in_rule__Multiplication__Group_1__02418);
+ rule__Multiplication__Group_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1__0"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1227:1: rule__Multiplication__Group_1__0__Impl : ( ( rule__Multiplication__Alternatives_1_0 ) ) ;
+ public final void rule__Multiplication__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1231:1: ( ( ( rule__Multiplication__Alternatives_1_0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1232:1: ( ( rule__Multiplication__Alternatives_1_0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1232:1: ( ( rule__Multiplication__Alternatives_1_0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1233:1: ( rule__Multiplication__Alternatives_1_0 )
+ {
+ before(grammarAccess.getMultiplicationAccess().getAlternatives_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1234:1: ( rule__Multiplication__Alternatives_1_0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1234:2: rule__Multiplication__Alternatives_1_0
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Alternatives_1_0_in_rule__Multiplication__Group_1__0__Impl2445);
+ rule__Multiplication__Alternatives_1_0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getAlternatives_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1__0__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1244:1: rule__Multiplication__Group_1__1 : rule__Multiplication__Group_1__1__Impl ;
+ public final void rule__Multiplication__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1248:1: ( rule__Multiplication__Group_1__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1249:2: rule__Multiplication__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1__1__Impl_in_rule__Multiplication__Group_1__12475);
+ rule__Multiplication__Group_1__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1__1"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1255:1: rule__Multiplication__Group_1__1__Impl : ( ( rule__Multiplication__RightAssignment_1_1 ) ) ;
+ public final void rule__Multiplication__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1259:1: ( ( ( rule__Multiplication__RightAssignment_1_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1260:1: ( ( rule__Multiplication__RightAssignment_1_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1260:1: ( ( rule__Multiplication__RightAssignment_1_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1261:1: ( rule__Multiplication__RightAssignment_1_1 )
+ {
+ before(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1262:1: ( rule__Multiplication__RightAssignment_1_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1262:2: rule__Multiplication__RightAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__Multiplication__RightAssignment_1_1_in_rule__Multiplication__Group_1__1__Impl2502);
+ rule__Multiplication__RightAssignment_1_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1__1__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_0__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1276:1: rule__Multiplication__Group_1_0_0__0 : rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1 ;
+ public final void rule__Multiplication__Group_1_0_0__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1280:1: ( rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1281:2: rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__0__Impl_in_rule__Multiplication__Group_1_0_0__02536);
+ rule__Multiplication__Group_1_0_0__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__1_in_rule__Multiplication__Group_1_0_0__02539);
+ rule__Multiplication__Group_1_0_0__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_0__0"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_0__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1288:1: rule__Multiplication__Group_1_0_0__0__Impl : ( () ) ;
+ public final void rule__Multiplication__Group_1_0_0__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1292:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1293:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1293:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1294:1: ()
+ {
+ before(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1295:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1297:1:
+ {
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_0__0__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_0__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1307:1: rule__Multiplication__Group_1_0_0__1 : rule__Multiplication__Group_1_0_0__1__Impl ;
+ public final void rule__Multiplication__Group_1_0_0__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1311:1: ( rule__Multiplication__Group_1_0_0__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1312:2: rule__Multiplication__Group_1_0_0__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__1__Impl_in_rule__Multiplication__Group_1_0_0__12597);
+ rule__Multiplication__Group_1_0_0__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_0__1"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_0__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1318:1: rule__Multiplication__Group_1_0_0__1__Impl : ( '*' ) ;
+ public final void rule__Multiplication__Group_1_0_0__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1322:1: ( ( '*' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1323:1: ( '*' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1323:1: ( '*' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1324:1: '*'
+ {
+ before(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+ match(input,18,FOLLOW_18_in_rule__Multiplication__Group_1_0_0__1__Impl2625);
+ after(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_0__1__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1341:1: rule__Multiplication__Group_1_0_1__0 : rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1 ;
+ public final void rule__Multiplication__Group_1_0_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1345:1: ( rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1346:2: rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__0__Impl_in_rule__Multiplication__Group_1_0_1__02660);
+ rule__Multiplication__Group_1_0_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__1_in_rule__Multiplication__Group_1_0_1__02663);
+ rule__Multiplication__Group_1_0_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_1__0"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1353:1: rule__Multiplication__Group_1_0_1__0__Impl : ( () ) ;
+ public final void rule__Multiplication__Group_1_0_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1357:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1358:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1358:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1359:1: ()
+ {
+ before(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1360:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1362:1:
+ {
+ }
+
+ after(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_1__0__Impl"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1372:1: rule__Multiplication__Group_1_0_1__1 : rule__Multiplication__Group_1_0_1__1__Impl ;
+ public final void rule__Multiplication__Group_1_0_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1376:1: ( rule__Multiplication__Group_1_0_1__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1377:2: rule__Multiplication__Group_1_0_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__1__Impl_in_rule__Multiplication__Group_1_0_1__12721);
+ rule__Multiplication__Group_1_0_1__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_1__1"
+
+
+ // $ANTLR start "rule__Multiplication__Group_1_0_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1383:1: rule__Multiplication__Group_1_0_1__1__Impl : ( '/' ) ;
+ public final void rule__Multiplication__Group_1_0_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1387:1: ( ( '/' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1388:1: ( '/' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1388:1: ( '/' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1389:1: '/'
+ {
+ before(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+ match(input,19,FOLLOW_19_in_rule__Multiplication__Group_1_0_1__1__Impl2749);
+ after(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__Group_1_0_1__1__Impl"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1406:1: rule__NegatedExpression__Group__0 : rule__NegatedExpression__Group__0__Impl rule__NegatedExpression__Group__1 ;
+ public final void rule__NegatedExpression__Group__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1410:1: ( rule__NegatedExpression__Group__0__Impl rule__NegatedExpression__Group__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1411:2: rule__NegatedExpression__Group__0__Impl rule__NegatedExpression__Group__1
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__0__Impl_in_rule__NegatedExpression__Group__02784);
+ rule__NegatedExpression__Group__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__1_in_rule__NegatedExpression__Group__02787);
+ rule__NegatedExpression__Group__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__0"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1418:1: rule__NegatedExpression__Group__0__Impl : ( () ) ;
+ public final void rule__NegatedExpression__Group__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1422:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1423:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1423:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1424:1: ()
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1425:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1427:1:
+ {
+ }
+
+ after(grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__0__Impl"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1437:1: rule__NegatedExpression__Group__1 : rule__NegatedExpression__Group__1__Impl rule__NegatedExpression__Group__2 ;
+ public final void rule__NegatedExpression__Group__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1441:1: ( rule__NegatedExpression__Group__1__Impl rule__NegatedExpression__Group__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1442:2: rule__NegatedExpression__Group__1__Impl rule__NegatedExpression__Group__2
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__1__Impl_in_rule__NegatedExpression__Group__12845);
+ rule__NegatedExpression__Group__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__2_in_rule__NegatedExpression__Group__12848);
+ rule__NegatedExpression__Group__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__1"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1449:1: rule__NegatedExpression__Group__1__Impl : ( ( rule__NegatedExpression__NegateAssignment_1 )? ) ;
+ public final void rule__NegatedExpression__Group__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1453:1: ( ( ( rule__NegatedExpression__NegateAssignment_1 )? ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1454:1: ( ( rule__NegatedExpression__NegateAssignment_1 )? )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1454:1: ( ( rule__NegatedExpression__NegateAssignment_1 )? )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1455:1: ( rule__NegatedExpression__NegateAssignment_1 )?
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getNegateAssignment_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1456:1: ( rule__NegatedExpression__NegateAssignment_1 )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==17) ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1456:2: rule__NegatedExpression__NegateAssignment_1
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__NegateAssignment_1_in_rule__NegatedExpression__Group__1__Impl2875);
+ rule__NegatedExpression__NegateAssignment_1();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getNegatedExpressionAccess().getNegateAssignment_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__1__Impl"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1466:1: rule__NegatedExpression__Group__2 : rule__NegatedExpression__Group__2__Impl ;
+ public final void rule__NegatedExpression__Group__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1470:1: ( rule__NegatedExpression__Group__2__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1471:2: rule__NegatedExpression__Group__2__Impl
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__Group__2__Impl_in_rule__NegatedExpression__Group__22906);
+ rule__NegatedExpression__Group__2__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__2"
+
+
+ // $ANTLR start "rule__NegatedExpression__Group__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1477:1: rule__NegatedExpression__Group__2__Impl : ( ( rule__NegatedExpression__ExpAssignment_2 ) ) ;
+ public final void rule__NegatedExpression__Group__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1481:1: ( ( ( rule__NegatedExpression__ExpAssignment_2 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1482:1: ( ( rule__NegatedExpression__ExpAssignment_2 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1482:1: ( ( rule__NegatedExpression__ExpAssignment_2 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1483:1: ( rule__NegatedExpression__ExpAssignment_2 )
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getExpAssignment_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1484:1: ( rule__NegatedExpression__ExpAssignment_2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1484:2: rule__NegatedExpression__ExpAssignment_2
+ {
+ pushFollow(FOLLOW_rule__NegatedExpression__ExpAssignment_2_in_rule__NegatedExpression__Group__2__Impl2933);
+ rule__NegatedExpression__ExpAssignment_2();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getNegatedExpressionAccess().getExpAssignment_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__Group__2__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_0__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1500:1: rule__PrimaryExpression__Group_0__0 : rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 ;
+ public final void rule__PrimaryExpression__Group_0__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1504:1: ( rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1505:2: rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__0__Impl_in_rule__PrimaryExpression__Group_0__02969);
+ rule__PrimaryExpression__Group_0__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__1_in_rule__PrimaryExpression__Group_0__02972);
+ rule__PrimaryExpression__Group_0__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_0__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_0__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1512:1: rule__PrimaryExpression__Group_0__0__Impl : ( () ) ;
+ public final void rule__PrimaryExpression__Group_0__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1516:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1517:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1517:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1518:1: ()
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1519:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1521:1:
+ {
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_0__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_0__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1531:1: rule__PrimaryExpression__Group_0__1 : rule__PrimaryExpression__Group_0__1__Impl ;
+ public final void rule__PrimaryExpression__Group_0__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1535:1: ( rule__PrimaryExpression__Group_0__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1536:2: rule__PrimaryExpression__Group_0__1__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__1__Impl_in_rule__PrimaryExpression__Group_0__13030);
+ rule__PrimaryExpression__Group_0__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_0__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_0__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1542:1: rule__PrimaryExpression__Group_0__1__Impl : ( ( rule__PrimaryExpression__ValueAssignment_0_1 ) ) ;
+ public final void rule__PrimaryExpression__Group_0__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1546:1: ( ( ( rule__PrimaryExpression__ValueAssignment_0_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1547:1: ( ( rule__PrimaryExpression__ValueAssignment_0_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1547:1: ( ( rule__PrimaryExpression__ValueAssignment_0_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1548:1: ( rule__PrimaryExpression__ValueAssignment_0_1 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_0_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1549:1: ( rule__PrimaryExpression__ValueAssignment_0_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1549:2: rule__PrimaryExpression__ValueAssignment_0_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__ValueAssignment_0_1_in_rule__PrimaryExpression__Group_0__1__Impl3057);
+ rule__PrimaryExpression__ValueAssignment_0_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_0_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_0__1__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1563:1: rule__PrimaryExpression__Group_1__0 : rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 ;
+ public final void rule__PrimaryExpression__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1567:1: ( rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1568:2: rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__0__Impl_in_rule__PrimaryExpression__Group_1__03091);
+ rule__PrimaryExpression__Group_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__1_in_rule__PrimaryExpression__Group_1__03094);
+ rule__PrimaryExpression__Group_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1575:1: rule__PrimaryExpression__Group_1__0__Impl : ( '(' ) ;
+ public final void rule__PrimaryExpression__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1579:1: ( ( '(' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1580:1: ( '(' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1580:1: ( '(' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1581:1: '('
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0());
+ match(input,20,FOLLOW_20_in_rule__PrimaryExpression__Group_1__0__Impl3122);
+ after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1594:1: rule__PrimaryExpression__Group_1__1 : rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 ;
+ public final void rule__PrimaryExpression__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1598:1: ( rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1599:2: rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__1__Impl_in_rule__PrimaryExpression__Group_1__13153);
+ rule__PrimaryExpression__Group_1__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__2_in_rule__PrimaryExpression__Group_1__13156);
+ rule__PrimaryExpression__Group_1__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1606:1: rule__PrimaryExpression__Group_1__1__Impl : ( ( rule__PrimaryExpression__ExpAssignment_1_1 ) ) ;
+ public final void rule__PrimaryExpression__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1610:1: ( ( ( rule__PrimaryExpression__ExpAssignment_1_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1611:1: ( ( rule__PrimaryExpression__ExpAssignment_1_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1611:1: ( ( rule__PrimaryExpression__ExpAssignment_1_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1612:1: ( rule__PrimaryExpression__ExpAssignment_1_1 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getExpAssignment_1_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1613:1: ( rule__PrimaryExpression__ExpAssignment_1_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1613:2: rule__PrimaryExpression__ExpAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__ExpAssignment_1_1_in_rule__PrimaryExpression__Group_1__1__Impl3183);
+ rule__PrimaryExpression__ExpAssignment_1_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getExpAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__1__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1623:1: rule__PrimaryExpression__Group_1__2 : rule__PrimaryExpression__Group_1__2__Impl ;
+ public final void rule__PrimaryExpression__Group_1__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1627:1: ( rule__PrimaryExpression__Group_1__2__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1628:2: rule__PrimaryExpression__Group_1__2__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__2__Impl_in_rule__PrimaryExpression__Group_1__23213);
+ rule__PrimaryExpression__Group_1__2__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__2"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_1__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1634:1: rule__PrimaryExpression__Group_1__2__Impl : ( ')' ) ;
+ public final void rule__PrimaryExpression__Group_1__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1638:1: ( ( ')' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1639:1: ( ')' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1639:1: ( ')' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1640:1: ')'
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2());
+ match(input,21,FOLLOW_21_in_rule__PrimaryExpression__Group_1__2__Impl3241);
+ after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_1__2__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1659:1: rule__PrimaryExpression__Group_2__0 : rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1 ;
+ public final void rule__PrimaryExpression__Group_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1663:1: ( rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1664:2: rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__0__Impl_in_rule__PrimaryExpression__Group_2__03278);
+ rule__PrimaryExpression__Group_2__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__1_in_rule__PrimaryExpression__Group_2__03281);
+ rule__PrimaryExpression__Group_2__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1671:1: rule__PrimaryExpression__Group_2__0__Impl : ( () ) ;
+ public final void rule__PrimaryExpression__Group_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1675:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1676:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1676:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1677:1: ()
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1678:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1680:1:
+ {
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1690:1: rule__PrimaryExpression__Group_2__1 : rule__PrimaryExpression__Group_2__1__Impl rule__PrimaryExpression__Group_2__2 ;
+ public final void rule__PrimaryExpression__Group_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1694:1: ( rule__PrimaryExpression__Group_2__1__Impl rule__PrimaryExpression__Group_2__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1695:2: rule__PrimaryExpression__Group_2__1__Impl rule__PrimaryExpression__Group_2__2
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__1__Impl_in_rule__PrimaryExpression__Group_2__13339);
+ rule__PrimaryExpression__Group_2__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__2_in_rule__PrimaryExpression__Group_2__13342);
+ rule__PrimaryExpression__Group_2__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1702:1: rule__PrimaryExpression__Group_2__1__Impl : ( ( rule__PrimaryExpression__RefAssignment_2_1 ) ) ;
+ public final void rule__PrimaryExpression__Group_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1706:1: ( ( ( rule__PrimaryExpression__RefAssignment_2_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1707:1: ( ( rule__PrimaryExpression__RefAssignment_2_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1707:1: ( ( rule__PrimaryExpression__RefAssignment_2_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1708:1: ( rule__PrimaryExpression__RefAssignment_2_1 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_2_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1709:1: ( rule__PrimaryExpression__RefAssignment_2_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1709:2: rule__PrimaryExpression__RefAssignment_2_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__RefAssignment_2_1_in_rule__PrimaryExpression__Group_2__1__Impl3369);
+ rule__PrimaryExpression__RefAssignment_2_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__1__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1719:1: rule__PrimaryExpression__Group_2__2 : rule__PrimaryExpression__Group_2__2__Impl ;
+ public final void rule__PrimaryExpression__Group_2__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1723:1: ( rule__PrimaryExpression__Group_2__2__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1724:2: rule__PrimaryExpression__Group_2__2__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__2__Impl_in_rule__PrimaryExpression__Group_2__23399);
+ rule__PrimaryExpression__Group_2__2__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__2"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1730:1: rule__PrimaryExpression__Group_2__2__Impl : ( ( rule__PrimaryExpression__Group_2_2__0 ) ) ;
+ public final void rule__PrimaryExpression__Group_2__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1734:1: ( ( ( rule__PrimaryExpression__Group_2_2__0 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1735:1: ( ( rule__PrimaryExpression__Group_2_2__0 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1735:1: ( ( rule__PrimaryExpression__Group_2_2__0 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1736:1: ( rule__PrimaryExpression__Group_2_2__0 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1737:1: ( rule__PrimaryExpression__Group_2_2__0 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1737:2: rule__PrimaryExpression__Group_2_2__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__0_in_rule__PrimaryExpression__Group_2__2__Impl3426);
+ rule__PrimaryExpression__Group_2_2__0();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2__2__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1753:1: rule__PrimaryExpression__Group_2_2__0 : rule__PrimaryExpression__Group_2_2__0__Impl rule__PrimaryExpression__Group_2_2__1 ;
+ public final void rule__PrimaryExpression__Group_2_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1757:1: ( rule__PrimaryExpression__Group_2_2__0__Impl rule__PrimaryExpression__Group_2_2__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1758:2: rule__PrimaryExpression__Group_2_2__0__Impl rule__PrimaryExpression__Group_2_2__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__0__Impl_in_rule__PrimaryExpression__Group_2_2__03462);
+ rule__PrimaryExpression__Group_2_2__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__1_in_rule__PrimaryExpression__Group_2_2__03465);
+ rule__PrimaryExpression__Group_2_2__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1765:1: rule__PrimaryExpression__Group_2_2__0__Impl : ( '(' ) ;
+ public final void rule__PrimaryExpression__Group_2_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1769:1: ( ( '(' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1770:1: ( '(' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1770:1: ( '(' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1771:1: '('
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0());
+ match(input,20,FOLLOW_20_in_rule__PrimaryExpression__Group_2_2__0__Impl3493);
+ after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1784:1: rule__PrimaryExpression__Group_2_2__1 : rule__PrimaryExpression__Group_2_2__1__Impl rule__PrimaryExpression__Group_2_2__2 ;
+ public final void rule__PrimaryExpression__Group_2_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1788:1: ( rule__PrimaryExpression__Group_2_2__1__Impl rule__PrimaryExpression__Group_2_2__2 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1789:2: rule__PrimaryExpression__Group_2_2__1__Impl rule__PrimaryExpression__Group_2_2__2
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__1__Impl_in_rule__PrimaryExpression__Group_2_2__13524);
+ rule__PrimaryExpression__Group_2_2__1__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__2_in_rule__PrimaryExpression__Group_2_2__13527);
+ rule__PrimaryExpression__Group_2_2__2();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1796:1: rule__PrimaryExpression__Group_2_2__1__Impl : ( ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )? ) ;
+ public final void rule__PrimaryExpression__Group_2_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1800:1: ( ( ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )? ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1801:1: ( ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )? )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1801:1: ( ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )? )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1802:1: ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )?
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1803:1: ( rule__PrimaryExpression__ArgsAssignment_2_2_1 )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_STRING)||LA10_0==17||LA10_0==20) ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1803:2: rule__PrimaryExpression__ArgsAssignment_2_2_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__ArgsAssignment_2_2_1_in_rule__PrimaryExpression__Group_2_2__1__Impl3554);
+ rule__PrimaryExpression__ArgsAssignment_2_2_1();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__1__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1813:1: rule__PrimaryExpression__Group_2_2__2 : rule__PrimaryExpression__Group_2_2__2__Impl rule__PrimaryExpression__Group_2_2__3 ;
+ public final void rule__PrimaryExpression__Group_2_2__2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1817:1: ( rule__PrimaryExpression__Group_2_2__2__Impl rule__PrimaryExpression__Group_2_2__3 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1818:2: rule__PrimaryExpression__Group_2_2__2__Impl rule__PrimaryExpression__Group_2_2__3
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__2__Impl_in_rule__PrimaryExpression__Group_2_2__23585);
+ rule__PrimaryExpression__Group_2_2__2__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__3_in_rule__PrimaryExpression__Group_2_2__23588);
+ rule__PrimaryExpression__Group_2_2__3();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__2"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__2__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1825:1: rule__PrimaryExpression__Group_2_2__2__Impl : ( ( rule__PrimaryExpression__Group_2_2_2__0 )* ) ;
+ public final void rule__PrimaryExpression__Group_2_2__2__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1829:1: ( ( ( rule__PrimaryExpression__Group_2_2_2__0 )* ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1830:1: ( ( rule__PrimaryExpression__Group_2_2_2__0 )* )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1830:1: ( ( rule__PrimaryExpression__Group_2_2_2__0 )* )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1831:1: ( rule__PrimaryExpression__Group_2_2_2__0 )*
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2_2());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1832:1: ( rule__PrimaryExpression__Group_2_2_2__0 )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==22) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1832:2: rule__PrimaryExpression__Group_2_2_2__0
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2_2__0_in_rule__PrimaryExpression__Group_2_2__2__Impl3615);
+ rule__PrimaryExpression__Group_2_2_2__0();
+
+ state._fsp--;
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+ after(grammarAccess.getPrimaryExpressionAccess().getGroup_2_2_2());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__2__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__3"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1842:1: rule__PrimaryExpression__Group_2_2__3 : rule__PrimaryExpression__Group_2_2__3__Impl ;
+ public final void rule__PrimaryExpression__Group_2_2__3() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1846:1: ( rule__PrimaryExpression__Group_2_2__3__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1847:2: rule__PrimaryExpression__Group_2_2__3__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2__3__Impl_in_rule__PrimaryExpression__Group_2_2__33646);
+ rule__PrimaryExpression__Group_2_2__3__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__3"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2__3__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1853:1: rule__PrimaryExpression__Group_2_2__3__Impl : ( ')' ) ;
+ public final void rule__PrimaryExpression__Group_2_2__3__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1857:1: ( ( ')' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1858:1: ( ')' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1858:1: ( ')' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1859:1: ')'
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3());
+ match(input,21,FOLLOW_21_in_rule__PrimaryExpression__Group_2_2__3__Impl3674);
+ after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2__3__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2_2__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1880:1: rule__PrimaryExpression__Group_2_2_2__0 : rule__PrimaryExpression__Group_2_2_2__0__Impl rule__PrimaryExpression__Group_2_2_2__1 ;
+ public final void rule__PrimaryExpression__Group_2_2_2__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1884:1: ( rule__PrimaryExpression__Group_2_2_2__0__Impl rule__PrimaryExpression__Group_2_2_2__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1885:2: rule__PrimaryExpression__Group_2_2_2__0__Impl rule__PrimaryExpression__Group_2_2_2__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2_2__0__Impl_in_rule__PrimaryExpression__Group_2_2_2__03713);
+ rule__PrimaryExpression__Group_2_2_2__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2_2__1_in_rule__PrimaryExpression__Group_2_2_2__03716);
+ rule__PrimaryExpression__Group_2_2_2__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2_2__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2_2__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1892:1: rule__PrimaryExpression__Group_2_2_2__0__Impl : ( ',' ) ;
+ public final void rule__PrimaryExpression__Group_2_2_2__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1896:1: ( ( ',' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1897:1: ( ',' )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1897:1: ( ',' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1898:1: ','
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0());
+ match(input,22,FOLLOW_22_in_rule__PrimaryExpression__Group_2_2_2__0__Impl3744);
+ after(grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2_2__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2_2__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1911:1: rule__PrimaryExpression__Group_2_2_2__1 : rule__PrimaryExpression__Group_2_2_2__1__Impl ;
+ public final void rule__PrimaryExpression__Group_2_2_2__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1915:1: ( rule__PrimaryExpression__Group_2_2_2__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1916:2: rule__PrimaryExpression__Group_2_2_2__1__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_2_2_2__1__Impl_in_rule__PrimaryExpression__Group_2_2_2__13775);
+ rule__PrimaryExpression__Group_2_2_2__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2_2__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_2_2_2__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1922:1: rule__PrimaryExpression__Group_2_2_2__1__Impl : ( ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 ) ) ;
+ public final void rule__PrimaryExpression__Group_2_2_2__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1926:1: ( ( ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1927:1: ( ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1927:1: ( ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1928:1: ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_2_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1929:1: ( rule__PrimaryExpression__ArgsAssignment_2_2_2_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1929:2: rule__PrimaryExpression__ArgsAssignment_2_2_2_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__ArgsAssignment_2_2_2_1_in_rule__PrimaryExpression__Group_2_2_2__1__Impl3802);
+ rule__PrimaryExpression__ArgsAssignment_2_2_2_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getArgsAssignment_2_2_2_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_2_2_2__1__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_3__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1943:1: rule__PrimaryExpression__Group_3__0 : rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1 ;
+ public final void rule__PrimaryExpression__Group_3__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1947:1: ( rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1948:2: rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__0__Impl_in_rule__PrimaryExpression__Group_3__03836);
+ rule__PrimaryExpression__Group_3__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__1_in_rule__PrimaryExpression__Group_3__03839);
+ rule__PrimaryExpression__Group_3__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_3__0"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_3__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1955:1: rule__PrimaryExpression__Group_3__0__Impl : ( () ) ;
+ public final void rule__PrimaryExpression__Group_3__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1959:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1960:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1960:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1961:1: ()
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1962:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1964:1:
+ {
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_3__0__Impl"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_3__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1974:1: rule__PrimaryExpression__Group_3__1 : rule__PrimaryExpression__Group_3__1__Impl ;
+ public final void rule__PrimaryExpression__Group_3__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1978:1: ( rule__PrimaryExpression__Group_3__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1979:2: rule__PrimaryExpression__Group_3__1__Impl
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__1__Impl_in_rule__PrimaryExpression__Group_3__13897);
+ rule__PrimaryExpression__Group_3__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_3__1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__Group_3__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1985:1: rule__PrimaryExpression__Group_3__1__Impl : ( ( rule__PrimaryExpression__RefAssignment_3_1 ) ) ;
+ public final void rule__PrimaryExpression__Group_3__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1989:1: ( ( ( rule__PrimaryExpression__RefAssignment_3_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1990:1: ( ( rule__PrimaryExpression__RefAssignment_3_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1990:1: ( ( rule__PrimaryExpression__RefAssignment_3_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1991:1: ( rule__PrimaryExpression__RefAssignment_3_1 )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_3_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1992:1: ( rule__PrimaryExpression__RefAssignment_3_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:1992:2: rule__PrimaryExpression__RefAssignment_3_1
+ {
+ pushFollow(FOLLOW_rule__PrimaryExpression__RefAssignment_3_1_in_rule__PrimaryExpression__Group_3__1__Impl3924);
+ rule__PrimaryExpression__RefAssignment_3_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getRefAssignment_3_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__Group_3__1__Impl"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_0__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2006:1: rule__FunctionArgument__Group_0__0 : rule__FunctionArgument__Group_0__0__Impl rule__FunctionArgument__Group_0__1 ;
+ public final void rule__FunctionArgument__Group_0__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2010:1: ( rule__FunctionArgument__Group_0__0__Impl rule__FunctionArgument__Group_0__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2011:2: rule__FunctionArgument__Group_0__0__Impl rule__FunctionArgument__Group_0__1
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_0__0__Impl_in_rule__FunctionArgument__Group_0__03958);
+ rule__FunctionArgument__Group_0__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_0__1_in_rule__FunctionArgument__Group_0__03961);
+ rule__FunctionArgument__Group_0__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_0__0"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_0__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2018:1: rule__FunctionArgument__Group_0__0__Impl : ( () ) ;
+ public final void rule__FunctionArgument__Group_0__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2022:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2023:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2023:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2024:1: ()
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2025:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2027:1:
+ {
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_0__0__Impl"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_0__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2037:1: rule__FunctionArgument__Group_0__1 : rule__FunctionArgument__Group_0__1__Impl ;
+ public final void rule__FunctionArgument__Group_0__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2041:1: ( rule__FunctionArgument__Group_0__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2042:2: rule__FunctionArgument__Group_0__1__Impl
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_0__1__Impl_in_rule__FunctionArgument__Group_0__14019);
+ rule__FunctionArgument__Group_0__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_0__1"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_0__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2048:1: rule__FunctionArgument__Group_0__1__Impl : ( ( rule__FunctionArgument__ValueAssignment_0_1 ) ) ;
+ public final void rule__FunctionArgument__Group_0__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2052:1: ( ( ( rule__FunctionArgument__ValueAssignment_0_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2053:1: ( ( rule__FunctionArgument__ValueAssignment_0_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2053:1: ( ( rule__FunctionArgument__ValueAssignment_0_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2054:1: ( rule__FunctionArgument__ValueAssignment_0_1 )
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getValueAssignment_0_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2055:1: ( rule__FunctionArgument__ValueAssignment_0_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2055:2: rule__FunctionArgument__ValueAssignment_0_1
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__ValueAssignment_0_1_in_rule__FunctionArgument__Group_0__1__Impl4046);
+ rule__FunctionArgument__ValueAssignment_0_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getValueAssignment_0_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_0__1__Impl"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_1__0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2069:1: rule__FunctionArgument__Group_1__0 : rule__FunctionArgument__Group_1__0__Impl rule__FunctionArgument__Group_1__1 ;
+ public final void rule__FunctionArgument__Group_1__0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2073:1: ( rule__FunctionArgument__Group_1__0__Impl rule__FunctionArgument__Group_1__1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2074:2: rule__FunctionArgument__Group_1__0__Impl rule__FunctionArgument__Group_1__1
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_1__0__Impl_in_rule__FunctionArgument__Group_1__04080);
+ rule__FunctionArgument__Group_1__0__Impl();
+
+ state._fsp--;
+
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_1__1_in_rule__FunctionArgument__Group_1__04083);
+ rule__FunctionArgument__Group_1__1();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_1__0"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_1__0__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2081:1: rule__FunctionArgument__Group_1__0__Impl : ( () ) ;
+ public final void rule__FunctionArgument__Group_1__0__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2085:1: ( ( () ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2086:1: ( () )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2086:1: ( () )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2087:1: ()
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2088:1: ()
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2090:1:
+ {
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0());
+
+ }
+
+
+ }
+
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_1__0__Impl"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_1__1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2100:1: rule__FunctionArgument__Group_1__1 : rule__FunctionArgument__Group_1__1__Impl ;
+ public final void rule__FunctionArgument__Group_1__1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2104:1: ( rule__FunctionArgument__Group_1__1__Impl )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2105:2: rule__FunctionArgument__Group_1__1__Impl
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__Group_1__1__Impl_in_rule__FunctionArgument__Group_1__14141);
+ rule__FunctionArgument__Group_1__1__Impl();
+
+ state._fsp--;
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_1__1"
+
+
+ // $ANTLR start "rule__FunctionArgument__Group_1__1__Impl"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2111:1: rule__FunctionArgument__Group_1__1__Impl : ( ( rule__FunctionArgument__ValueAssignment_1_1 ) ) ;
+ public final void rule__FunctionArgument__Group_1__1__Impl() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2115:1: ( ( ( rule__FunctionArgument__ValueAssignment_1_1 ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2116:1: ( ( rule__FunctionArgument__ValueAssignment_1_1 ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2116:1: ( ( rule__FunctionArgument__ValueAssignment_1_1 ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2117:1: ( rule__FunctionArgument__ValueAssignment_1_1 )
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getValueAssignment_1_1());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2118:1: ( rule__FunctionArgument__ValueAssignment_1_1 )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2118:2: rule__FunctionArgument__ValueAssignment_1_1
+ {
+ pushFollow(FOLLOW_rule__FunctionArgument__ValueAssignment_1_1_in_rule__FunctionArgument__Group_1__1__Impl4168);
+ rule__FunctionArgument__ValueAssignment_1_1();
+
+ state._fsp--;
+
+
+ }
+
+ after(grammarAccess.getFunctionArgumentAccess().getValueAssignment_1_1());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__Group_1__1__Impl"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__MetamodelAssignment_0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2135:1: rule__CompartmentTransitionDefinitions__MetamodelAssignment_0 : ( ( RULE_ID ) ) ;
+ public final void rule__CompartmentTransitionDefinitions__MetamodelAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2139:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2140:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2140:1: ( ( RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2141:1: ( RULE_ID )
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2142:1: ( RULE_ID )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2143:1: RULE_ID
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__CompartmentTransitionDefinitions__MetamodelAssignment_04213);
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1());
+
+ }
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__MetamodelAssignment_0"
+
+
+ // $ANTLR start "rule__CompartmentTransitionDefinitions__ExpressionAssignment_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2154:1: rule__CompartmentTransitionDefinitions__ExpressionAssignment_1 : ( ruleTransitionBlock ) ;
+ public final void rule__CompartmentTransitionDefinitions__ExpressionAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2158:1: ( ( ruleTransitionBlock ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2159:1: ( ruleTransitionBlock )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2159:1: ( ruleTransitionBlock )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2160:1: ruleTransitionBlock
+ {
+ before(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleTransitionBlock_in_rule__CompartmentTransitionDefinitions__ExpressionAssignment_14248);
+ ruleTransitionBlock();
+
+ state._fsp--;
+
+ after(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__CompartmentTransitionDefinitions__ExpressionAssignment_1"
+
+
+ // $ANTLR start "rule__TransitionBlock__BlockAssignment"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2172:1: rule__TransitionBlock__BlockAssignment : ( ruleBlock ) ;
+ public final void rule__TransitionBlock__BlockAssignment() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2176:1: ( ( ruleBlock ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2177:1: ( ruleBlock )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2177:1: ( ruleBlock )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2178:1: ruleBlock
+ {
+ before(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0());
+ pushFollow(FOLLOW_ruleBlock_in_rule__TransitionBlock__BlockAssignment4282);
+ ruleBlock();
+
+ state._fsp--;
+
+ after(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__TransitionBlock__BlockAssignment"
+
+
+ // $ANTLR start "rule__Block__StatementsAssignment_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2190:1: rule__Block__StatementsAssignment_1 : ( ruleDefStatement ) ;
+ public final void rule__Block__StatementsAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2194:1: ( ( ruleDefStatement ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2195:1: ( ruleDefStatement )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2195:1: ( ruleDefStatement )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2196:1: ruleDefStatement
+ {
+ before(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0());
+ pushFollow(FOLLOW_ruleDefStatement_in_rule__Block__StatementsAssignment_14316);
+ ruleDefStatement();
+
+ state._fsp--;
+
+ after(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__StatementsAssignment_1"
+
+
+ // $ANTLR start "rule__Block__RetAssignment_2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2205:1: rule__Block__RetAssignment_2 : ( ruleReturnStatement ) ;
+ public final void rule__Block__RetAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2209:1: ( ( ruleReturnStatement ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2210:1: ( ruleReturnStatement )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2210:1: ( ruleReturnStatement )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2211:1: ruleReturnStatement
+ {
+ before(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleReturnStatement_in_rule__Block__RetAssignment_24347);
+ ruleReturnStatement();
+
+ state._fsp--;
+
+ after(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Block__RetAssignment_2"
+
+
+ // $ANTLR start "rule__DefStatement__VarnameAssignment_0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2220:1: rule__DefStatement__VarnameAssignment_0 : ( RULE_ID ) ;
+ public final void rule__DefStatement__VarnameAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2224:1: ( ( RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2225:1: ( RULE_ID )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2225:1: ( RULE_ID )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2226:1: RULE_ID
+ {
+ before(grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__DefStatement__VarnameAssignment_04378);
+ after(grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__VarnameAssignment_0"
+
+
+ // $ANTLR start "rule__DefStatement__ExprAssignment_2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2235:1: rule__DefStatement__ExprAssignment_2 : ( ruleEvaluation ) ;
+ public final void rule__DefStatement__ExprAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2239:1: ( ( ruleEvaluation ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2240:1: ( ruleEvaluation )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2240:1: ( ruleEvaluation )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2241:1: ruleEvaluation
+ {
+ before(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0());
+ pushFollow(FOLLOW_ruleEvaluation_in_rule__DefStatement__ExprAssignment_24409);
+ ruleEvaluation();
+
+ state._fsp--;
+
+ after(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__DefStatement__ExprAssignment_2"
+
+
+ // $ANTLR start "rule__Evaluation__ExpressionAssignment_0"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2250:1: rule__Evaluation__ExpressionAssignment_0 : ( ruleExpression ) ;
+ public final void rule__Evaluation__ExpressionAssignment_0() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2254:1: ( ( ruleExpression ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2255:1: ( ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2255:1: ( ruleExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2256:1: ruleExpression
+ {
+ before(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0());
+ pushFollow(FOLLOW_ruleExpression_in_rule__Evaluation__ExpressionAssignment_04440);
+ ruleExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Evaluation__ExpressionAssignment_0"
+
+
+ // $ANTLR start "rule__Addition__RightAssignment_1_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2265:1: rule__Addition__RightAssignment_1_1 : ( ruleMultiplication ) ;
+ public final void rule__Addition__RightAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2269:1: ( ( ruleMultiplication ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2270:1: ( ruleMultiplication )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2270:1: ( ruleMultiplication )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2271:1: ruleMultiplication
+ {
+ before(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0());
+ pushFollow(FOLLOW_ruleMultiplication_in_rule__Addition__RightAssignment_1_14471);
+ ruleMultiplication();
+
+ state._fsp--;
+
+ after(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Addition__RightAssignment_1_1"
+
+
+ // $ANTLR start "rule__Multiplication__RightAssignment_1_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2280:1: rule__Multiplication__RightAssignment_1_1 : ( ruleNegatedExpression ) ;
+ public final void rule__Multiplication__RightAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2284:1: ( ( ruleNegatedExpression ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2285:1: ( ruleNegatedExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2285:1: ( ruleNegatedExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2286:1: ruleNegatedExpression
+ {
+ before(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0());
+ pushFollow(FOLLOW_ruleNegatedExpression_in_rule__Multiplication__RightAssignment_1_14502);
+ ruleNegatedExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__Multiplication__RightAssignment_1_1"
+
+
+ // $ANTLR start "rule__NegatedExpression__NegateAssignment_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2295:1: rule__NegatedExpression__NegateAssignment_1 : ( ( '-' ) ) ;
+ public final void rule__NegatedExpression__NegateAssignment_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2299:1: ( ( ( '-' ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2300:1: ( ( '-' ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2300:1: ( ( '-' ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2301:1: ( '-' )
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2302:1: ( '-' )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2303:1: '-'
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+ match(input,17,FOLLOW_17_in_rule__NegatedExpression__NegateAssignment_14538);
+ after(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+
+ }
+
+ after(grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__NegateAssignment_1"
+
+
+ // $ANTLR start "rule__NegatedExpression__ExpAssignment_2"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2318:1: rule__NegatedExpression__ExpAssignment_2 : ( rulePrimaryExpression ) ;
+ public final void rule__NegatedExpression__ExpAssignment_2() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2322:1: ( ( rulePrimaryExpression ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2323:1: ( rulePrimaryExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2323:1: ( rulePrimaryExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2324:1: rulePrimaryExpression
+ {
+ before(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0());
+ pushFollow(FOLLOW_rulePrimaryExpression_in_rule__NegatedExpression__ExpAssignment_24577);
+ rulePrimaryExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__NegatedExpression__ExpAssignment_2"
+
+
+ // $ANTLR start "rule__PrimaryExpression__ValueAssignment_0_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2333:1: rule__PrimaryExpression__ValueAssignment_0_1 : ( RULE_NUMBER ) ;
+ public final void rule__PrimaryExpression__ValueAssignment_0_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2337:1: ( ( RULE_NUMBER ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2338:1: ( RULE_NUMBER )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2338:1: ( RULE_NUMBER )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2339:1: RULE_NUMBER
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0());
+ match(input,RULE_NUMBER,FOLLOW_RULE_NUMBER_in_rule__PrimaryExpression__ValueAssignment_0_14608);
+ after(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__ValueAssignment_0_1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__ExpAssignment_1_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2348:1: rule__PrimaryExpression__ExpAssignment_1_1 : ( ruleExpression ) ;
+ public final void rule__PrimaryExpression__ExpAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2352:1: ( ( ruleExpression ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2353:1: ( ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2353:1: ( ruleExpression )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2354:1: ruleExpression
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0());
+ pushFollow(FOLLOW_ruleExpression_in_rule__PrimaryExpression__ExpAssignment_1_14639);
+ ruleExpression();
+
+ state._fsp--;
+
+ after(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__ExpAssignment_1_1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__RefAssignment_2_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2363:1: rule__PrimaryExpression__RefAssignment_2_1 : ( ( RULE_ID ) ) ;
+ public final void rule__PrimaryExpression__RefAssignment_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2367:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2368:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2368:1: ( ( RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2369:1: ( RULE_ID )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2370:1: ( RULE_ID )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2371:1: RULE_ID
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceIDTerminalRuleCall_2_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__PrimaryExpression__RefAssignment_2_14674);
+ after(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceIDTerminalRuleCall_2_1_0_1());
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__RefAssignment_2_1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__ArgsAssignment_2_2_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2382:1: rule__PrimaryExpression__ArgsAssignment_2_2_1 : ( ruleFunctionArgument ) ;
+ public final void rule__PrimaryExpression__ArgsAssignment_2_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2386:1: ( ( ruleFunctionArgument ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2387:1: ( ruleFunctionArgument )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2387:1: ( ruleFunctionArgument )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2388:1: ruleFunctionArgument
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0());
+ pushFollow(FOLLOW_ruleFunctionArgument_in_rule__PrimaryExpression__ArgsAssignment_2_2_14709);
+ ruleFunctionArgument();
+
+ state._fsp--;
+
+ after(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__ArgsAssignment_2_2_1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__ArgsAssignment_2_2_2_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2397:1: rule__PrimaryExpression__ArgsAssignment_2_2_2_1 : ( ruleFunctionArgument ) ;
+ public final void rule__PrimaryExpression__ArgsAssignment_2_2_2_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2401:1: ( ( ruleFunctionArgument ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2402:1: ( ruleFunctionArgument )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2402:1: ( ruleFunctionArgument )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2403:1: ruleFunctionArgument
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0());
+ pushFollow(FOLLOW_ruleFunctionArgument_in_rule__PrimaryExpression__ArgsAssignment_2_2_2_14740);
+ ruleFunctionArgument();
+
+ state._fsp--;
+
+ after(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__ArgsAssignment_2_2_2_1"
+
+
+ // $ANTLR start "rule__PrimaryExpression__RefAssignment_3_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2412:1: rule__PrimaryExpression__RefAssignment_3_1 : ( ( RULE_ID ) ) ;
+ public final void rule__PrimaryExpression__RefAssignment_3_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2416:1: ( ( ( RULE_ID ) ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2417:1: ( ( RULE_ID ) )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2417:1: ( ( RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2418:1: ( RULE_ID )
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0());
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2419:1: ( RULE_ID )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2420:1: RULE_ID
+ {
+ before(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1());
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__PrimaryExpression__RefAssignment_3_14775);
+ after(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1());
+
+ }
+
+ after(grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__PrimaryExpression__RefAssignment_3_1"
+
+
+ // $ANTLR start "rule__FunctionArgument__ValueAssignment_0_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2431:1: rule__FunctionArgument__ValueAssignment_0_1 : ( RULE_BOOLEAN ) ;
+ public final void rule__FunctionArgument__ValueAssignment_0_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2435:1: ( ( RULE_BOOLEAN ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2436:1: ( RULE_BOOLEAN )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2436:1: ( RULE_BOOLEAN )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2437:1: RULE_BOOLEAN
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0());
+ match(input,RULE_BOOLEAN,FOLLOW_RULE_BOOLEAN_in_rule__FunctionArgument__ValueAssignment_0_14810);
+ after(grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__ValueAssignment_0_1"
+
+
+ // $ANTLR start "rule__FunctionArgument__ValueAssignment_1_1"
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2446:1: rule__FunctionArgument__ValueAssignment_1_1 : ( RULE_STRING ) ;
+ public final void rule__FunctionArgument__ValueAssignment_1_1() throws RecognitionException {
+
+ int stackSize = keepStackSize();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2450:1: ( ( RULE_STRING ) )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2451:1: ( RULE_STRING )
+ {
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2451:1: ( RULE_STRING )
+ // ../org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/contentassist/antlr/internal/InternalCTDL.g:2452:1: RULE_STRING
+ {
+ before(grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0());
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__FunctionArgument__ValueAssignment_1_14841);
+ after(grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0());
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ restoreStackSize(stackSize);
+
+ }
+ return ;
+ }
+ // $ANTLR end "rule__FunctionArgument__ValueAssignment_1_1"
+
+ // Delegated rules
+
+
+
+
+ public static final BitSet FOLLOW_ruleCompartmentTransitionDefinitions_in_entryRuleCompartmentTransitionDefinitions61 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleCompartmentTransitionDefinitions68 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__Group__0_in_ruleCompartmentTransitionDefinitions94 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionBlock_in_entryRuleTransitionBlock123 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionBlock130 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__TransitionBlock__BlockAssignment_in_ruleTransitionBlock156 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBlock_in_entryRuleBlock187 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBlock194 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Block__Group__0_in_ruleBlock220 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefStatement_in_entryRuleDefStatement247 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDefStatement254 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__0_in_ruleDefStatement280 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement307 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleReturnStatement314 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ReturnStatement__Group__0_in_ruleReturnStatement340 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_entryRuleEvaluation367 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEvaluation374 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Evaluation__Group__0_in_ruleEvaluation400 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression427 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExpression434 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAddition_in_ruleExpression460 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAddition_in_entryRuleAddition486 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAddition493 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group__0_in_ruleAddition519 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_entryRuleMultiplication546 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMultiplication553 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group__0_in_ruleMultiplication579 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_entryRuleNegatedExpression606 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNegatedExpression613 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__0_in_ruleNegatedExpression639 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression666 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpression673 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Alternatives_in_rulePrimaryExpression699 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument726 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFunctionArgument733 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Alternatives_in_ruleFunctionArgument759 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__0_in_rule__Addition__Alternatives_1_0807 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__0_in_rule__Addition__Alternatives_1_0825 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__0_in_rule__Multiplication__Alternatives_1_0858 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__0_in_rule__Multiplication__Alternatives_1_0876 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__0_in_rule__PrimaryExpression__Alternatives909 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__0_in_rule__PrimaryExpression__Alternatives927 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__0_in_rule__PrimaryExpression__Alternatives945 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__0_in_rule__PrimaryExpression__Alternatives963 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_0__0_in_rule__FunctionArgument__Alternatives996 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_1__0_in_rule__FunctionArgument__Alternatives1014 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_rule__FunctionArgument__Alternatives1032 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__Group__0__Impl_in_rule__CompartmentTransitionDefinitions__Group__01065 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__Group__1_in_rule__CompartmentTransitionDefinitions__Group__01068 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__MetamodelAssignment_0_in_rule__CompartmentTransitionDefinitions__Group__0__Impl1095 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__Group__1__Impl_in_rule__CompartmentTransitionDefinitions__Group__11126 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__CompartmentTransitionDefinitions__ExpressionAssignment_1_in_rule__CompartmentTransitionDefinitions__Group__1__Impl1153 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Block__Group__0__Impl_in_rule__Block__Group__01189 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_rule__Block__Group__1_in_rule__Block__Group__01192 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Block__Group__1__Impl_in_rule__Block__Group__11250 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_rule__Block__Group__2_in_rule__Block__Group__11253 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Block__StatementsAssignment_1_in_rule__Block__Group__1__Impl1280 = new BitSet(new long[]{0x0000000000000012L});
+ public static final BitSet FOLLOW_rule__Block__Group__2__Impl_in_rule__Block__Group__21311 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Block__RetAssignment_2_in_rule__Block__Group__2__Impl1338 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__0__Impl_in_rule__DefStatement__Group__01374 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__1_in_rule__DefStatement__Group__01377 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__VarnameAssignment_0_in_rule__DefStatement__Group__0__Impl1404 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__1__Impl_in_rule__DefStatement__Group__11434 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__2_in_rule__DefStatement__Group__11437 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_13_in_rule__DefStatement__Group__1__Impl1465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__Group__2__Impl_in_rule__DefStatement__Group__21496 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__DefStatement__ExprAssignment_2_in_rule__DefStatement__Group__2__Impl1523 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ReturnStatement__Group__0__Impl_in_rule__ReturnStatement__Group__01559 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__ReturnStatement__Group__1_in_rule__ReturnStatement__Group__01562 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_14_in_rule__ReturnStatement__Group__0__Impl1590 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__ReturnStatement__Group__1__Impl_in_rule__ReturnStatement__Group__11621 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_rule__ReturnStatement__Group__1__Impl1648 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Evaluation__Group__0__Impl_in_rule__Evaluation__Group__01681 = new BitSet(new long[]{0x0000000000008000L});
+ public static final BitSet FOLLOW_rule__Evaluation__Group__1_in_rule__Evaluation__Group__01684 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Evaluation__ExpressionAssignment_0_in_rule__Evaluation__Group__0__Impl1711 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Evaluation__Group__1__Impl_in_rule__Evaluation__Group__11741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_15_in_rule__Evaluation__Group__1__Impl1769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group__0__Impl_in_rule__Addition__Group__01804 = new BitSet(new long[]{0x0000000000030000L});
+ public static final BitSet FOLLOW_rule__Addition__Group__1_in_rule__Addition__Group__01807 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_rule__Addition__Group__0__Impl1834 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group__1__Impl_in_rule__Addition__Group__11863 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1__0_in_rule__Addition__Group__1__Impl1890 = new BitSet(new long[]{0x0000000000030002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1__0__Impl_in_rule__Addition__Group_1__01925 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1__1_in_rule__Addition__Group_1__01928 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Alternatives_1_0_in_rule__Addition__Group_1__0__Impl1955 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1__1__Impl_in_rule__Addition__Group_1__11985 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__RightAssignment_1_1_in_rule__Addition__Group_1__1__Impl2012 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__0__Impl_in_rule__Addition__Group_1_0_0__02046 = new BitSet(new long[]{0x0000000000010000L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__1_in_rule__Addition__Group_1_0_0__02049 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__1__Impl_in_rule__Addition__Group_1_0_0__12107 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_16_in_rule__Addition__Group_1_0_0__1__Impl2135 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__0__Impl_in_rule__Addition__Group_1_0_1__02170 = new BitSet(new long[]{0x0000000000030000L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__1_in_rule__Addition__Group_1_0_1__02173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__1__Impl_in_rule__Addition__Group_1_0_1__12231 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_17_in_rule__Addition__Group_1_0_1__1__Impl2259 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group__0__Impl_in_rule__Multiplication__Group__02294 = new BitSet(new long[]{0x00000000000C0000L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group__1_in_rule__Multiplication__Group__02297 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_rule__Multiplication__Group__0__Impl2324 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group__1__Impl_in_rule__Multiplication__Group__12353 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1__0_in_rule__Multiplication__Group__1__Impl2380 = new BitSet(new long[]{0x00000000000C0002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1__0__Impl_in_rule__Multiplication__Group_1__02415 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1__1_in_rule__Multiplication__Group_1__02418 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Alternatives_1_0_in_rule__Multiplication__Group_1__0__Impl2445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1__1__Impl_in_rule__Multiplication__Group_1__12475 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__RightAssignment_1_1_in_rule__Multiplication__Group_1__1__Impl2502 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__0__Impl_in_rule__Multiplication__Group_1_0_0__02536 = new BitSet(new long[]{0x0000000000040000L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__1_in_rule__Multiplication__Group_1_0_0__02539 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__1__Impl_in_rule__Multiplication__Group_1_0_0__12597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_18_in_rule__Multiplication__Group_1_0_0__1__Impl2625 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__0__Impl_in_rule__Multiplication__Group_1_0_1__02660 = new BitSet(new long[]{0x00000000000C0000L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__1_in_rule__Multiplication__Group_1_0_1__02663 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__1__Impl_in_rule__Multiplication__Group_1_0_1__12721 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_19_in_rule__Multiplication__Group_1_0_1__1__Impl2749 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__0__Impl_in_rule__NegatedExpression__Group__02784 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__1_in_rule__NegatedExpression__Group__02787 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__1__Impl_in_rule__NegatedExpression__Group__12845 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__2_in_rule__NegatedExpression__Group__12848 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__NegateAssignment_1_in_rule__NegatedExpression__Group__1__Impl2875 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__Group__2__Impl_in_rule__NegatedExpression__Group__22906 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__NegatedExpression__ExpAssignment_2_in_rule__NegatedExpression__Group__2__Impl2933 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__0__Impl_in_rule__PrimaryExpression__Group_0__02969 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__1_in_rule__PrimaryExpression__Group_0__02972 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__1__Impl_in_rule__PrimaryExpression__Group_0__13030 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__ValueAssignment_0_1_in_rule__PrimaryExpression__Group_0__1__Impl3057 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__0__Impl_in_rule__PrimaryExpression__Group_1__03091 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__1_in_rule__PrimaryExpression__Group_1__03094 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_20_in_rule__PrimaryExpression__Group_1__0__Impl3122 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__1__Impl_in_rule__PrimaryExpression__Group_1__13153 = new BitSet(new long[]{0x0000000000200000L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__2_in_rule__PrimaryExpression__Group_1__13156 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__ExpAssignment_1_1_in_rule__PrimaryExpression__Group_1__1__Impl3183 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__2__Impl_in_rule__PrimaryExpression__Group_1__23213 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_21_in_rule__PrimaryExpression__Group_1__2__Impl3241 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__0__Impl_in_rule__PrimaryExpression__Group_2__03278 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__1_in_rule__PrimaryExpression__Group_2__03281 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__1__Impl_in_rule__PrimaryExpression__Group_2__13339 = new BitSet(new long[]{0x0000000000100000L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__2_in_rule__PrimaryExpression__Group_2__13342 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__RefAssignment_2_1_in_rule__PrimaryExpression__Group_2__1__Impl3369 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__2__Impl_in_rule__PrimaryExpression__Group_2__23399 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__0_in_rule__PrimaryExpression__Group_2__2__Impl3426 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__0__Impl_in_rule__PrimaryExpression__Group_2_2__03462 = new BitSet(new long[]{0x00000000007200F0L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__1_in_rule__PrimaryExpression__Group_2_2__03465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_20_in_rule__PrimaryExpression__Group_2_2__0__Impl3493 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__1__Impl_in_rule__PrimaryExpression__Group_2_2__13524 = new BitSet(new long[]{0x00000000007200F0L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__2_in_rule__PrimaryExpression__Group_2_2__13527 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__ArgsAssignment_2_2_1_in_rule__PrimaryExpression__Group_2_2__1__Impl3554 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__2__Impl_in_rule__PrimaryExpression__Group_2_2__23585 = new BitSet(new long[]{0x00000000007200F0L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__3_in_rule__PrimaryExpression__Group_2_2__23588 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2_2__0_in_rule__PrimaryExpression__Group_2_2__2__Impl3615 = new BitSet(new long[]{0x0000000000400002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2__3__Impl_in_rule__PrimaryExpression__Group_2_2__33646 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_21_in_rule__PrimaryExpression__Group_2_2__3__Impl3674 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2_2__0__Impl_in_rule__PrimaryExpression__Group_2_2_2__03713 = new BitSet(new long[]{0x00000000001200F0L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2_2__1_in_rule__PrimaryExpression__Group_2_2_2__03716 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_22_in_rule__PrimaryExpression__Group_2_2_2__0__Impl3744 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2_2_2__1__Impl_in_rule__PrimaryExpression__Group_2_2_2__13775 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__ArgsAssignment_2_2_2_1_in_rule__PrimaryExpression__Group_2_2_2__1__Impl3802 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__0__Impl_in_rule__PrimaryExpression__Group_3__03836 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__1_in_rule__PrimaryExpression__Group_3__03839 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__1__Impl_in_rule__PrimaryExpression__Group_3__13897 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__PrimaryExpression__RefAssignment_3_1_in_rule__PrimaryExpression__Group_3__1__Impl3924 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_0__0__Impl_in_rule__FunctionArgument__Group_0__03958 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_0__1_in_rule__FunctionArgument__Group_0__03961 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_0__1__Impl_in_rule__FunctionArgument__Group_0__14019 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__ValueAssignment_0_1_in_rule__FunctionArgument__Group_0__1__Impl4046 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_1__0__Impl_in_rule__FunctionArgument__Group_1__04080 = new BitSet(new long[]{0x0000000000000080L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_1__1_in_rule__FunctionArgument__Group_1__04083 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__Group_1__1__Impl_in_rule__FunctionArgument__Group_1__14141 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rule__FunctionArgument__ValueAssignment_1_1_in_rule__FunctionArgument__Group_1__1__Impl4168 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__CompartmentTransitionDefinitions__MetamodelAssignment_04213 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionBlock_in_rule__CompartmentTransitionDefinitions__ExpressionAssignment_14248 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBlock_in_rule__TransitionBlock__BlockAssignment4282 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefStatement_in_rule__Block__StatementsAssignment_14316 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleReturnStatement_in_rule__Block__RetAssignment_24347 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__DefStatement__VarnameAssignment_04378 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_rule__DefStatement__ExprAssignment_24409 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_rule__Evaluation__ExpressionAssignment_04440 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_rule__Addition__RightAssignment_1_14471 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_rule__Multiplication__RightAssignment_1_14502 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_17_in_rule__NegatedExpression__NegateAssignment_14538 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_rule__NegatedExpression__ExpAssignment_24577 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_NUMBER_in_rule__PrimaryExpression__ValueAssignment_0_14608 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_rule__PrimaryExpression__ExpAssignment_1_14639 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__PrimaryExpression__RefAssignment_2_14674 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_rule__PrimaryExpression__ArgsAssignment_2_2_14709 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_rule__PrimaryExpression__ArgsAssignment_2_2_2_14740 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rule__PrimaryExpression__RefAssignment_3_14775 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_BOOLEAN_in_rule__FunctionArgument__ValueAssignment_0_14810 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_STRING_in_rule__FunctionArgument__ValueAssignment_1_14841 = new BitSet(new long[]{0x0000000000000002L});
+
+} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/internal/CTDLActivator.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/internal/CTDLActivator.java
new file mode 100644
index 000000000..e3bf35ae8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src-gen/org/eclipse/stem/model/ctdl/ui/internal/CTDLActivator.java
@@ -0,0 +1,95 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass.
+ */
+public class CTDLActivator extends AbstractUIPlugin {
+
+ public static final String ORG_ECLIPSE_STEM_MODEL_CTDL_CTDL = "org.eclipse.stem.model.ctdl.CTDL";
+
+ private static final Logger logger = Logger.getLogger(CTDLActivator.class);
+
+ private static CTDLActivator INSTANCE;
+
+ private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ INSTANCE = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ injectors.clear();
+ INSTANCE = null;
+ super.stop(context);
+ }
+
+ public static CTDLActivator getInstance() {
+ return INSTANCE;
+ }
+
+ public Injector getInjector(String language) {
+ synchronized (injectors) {
+ Injector injector = injectors.get(language);
+ if (injector == null) {
+ injectors.put(language, injector = createInjector(language));
+ }
+ return injector;
+ }
+ }
+
+ protected Injector createInjector(String language) {
+ try {
+ Module runtimeModule = getRuntimeModule(language);
+ Module sharedStateModule = getSharedStateModule();
+ Module uiModule = getUiModule(language);
+ Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+ return Guice.createInjector(mergedModule);
+ } catch (Exception e) {
+ logger.error("Failed to create injector for " + language);
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException("Failed to create injector for " + language, e);
+ }
+ }
+
+ protected Module getRuntimeModule(String grammar) {
+ if (ORG_ECLIPSE_STEM_MODEL_CTDL_CTDL.equals(grammar)) {
+ return new org.eclipse.stem.model.ctdl.CTDLRuntimeModule();
+ }
+
+ throw new IllegalArgumentException(grammar);
+ }
+
+ protected Module getUiModule(String grammar) {
+ if (ORG_ECLIPSE_STEM_MODEL_CTDL_CTDL.equals(grammar)) {
+ return new org.eclipse.stem.model.ctdl.ui.CTDLUiModule(this);
+ }
+
+ throw new IllegalArgumentException(grammar);
+ }
+
+ protected Module getSharedStateModule() {
+ return new SharedStateModule();
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/CTDLUiModule.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/CTDLUiModule.java
new file mode 100644
index 000000000..2f1e3ee8d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/CTDLUiModule.java
@@ -0,0 +1,33 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.ui;
+
+import org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration;
+import org.eclipse.stem.model.ctdl.ui.highlight.CTDLSemanticHighlighter;
+import org.eclipse.stem.model.ctdl.ui.hover.CTDLHoverProvider;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class CTDLUiModule extends org.eclipse.stem.model.ctdl.ui.AbstractCTDLUiModule {
+ public CTDLUiModule(AbstractUIPlugin plugin) {
+ super(plugin);
+ }
+
+ public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+ return CTDLHoverProvider.class;
+ }
+
+ public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+ return CTDLSemanticHighlighter.class;
+ }
+
+ public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() {
+ return CTDLHighlightConfiguration.class;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/contentassist/CTDLProposalProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/contentassist/CTDLProposalProvider.java
new file mode 100644
index 000000000..6f1ef7d8f
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/contentassist/CTDLProposalProvider.java
@@ -0,0 +1,59 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+import com.google.common.base.Function;
+/**
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
+ */
+public class CTDLProposalProvider extends AbstractCTDLProposalProvider
+{
+ /**
+ * sets the selection on the arguments for proposed functions.
+ */
+ @Override
+ public void completePrimaryExpression_Ref(EObject model,
+ Assignment assignment, ContentAssistContext context,
+ final ICompletionProposalAcceptor acceptor) {
+ super.completePrimaryExpression_Ref(model, assignment, context, new ICompletionProposalAcceptor.Delegate(acceptor) {
+
+ public void accept(ICompletionProposal proposal) {
+ if (proposal instanceof ConfigurableCompletionProposal) {
+ ConfigurableCompletionProposal ccp = (ConfigurableCompletionProposal) proposal;
+ String string = ccp.getReplacementString();
+ int indexOfOpenPar = string.indexOf('(');
+ if (indexOfOpenPar!=-1) {
+ int oldSelectionStart = ccp.getSelectionStart();
+ ccp.setSelectionStart(oldSelectionStart-string.length()+indexOfOpenPar+1);
+ ccp.setSelectionLength(oldSelectionStart-ccp.getSelectionStart()-1);
+ }
+ }
+ super.accept(proposal);
+ }
+
+ });
+ }
+
+ @Override
+ protected String getDisplayString(EObject element,
+ String qualifiedNameAsString, String shortName) {
+ return super.getDisplayString(element, qualifiedNameAsString, shortName);
+ }
+
+ @Override
+ protected Function<IEObjectDescription, ICompletionProposal> getProposalFactory(
+ String ruleName, ContentAssistContext contentAssistContext) {
+ // hackish: ignore concrete syntax constraints since we export functions with parenths
+ return super.getProposalFactory(null, contentAssistContext);
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorDialog.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorDialog.java
new file mode 100644
index 000000000..d9f4ccd7e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorDialog.java
@@ -0,0 +1,129 @@
+package org.eclipse.stem.model.ctdl.ui.embed;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.stem.model.metamodel.Package;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+
+public class EmbeddedEditorDialog extends Dialog
+{
+ Shell shell;
+
+ public EmbeddedEditorDialog(Shell parent, int style) {
+ super(parent, style);
+
+ }
+
+ public boolean open()
+ {
+
+ Shell parent = getParent();
+ shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.MAX | SWT.APPLICATION_MODAL);
+
+ shell.setMinimumSize( new Point(600, 400));
+ shell.setLayout(new FillLayout());
+ shell.setText("Xtext Editor Embed");
+
+ shell.addListener(SWT.Resize, new Listener() {
+ public void handleEvent(Event e) {
+ }
+ });
+
+
+ createLayout();
+
+ shell.pack();
+ shell.open();
+
+ Display display = parent.getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) display.sleep();
+ }
+ return true;
+
+ }
+
+
+ private void createLayout()
+ {
+ Composite page = new Composite(shell, SWT.NONE);
+ page.setLayout(new FillLayout());
+
+ List<Transition> transitions = getTransitionsFromFirstModel(loadMetamodel());
+ EmbeddedExpressionEditorComposite editor = new EmbeddedExpressionEditorComposite(page, SWT.NONE);
+ if (transitions != null && transitions.size() > 0) {
+ editor.setTransition(transitions.get(0));
+ }
+
+
+ }
+
+ private List<Transition> getTransitionsFromFirstModel(Package pkg)
+ {
+
+ if (pkg != null && pkg.getModels().size() > 0) {
+ return pkg.getModels().get(0).getTransitions();
+ }
+ return null;
+ }
+
+ private Package loadMetamodel()
+ {
+ String uri = "platform:/resource/org.eclipse.stem.dm.example1/model/example1.metamodel";
+
+
+ ResourceSet rs = new ResourceSetImpl();
+ Resource r = rs.createResource(URI.createURI(uri));
+
+ try {
+ r.load(Collections.emptyMap());
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+
+ Package pkg = null;
+ if (r.getContents().size() > 0) {
+ pkg = (Package)r.getContents().get(0);
+ }
+ return pkg;
+
+ }
+
+// private String getDocument()
+// {
+// try {
+// URI u = URI.createURI("platform:/resource/org.eclipse.stem.");
+// URIConverter conv = new ExtensibleURIConverterImpl();
+// InputStream is = conv.createInputStream(u);
+//
+// ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//
+// byte[] buf = new byte[256];
+//
+// while (is.read(buf) > -1) {
+// baos.write(buf);
+// }
+//
+// return new String(baos.toByteArray());
+// } catch (Exception e) {
+// e.printStackTrace();
+// return "";
+// }
+// }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorView.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorView.java
new file mode 100644
index 000000000..bf5256982
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedEditorView.java
@@ -0,0 +1,39 @@
+package org.eclipse.stem.model.ctdl.ui.embed;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+public class EmbeddedEditorView extends ViewPart {
+
+ @Override
+ public void createPartControl(final Composite parent) {
+
+ Button b = new Button(parent, SWT.PUSH);
+ b.setText("Open");
+ b.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ EmbeddedEditorDialog d = new EmbeddedEditorDialog(parent.getShell(), SWT.NONE);
+ d.open();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ }
+
+ @Override
+ public void setFocus() {
+
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedExpressionEditorComposite.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedExpressionEditorComposite.java
new file mode 100644
index 000000000..02d58abc3
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/embed/EmbeddedExpressionEditorComposite.java
@@ -0,0 +1,249 @@
+package org.eclipse.stem.model.ctdl.ui.embed;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.stem.model.ctdl.ContextSensitiveResourceWrapper;
+import org.eclipse.stem.model.ctdl.scoping.CTDLScopeProvider;
+import org.eclipse.stem.model.ctdl.scoping.MetamodelContextLinker;
+import org.eclipse.stem.model.ctdl.ui.internal.CTDLActivator;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.linking.lazy.LazyLinkingResource;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.embedded.EmbeddedEditor;
+import org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorFactory;
+import org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorModelAccess;
+import org.eclipse.xtext.ui.editor.embedded.IEditedResourceProvider;
+import org.eclipse.xtext.ui.editor.model.IXtextDocumentContentObserver;
+import org.eclipse.xtext.ui.editor.model.XtextDocument;
+import org.eclipse.xtext.ui.editor.validation.IValidationIssueProcessor;
+import org.eclipse.xtext.validation.Issue;
+
+import com.google.inject.Injector;
+
+@SuppressWarnings("restriction")
+public class EmbeddedExpressionEditorComposite extends Composite
+{
+ protected EmbeddedEditorFactory factory;
+ protected EmbeddedEditorFactory.Builder builder;
+ protected EmbeddedEditor embeddedEditor;
+ protected EmbeddedEditorModelAccess partialEditorModelAccess;
+
+ protected XtextResource resource;
+ protected IEditedResourceProvider resourceProvider;
+ protected ILinkingService linker;
+ protected Injector injector;
+
+ protected Transition transition;
+
+ protected Button applyButton, revertButton;
+
+ public EmbeddedExpressionEditorComposite(Composite parent, int style)
+ {
+ super(parent, style);
+ setLayout(new GridLayout(2, false));
+ setupEditor();
+ setupEditorButtons();
+ }
+
+
+ public void setTransition(Transition transition)
+ {
+ if (transition == null) {
+ return;
+ }
+
+ this.transition = transition;
+
+ if (resource != null
+ && resource instanceof LazyLinkingResource
+ && ((LazyLinkingResource)resource).getLinkingService() instanceof MetamodelContextLinker) {
+ MetamodelContextLinker linker = (MetamodelContextLinker)((LazyLinkingResource)resource).getLinkingService();
+ linker.setTransition(transition);
+
+ if (linker.getScopeProvider() instanceof CTDLScopeProvider) {
+ ((CTDLScopeProvider)linker.getScopeProvider()).setTransition(transition);
+ }
+
+// ILinkingService linkingService2 = injector.getInstance(ILinkingService.class);
+// IScopeProvider scopeProvider2 = injector.getInstance(IScopeProvider.class);
+
+ if (resource instanceof ContextSensitiveResourceWrapper) {
+ ((ContextSensitiveResourceWrapper) resource).setTransition(transition);
+ }
+
+ System.out.println("done");
+ }
+
+ //embeddedEditor.getDocument().get
+ String expr = transition.getExpression();
+
+ if (!isNullOrEmpty(expr)) {
+ embeddedEditor.getDocument().set(expr);
+ } else {
+ embeddedEditor.getDocument().set("");
+ }
+ //partialEditorModelAccess.updateModel("", transition.getExpression(), "");
+
+ embeddedEditor.getViewer().getTextWidget().setEditable(true);
+ //embeddedEditor.getViewer().getControl().setEnabled(true);
+ disableButtons();
+
+
+ }
+
+ static boolean isNullOrEmpty(String s)
+ {
+ return (s == null || "".equals(s.trim()));
+ }
+
+ protected void applyChanges()
+ {
+ XtextDocument doc = getDocument();
+ if (doc != null && transition != null) {
+ transition.setExpression(doc.get());
+ }
+ disableButtons();
+ }
+
+ protected void revertChanges()
+ {
+ XtextDocument doc = getDocument();
+ if (doc != null && transition != null) {
+ doc.set(transition.getExpression());
+ //embeddedEditor.getViewer().refresh();
+ //partialEditorModelAccess.updateModel("", transition.getExpression(), "");
+
+ //partialEditorModelAccess.
+ }
+ disableButtons();
+ }
+
+ protected void disableButtons()
+ {
+ applyButton.setEnabled(false);
+ revertButton.setEnabled(false);
+ }
+
+ protected void enableButtons()
+ {
+ applyButton.setEnabled(true);
+ revertButton.setEnabled(true);
+ }
+
+ protected XtextDocument getDocument()
+ {
+ return embeddedEditor.getDocument();
+ }
+
+ protected void setupEditorButtons()
+ {
+ applyButton = new Button(this, SWT.PUSH);
+ applyButton.setText("Apply Changes");
+ applyButton.setEnabled(false);
+ applyButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ if (MessageDialog.openConfirm(
+ getShell(), "Apply Changes", "Are you sure you wish to apply your changes?")) {
+ applyChanges();
+ }
+
+ }
+
+ });
+
+ revertButton = new Button(this, SWT.PUSH);
+ revertButton.setText("Revert Changes");
+ revertButton.setEnabled(false);
+ revertButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (MessageDialog.openConfirm(
+ getShell(), "Revert Changes", "Are you sure you wish to revert? All changes will be lost.")) {
+ revertChanges();
+ }
+ }
+ });
+ }
+
+ protected void setupEditor()
+ {
+ Composite editorCanvas = new Composite(this, SWT.NONE);
+ GridData canvasData = new GridData(GridData.FILL_BOTH);
+ canvasData.horizontalSpan = 2;
+ editorCanvas.setLayoutData(canvasData);
+ editorCanvas.setLayout(new GridLayout());
+ CTDLActivator activator = CTDLActivator.getInstance();
+ injector = activator.getInjector(CTDLActivator.ORG_ECLIPSE_STEM_MODEL_CTDL_CTDL);
+ factory = injector.getInstance(EmbeddedEditorFactory.class);
+
+ linker = (ILinkingService)injector.getInstance(ILinkingService.class);
+ resourceProvider = createResourceProvider();
+ builder = factory.newEditor(resourceProvider);
+
+ embeddedEditor = builder
+ .processIssuesBy(new EmbeddedEditorIssueProcessor())
+ .showErrorAndWarningAnnotations()
+ .withParent(editorCanvas);
+ partialEditorModelAccess = embeddedEditor.createPartialEditor(true);
+
+ embeddedEditor.getDocument().addXtextDocumentContentObserver(new IXtextDocumentContentObserver() {
+
+ @Override
+ public void documentChanged(DocumentEvent event) {
+ enableButtons();
+ }
+
+ @Override
+ public void documentAboutToBeChanged(DocumentEvent event) {
+ }
+
+ @Override
+ public void performNecessaryUpdates(Processor processor) {
+ }
+ });
+ }
+
+ private IEditedResourceProvider createResourceProvider()
+ {
+ return new IEditedResourceProvider() {
+ public XtextResource createResource() {
+ System.out.println("Create resource");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resource = (XtextResource) resourceSet.createResource(URI.createURI("empty.sctd"));
+ resourceSet.getResources().add(resource);
+ return resource;
+ }};
+ }
+
+ private class EmbeddedEditorIssueProcessor implements IValidationIssueProcessor
+ {
+
+ @Override
+ public void processIssues(List<Issue> issues, IProgressMonitor monitor)
+ {
+ for (Issue issue : issues) {
+ System.err.println(issue.getMessage());
+ }
+
+ }
+
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLHighlightConfiguration.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLHighlightConfiguration.java
new file mode 100644
index 000000000..c49c7b8fb
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLHighlightConfiguration.java
@@ -0,0 +1,85 @@
+package org.eclipse.stem.model.ctdl.ui.highlight;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.DefaultHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfigurationAcceptor;
+import org.eclipse.xtext.ui.editor.utils.TextStyle;
+
+public class CTDLHighlightConfiguration extends DefaultHighlightingConfiguration
+{
+ public static final String FUNCTION_ID = "function";
+ public static final String RELATIVE_COMPARTMENT_ID = "compartmentRelative";
+ public static final String ABSOLUTE_COMPARTMENT_ID = "compartmentAbsolute";
+ public static final String GLOBAL_VARIABLE_ID = "variableGlobal";
+ public static final String LOCAL_VARIABLE_ID = "variableLocal";
+ public static final String MODEL_PARAMETER_ID = "modelParameter";
+
+ public static final String BOOLEAN_ID = "boolean";
+
+ @Override
+ public void configure(IHighlightingConfigurationAcceptor acceptor) {
+ super.configure(acceptor);
+
+ acceptor.acceptDefaultHighlighting(BOOLEAN_ID, "Boolean", booleanTextStyle());
+
+ acceptor.acceptDefaultHighlighting(MODEL_PARAMETER_ID, "Model Parameter", modelParameterTextStyle());
+ acceptor.acceptDefaultHighlighting(GLOBAL_VARIABLE_ID, "Global Variable", globalVariableTextStyle());
+ acceptor.acceptDefaultHighlighting(LOCAL_VARIABLE_ID, "Local Variable", localVariableTextStyle());
+
+ acceptor.acceptDefaultHighlighting(RELATIVE_COMPARTMENT_ID, "Relative Compartment", relativeCompartmentTextStyle());
+ acceptor.acceptDefaultHighlighting(ABSOLUTE_COMPARTMENT_ID, "Absolute Compartment", absoluteCompartmentTextStyle());
+ acceptor.acceptDefaultHighlighting(FUNCTION_ID, "Function", functionTextStyle());
+ }
+
+ public TextStyle numberTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(102, 102, 102));
+ return textStyle;
+ }
+
+ public TextStyle booleanTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(128,0,128));
+ return textStyle;
+ }
+
+ public TextStyle modelParameterTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(165,0,0));
+ return textStyle;
+ }
+
+ public TextStyle globalVariableTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(64,0,128));
+ return textStyle;
+ }
+
+ public TextStyle localVariableTextStyle() {
+ TextStyle textStyle = globalVariableTextStyle().copy();
+ textStyle.setStyle(SWT.BOLD);
+ return textStyle;
+ }
+
+ public TextStyle relativeCompartmentTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(0, 128, 0));
+ return textStyle;
+ }
+
+ public TextStyle absoluteCompartmentTextStyle() {
+ TextStyle textStyle = relativeCompartmentTextStyle().copy();
+ textStyle.setStyle(SWT.BOLD);
+ return textStyle;
+ }
+
+ public TextStyle functionTextStyle() {
+ TextStyle textStyle = defaultTextStyle().copy();
+ textStyle.setColor(new RGB(0, 64, 128));
+ textStyle.setStyle(SWT.BOLD);
+ return textStyle;
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLSemanticHighlighter.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLSemanticHighlighter.java
new file mode 100644
index 000000000..e95f0d776
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/highlight/CTDLSemanticHighlighter.java
@@ -0,0 +1,140 @@
+package org.eclipse.stem.model.ctdl.ui.highlight;
+
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.ABSOLUTE_COMPARTMENT_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.BOOLEAN_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.FUNCTION_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.GLOBAL_VARIABLE_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.LOCAL_VARIABLE_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.MODEL_PARAMETER_ID;
+import static org.eclipse.stem.model.ctdl.ui.highlight.CTDLHighlightConfiguration.RELATIVE_COMPARTMENT_ID;
+import static org.eclipse.xtext.ui.editor.syntaxcoloring.DefaultHighlightingConfiguration.NUMBER_ID;
+import static org.eclipse.xtext.ui.editor.syntaxcoloring.DefaultHighlightingConfiguration.STRING_ID;
+
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.util.CtdlSwitch;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightedPositionAcceptor;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+
+public class CTDLSemanticHighlighter implements ISemanticHighlightingCalculator
+{
+
+ @Override
+ public void provideHighlightingFor(XtextResource resource,
+ IHighlightedPositionAcceptor acceptor) {
+
+ if (resource == null) return;
+
+ INode root = resource.getParseResult().getRootNode();
+ for (INode node : root.getAsTreeIterable()) {
+
+ System.out.println("Node: "+ node.getText() + " -> "+ node.getSemanticElement() +" -> "+ node.getGrammarElement());
+
+ String configRef = null;
+
+ if (node.getSemanticElement() instanceof FunctionCall && node.getGrammarElement() instanceof CrossReference) {
+ configRef = FUNCTION_ID;
+ } else if (node.getSemanticElement() instanceof DefStatement && node.getGrammarElement() instanceof RuleCall) {
+ configRef = LOCAL_VARIABLE_ID;
+ } else {
+ configRef = semanticLookup.doSwitch(node.getSemanticElement());
+ }
+
+ if (configRef != null) {
+ acceptor.addPosition(node.getOffset(), node.getLength(), configRef);
+ System.out.println(" Config Ref -> "+configRef);
+ }
+
+ }
+ }
+
+ private static final CtdlSwitch<String> semanticLookup = new CtdlSwitch<String>() {
+
+ @Override
+ public String caseVariableReference(VariableReference object) {
+ return doSwitch(object.getRef());
+ }
+
+
+
+ @Override
+ public String caseDefStatement(DefStatement object) {
+ return null;
+ }
+
+
+
+ @Override
+ public String caseDefStatementReference(DefStatementReference object) {
+ return LOCAL_VARIABLE_ID;
+ }
+
+
+
+ @Override
+ public String caseAbsoluteCompartmentValueReference(
+ AbsoluteCompartmentValueReference object) {
+ return ABSOLUTE_COMPARTMENT_ID;
+ }
+
+ @Override
+ public String caseRelativeCompartmentValueReference(
+ RelativeCompartmentValueReference object) {
+ return RELATIVE_COMPARTMENT_ID;
+ }
+
+ @Override
+ public String caseFunctionCall(FunctionCall object) {
+ return null;
+ }
+
+ @Override
+ public String caseLocalVariableReference(LocalVariableReference object) {
+ return LOCAL_VARIABLE_ID;
+ }
+
+ @Override
+ public String caseModelParamReference(ModelParamReference object) {
+ return MODEL_PARAMETER_ID;
+ }
+
+ @Override
+ public String caseGlobalVariableReference(GlobalVariableReference object) {
+ return GLOBAL_VARIABLE_ID;
+ }
+
+ @Override
+ public String caseNumberLiteral(NumberLiteral object) {
+ return NUMBER_ID;
+ }
+
+ @Override
+ public String caseStringLiteral(StringLiteral object) {
+ return STRING_ID;
+ }
+
+ @Override
+ public String caseBooleanLiteral(BooleanLiteral object) {
+ return BOOLEAN_ID;
+ }
+
+
+
+
+ };
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/hover/CTDLHoverProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/hover/CTDLHoverProvider.java
new file mode 100644
index 000000000..446657988
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/hover/CTDLHoverProvider.java
@@ -0,0 +1,32 @@
+package org.eclipse.stem.model.ctdl.ui.hover;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.IInformationControlCreator;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.xtext.ui.editor.hover.html.DefaultEObjectHoverProvider;
+
+public class CTDLHoverProvider extends DefaultEObjectHoverProvider
+{
+ public CTDLHoverProvider()
+ {
+
+ }
+
+ @Override
+ protected String getHoverInfoAsHtml(EObject o) {
+ return "<strong>"+o.getClass().getName()+"</strong>\nThis is some documentation that needs to be filled in.";
+ }
+
+ public IInformationControlCreatorProvider getHoverInfo(final EObject object, final ITextViewer viewer, final IRegion region) {
+ return new IInformationControlCreatorProvider() {
+
+ public IInformationControlCreator getHoverControlCreator() {
+ return CTDLHoverProvider.this.getHoverControlCreator();
+ }
+
+ public Object getInfo() {
+ return getHoverInfo(object, region, null);
+ }};
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLDescriptionLabelProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLDescriptionLabelProvider.java
new file mode 100644
index 000000000..715c36576
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLDescriptionLabelProvider.java
@@ -0,0 +1,27 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ *
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class CTDLDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+/*
+ //Labels and icons can be computed like this:
+
+ String text(IEObjectDescription ele) {
+ return "my "+ele.getName();
+ }
+
+ String image(IEObjectDescription ele) {
+ return ele.getEClass().getName() + ".gif";
+ }
+*/
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLLabelProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLLabelProvider.java
new file mode 100644
index 000000000..a141f8d3c
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/labeling/CTDLLabelProvider.java
@@ -0,0 +1,34 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.labeling;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
+
+import com.google.inject.Inject;
+
+/**
+ * Provides labels for a EObjects.
+ *
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class CTDLLabelProvider extends DefaultEObjectLabelProvider {
+
+ @Inject
+ public CTDLLabelProvider(AdapterFactoryLabelProvider delegate) {
+ super(delegate);
+ }
+
+/*
+ //Labels and icons can be computed like this:
+
+ String text(MyModel ele) {
+ return "my "+ele.getName();
+ }
+
+ String image(MyModel ele) {
+ return "MyModel.gif";
+ }
+*/
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/outline/CTDLOutlineTreeProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/outline/CTDLOutlineTreeProvider.java
new file mode 100644
index 000000000..359bcefd6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/outline/CTDLOutlineTreeProvider.java
@@ -0,0 +1,14 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * customization of the default outline structure
+ *
+ */
+public class CTDLOutlineTreeProvider extends DefaultOutlineTreeProvider {
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/quickfix/CTDLQuickfixProvider.java b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/quickfix/CTDLQuickfixProvider.java
new file mode 100644
index 000000000..9c166aced
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl.ui/src/org/eclipse/stem/model/ctdl/ui/quickfix/CTDLQuickfixProvider.java
@@ -0,0 +1,19 @@
+
+package org.eclipse.stem.model.ctdl.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+public class CTDLQuickfixProvider extends DefaultQuickfixProvider {
+
+// @Fix(MyJavaValidator.INVALID_NAME)
+// public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) {
+// acceptor.accept(issue, "Capitalize name", "Capitalize the name.", "upcase.png", new IModification() {
+// public void apply(IModificationContext context) throws BadLocationException {
+// IXtextDocument xtextDocument = context.getXtextDocument();
+// String firstLetter = xtextDocument.get(issue.getOffset(), 1);
+// xtextDocument.replace(issue.getOffset(), 1, firstLetter.toUpperCase());
+// }
+// });
+// }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.classpath b/modelgen/org.eclipse.stem.model.ctdl/.classpath
new file mode 100644
index 000000000..6ea81b1e6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="xtend-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.launch/Generate Language Infrastructure (org.eclipse.stem.model.ctdl).launch b/modelgen/org.eclipse.stem.model.ctdl/.launch/Generate Language Infrastructure (org.eclipse.stem.model.ctdl).launch
new file mode 100644
index 000000000..91a4832d1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.launch/Generate Language Infrastructure (org.eclipse.stem.model.ctdl).launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;launchConfigurationWorkingSet factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1299248699643_13&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.stem.model.ctdl&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.stem.model.ctdl.generator&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.stem.model.ctdl.tests&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.eclipse.stem.model.ctdl.ui&quot; type=&quot;4&quot;/&gt;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.stem.model.ctdl"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.stem.model.ctdl"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/>
+</launchConfiguration>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.launch/Launch Runtime Eclipse.launch b/modelgen/org.eclipse.stem.model.ctdl/.launch/Launch Runtime Eclipse.launch
new file mode 100644
index 000000000..bcf062c4b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.launch/Launch Runtime Eclipse.launch
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bad_container_name" value="/org.eclipse.stem.xtext.generate/.launch/"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Launch Runtime Eclipse"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-EclipseXtext"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -XX:MaxPermSize=256m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.project b/modelgen/org.eclipse.stem.model.ctdl/.project
new file mode 100644
index 000000000..87da545eb
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.stem.model.ctdl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.core.resources.prefs b/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..da9de7b16
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//src/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.xtend=UTF-8
+encoding/<project>=UTF-8
diff --git a/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.jdt.core.prefs b/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/modelgen/org.eclipse.stem.model.ctdl/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.ctdl/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..a002d4626
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/META-INF/MANIFEST.MF
@@ -0,0 +1,40 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.stem.model.ctdl
+Bundle-Vendor: Eclipse.org
+Bundle-Version: 2.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.stem.model.ctdl; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;visibility:=reexport,
+ org.eclipse.xtext.xbase;resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;resolution:=optional,
+ org.eclipse.xtext.xbase.lib;visibility:=reexport,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.eclipse.stem.core,
+ org.eclipse.stem.model,
+ org.eclipse.stem.model.ctdl.functions,
+ org.eclipse.xtext.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.common,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types,
+ org.eclipse.xtend.core
+Import-Package: org.apache.log4j,
+ org.eclipse.xtext.xbase.lib
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6,
+ J2SE-1.5
+Export-Package: org.eclipse.stem.model.ctdl,
+ org.eclipse.stem.model.ctdl.services,
+ org.eclipse.stem.model.ctdl.ctdl,
+ org.eclipse.stem.model.ctdl.ctdl.impl,
+ org.eclipse.stem.model.ctdl.ctdl.util,
+ org.eclipse.stem.model.ctdl.serializer,
+ org.eclipse.stem.model.ctdl.parser.antlr,
+ org.eclipse.stem.model.ctdl.parser.antlr.internal,
+ org.eclipse.stem.model.ctdl.validation,
+ org.eclipse.stem.model.ctdl.scoping,
+ org.eclipse.stem.model.ctdl.generator,
+ org.eclipse.stem.model.ctdl.formatting
diff --git a/modelgen/org.eclipse.stem.model.ctdl/build.properties b/modelgen/org.eclipse.stem.model.ctdl/build.properties
new file mode 100644
index 000000000..dfa0491cc
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+ src-gen/,\
+ xtend-gen/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
+
+customBuildCallbacks = customBuildCallbacks.xml
+customBuildCallbacks.failonerror = true
+customBuildCallbacks.inheritall = true
diff --git a/modelgen/org.eclipse.stem.model.ctdl/customBuildCallbacks.xml b/modelgen/org.eclipse.stem.model.ctdl/customBuildCallbacks.xml
new file mode 100644
index 000000000..44cb96db6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/customBuildCallbacks.xml
@@ -0,0 +1,194 @@
+<!-- ===================================================================== -->
+<!-- Custom targets called from a project's generated build.xml -->
+<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
+<!-- ===================================================================== -->
+<project name="Build specific targets and properties" default="noDefault">
+
+ <!-- ===================================================================== -->
+ <!-- Default target -->
+ <!-- ===================================================================== -->
+ <target name="noDefault">
+ <echo message="This file must be called with explicit targets" />
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target build.jars -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder to contain the build results -->
+ <!-- ===================================================================== -->
+ <target name="pre.build.jars">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target build.jars -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder to contain the build results -->
+ <!-- ===================================================================== -->
+ <target name="post.build.jars">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target build.sources -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder to contain the build results -->
+ <!-- ===================================================================== -->
+ <target name="pre.build.sources">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target build.sources -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder to contain the build results -->
+ <!-- ===================================================================== -->
+ <target name="post.build.sources">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the compilation target <name> -->
+ <!-- Substitute "name" with the name of the compilation target, eg @dot -->
+ <!-- Available parameters : -->
+ <!-- source.foldern : n = 1 ... N, the source folders -->
+ <!-- target.folder : where the results of the compilation go -->
+ <!-- <name>.classpath : name = name of the compilation target. A -->
+ <!-- reference to the classpath structure. -->
+ <!-- ===================================================================== -->
+ <target name="pre.name">
+ </target>
+
+ <target name="pre.@dot">
+ <path id="gen.classpath">
+ <path refid="@dot.classpath" />
+ <pathelement location="src" />
+ </path>
+
+ <!--<java classname="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"
+ classpathref="gen.classpath" fork="true">
+ <arg value="src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2" />
+ </java>
+
+ <eclipse.incrementalBuild project="org.eclipse.stem.model.ctdl" kind="clean"/>-->
+
+ <antcall target="compile-xtend" inheritRefs="true" />
+ </target>
+
+ <target name="compile-xtend">
+ <path id="gen.classpath">
+ <path refid="@dot.classpath" />
+ <pathelement location="src" />
+ </path>
+ <pathconvert pathsep="${path.separator}"
+ property="classpath-string"
+ refid="gen.classpath">
+ </pathconvert>
+ <echo>${classpath-string}</echo>
+ <java classpathref="gen.classpath"
+ classname="org.eclipse.xtend.core.compiler.batch.Main"
+ fork="true"
+ failonerror="yes">
+ <jvmarg line="-Dfile.encoding=UTF-8" />
+ <arg value="-cp" />
+ <arg value="${classpath-string}" />
+ <arg value="-d" />
+ <arg value="${basedir}/xtend-gen" />
+ <arg value="${basedir}/src-gen${path.separator}${basedir}/src" />
+ </java>
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do during the compilation target <name>, after the compile -->
+ <!-- but before jaring. Substitute "name" with the name of the compilation-->
+ <!-- target, eg @dot -->
+ <!-- Available parameters : -->
+ <!-- source.foldern : n = 1 ... N, the source folders -->
+ <!-- target.folder : where the results of the compilation go -->
+ <!-- <name>.classpath : name = name of the compilation target. A -->
+ <!-- reference to the classpath structure. -->
+ <!-- ===================================================================== -->
+ <target name="post.compile.name">
+ </target>
+
+ <target name="post.compile.@dot">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the compilation target <name> -->
+ <!-- Substitute "name" with the name of the compilation target, eg @dot -->
+ <!-- Available parameters : -->
+ <!-- jar.Location - the location of the compilation results -->
+ <!-- <name>.classpath : name = name of the compilation target. A -->
+ <!-- reference to the classpath structure. -->
+ <!-- ===================================================================== -->
+ <target name="post.name">
+ </target>
+
+ <target name="post.@dot">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target gather.bin.parts -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder containing the build results -->
+ <!-- target.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="pre.gather.bin.parts">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target gather.bin.parts -->
+ <!-- Available parameters : -->
+ <!-- build.result.folder - folder containing the build results -->
+ <!-- target.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="post.gather.bin.parts">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target gather.sources -->
+ <!-- Available parameters : -->
+ <!-- destination.temp.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="pre.gather.sources">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target gather.sources -->
+ <!-- Available parameters : -->
+ <!-- destination.temp.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="post.gather.sources">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target gather.logs -->
+ <!-- Available parameters : -->
+ <!-- destination.temp.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="pre.gather.logs">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target gather.logs -->
+ <!-- Available parameters : -->
+ <!-- destination.temp.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="post.gather.logs">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do before the target clean -->
+ <!-- Available parameters : -->
+ <!-- destination.temp.folder - destination folder -->
+ <!-- ===================================================================== -->
+ <target name="pre.clean">
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- Steps to do after the target clean -->
+ <!-- Available parameters : -->
+ <!-- plugin.destination - final destination of the build -->
+ <!-- build.result.folder - results of the compilation -->
+ <!-- temp.folder - temporary folder -->
+ <!-- ===================================================================== -->
+ <target name="post.clean">
+ </target>
+</project> \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl/plugin.xml b/modelgen/org.eclipse.stem.model.ctdl/plugin.xml
new file mode 100644
index 000000000..8c0209700
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http:///org/eclipse/stem/model/ctdl.ecore"
+ class = "org.eclipse.stem.model.ctdl.ctdl.CtdlPackage"
+ genModel = "org/eclipse/stem/model/ctdl/CTDL.genmodel" />
+
+ </extension>
+
+
+
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/plugin.xml_gen b/modelgen/org.eclipse.stem.model.ctdl/plugin.xml_gen
new file mode 100644
index 000000000..8c0209700
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/plugin.xml_gen
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http:///org/eclipse/stem/model/ctdl.ecore"
+ class = "org.eclipse.stem.model.ctdl.ctdl.CtdlPackage"
+ genModel = "org/eclipse/stem/model/ctdl/CTDL.genmodel" />
+
+ </extension>
+
+
+
+
+</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/AbstractCTDLRuntimeModule.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/AbstractCTDLRuntimeModule.java
new file mode 100644
index 000000000..b01c6d709
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/AbstractCTDLRuntimeModule.java
@@ -0,0 +1,172 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.stem.model.ctdl.CTDLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractCTDLRuntimeModule extends DefaultRuntimeModule {
+
+ protected Properties properties = null;
+
+ @Override
+ public void configure(Binder binder) {
+ properties = tryBindProperties(binder, "org/eclipse/stem/model/ctdl/CTDL.properties");
+ super.configure(binder);
+ }
+
+ public void configureLanguageName(Binder binder) {
+ binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.stem.model.ctdl.CTDL");
+ }
+
+ public void configureFileExtensions(Binder binder) {
+ if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+ binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("sctd");
+ }
+
+ // contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+ public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+ return org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+ public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+ return org.eclipse.stem.model.ctdl.serializer.CTDLSemanticSequencer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+ public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+ return org.eclipse.stem.model.ctdl.serializer.CTDLSyntacticSequencer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+ public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
+ return org.eclipse.xtext.serializer.impl.Serializer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+ return org.eclipse.stem.model.ctdl.parser.antlr.CTDLParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+ return org.eclipse.stem.model.ctdl.parser.antlr.CTDLAntlrTokenFileProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+ return org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLLexer.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public com.google.inject.Provider<org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLLexer> provideInternalCTDLLexer() {
+ return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public void configureRuntimeLexer(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+ public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+ @org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends org.eclipse.stem.model.ctdl.validation.CTDLJavaValidator> bindCTDLJavaValidator() {
+ return org.eclipse.stem.model.ctdl.validation.CTDLJavaValidator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+ return org.eclipse.stem.model.ctdl.scoping.CTDLScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+ public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+ binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+ }
+
+ // contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+ public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+ return org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+ return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+ return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+ binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+ public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+ return org.eclipse.stem.model.ctdl.generator.CTDLGenerator.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+ public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+ return org.eclipse.stem.model.ctdl.formatting.CTDLFormatter.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public java.lang.ClassLoader bindClassLoaderToInstance() {
+ return getClass().getClassLoader();
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
+ return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+ return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+ return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+ public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+ return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.ecore b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.ecore
new file mode 100644
index 000000000..8c306d1ff
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.ecore
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ctdl"
+ nsURI="http:///org/eclipse/stem/model/ctdl.ecore" nsPrefix="ctdl">
+ <eClassifiers xsi:type="ecore:EClass" name="CompartmentTransitionDefinitions">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" eType="#//MetamodelResource"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//TransitionBlock"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MetamodelResource">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model/model/metamodel.ecore#//Package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="model" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model/model/metamodel.ecore#//Model"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transition" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model/model/metamodel.ecore#//Transition"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TransitionBlock">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="block" eType="#//Block"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
+ eType="#//DefStatement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ret" eType="#//ReturnStatement"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DefStatement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="varname" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expr" eType="#//Evaluation"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReturnStatement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Evaluation" eSuperTypes="#//ReturnStatement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exp" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionReference">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ScopedVariableReference">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LocalVariableReference" eSuperTypes="#//ScopedVariableReference"/>
+ <eClassifiers xsi:type="ecore:EClass" name="CompartmentReference" eSuperTypes="#//ScopedVariableReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="obj" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model/model/metamodel.ecore#//Compartment"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModelParamReference" eSuperTypes="#//ScopedVariableReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="obj" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model/model/metamodel.ecore#//ModelParam"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GlobalVariable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Plus" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Minus" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Multi" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Div" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimaryExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="negate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NumberLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionCall" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="#//FunctionReference"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="args" upperBound="-1" eType="#//Expression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableReference" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="#//ScopedVariableReference"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExternalFunctionReference" eSuperTypes="#//FunctionReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="func" eType="ecore:EClass ../../../../../../../org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.ecore#//ExternalFunctionDefinition"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GlobalVariableReference" eSuperTypes="#//ScopedVariableReference"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DefStatementReference" eSuperTypes="#//LocalVariableReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="obj" eType="#//DefStatement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbsoluteCompartmentValueReference" eSuperTypes="#//CompartmentReference"/>
+ <eClassifiers xsi:type="ecore:EClass" name="RelativeCompartmentValueReference" eSuperTypes="#//CompartmentReference"/>
+</ecore:EPackage>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.genmodel b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.genmodel
new file mode 100644
index 000000000..889941f9c
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.genmodel
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.stem.model.ctdl/src-gen"
+ editDirectory="/org.eclipse.stem.model.ctdl.edit/src" editorDirectory="/org.eclipse.stem.model.ctdl.editor/src"
+ modelPluginID="org.eclipse.stem.model.ctdl" forceOverwrite="true" modelName="CTDL"
+ updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ complianceLevel="5.0" copyrightFields="false" editPluginID="org.eclipse.stem.model.ctdl.edit"
+ editorPluginID="org.eclipse.stem.model.ctdl.editor" runtimeVersion="2.7" usedGenPackages="../../../../../../../org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel#//functions ../../../../../../../org.eclipse.stem.model/model/metamodel.genmodel#//metamodel">
+ <genPackages prefix="Ctdl" basePackage="org.eclipse.stem.model.ctdl" disposableProviderFactory="true"
+ ecorePackage="CTDL.ecore#/">
+ <genClasses ecoreClass="CTDL.ecore#//CompartmentTransitionDefinitions">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//CompartmentTransitionDefinitions/metamodel"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//CompartmentTransitionDefinitions/expression"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//MetamodelResource">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//MetamodelResource/package"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//MetamodelResource/model"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//MetamodelResource/transition"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//TransitionBlock">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//TransitionBlock/block"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Block">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Block/statements"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Block/ret"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//DefStatement">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//DefStatement/varname"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//DefStatement/expr"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//ReturnStatement"/>
+ <genClasses ecoreClass="CTDL.ecore#//Evaluation">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Evaluation/expression"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Expression">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Expression/exp"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//FunctionReference">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//FunctionReference/name"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//ScopedVariableReference">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//ScopedVariableReference/name"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//LocalVariableReference"/>
+ <genClasses ecoreClass="CTDL.ecore#//CompartmentReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//CompartmentReference/obj"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//ModelParamReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//ModelParamReference/obj"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//GlobalVariable">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//GlobalVariable/name"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Plus">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Plus/left"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Plus/right"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Minus">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Minus/left"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Minus/right"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Multi">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Multi/left"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Multi/right"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//Div">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Div/left"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//Div/right"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//PrimaryExpression">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//PrimaryExpression/negate"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//NumberLiteral">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//NumberLiteral/value"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//FunctionCall">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//FunctionCall/ref"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference CTDL.ecore#//FunctionCall/args"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//VariableReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//VariableReference/ref"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//BooleanLiteral">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//BooleanLiteral/value"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//StringLiteral">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute CTDL.ecore#//StringLiteral/value"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//ExternalFunctionReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//ExternalFunctionReference/func"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//GlobalVariableReference"/>
+ <genClasses ecoreClass="CTDL.ecore#//DefStatementReference">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference CTDL.ecore#//DefStatementReference/obj"/>
+ </genClasses>
+ <genClasses ecoreClass="CTDL.ecore#//AbsoluteCompartmentValueReference"/>
+ <genClasses ecoreClass="CTDL.ecore#//RelativeCompartmentValueReference"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.xmi b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.xmi
new file mode 100644
index 000000000..35fc4aec8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDL.xmi
@@ -0,0 +1,679 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+ <xtext:Grammar name="org.eclipse.stem.model.ctdl.CTDL" usedGrammars="/1">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="metamodel">
+ <ePackage href="http:///org/eclipse/stem/model/metamodel.ecore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="extFunc">
+ <ePackage href="http:///org/eclipse/stem/model/ctdl/functions.ecore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="ctdl">
+ <ePackage href="http:///org/eclipse/stem/model/ctdl.ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="CompartmentTransitionDefinitions">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//CompartmentTransitionDefinitions"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="metamodel" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//MetamodelResource"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MetamodelResource">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//MetamodelResource"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="metamodel "/>
+ <elements xsi:type="xtext:Assignment" feature="package" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Package"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="model "/>
+ <elements xsi:type="xtext:Assignment" feature="model" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Model"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="transition "/>
+ <elements xsi:type="xtext:Assignment" feature="transition" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Transition"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="TransitionBlock">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//TransitionBlock"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="block" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Transition">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Transition"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Transition"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="source" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Compartment"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Assignment" feature="target" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Compartment"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Compartment">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Compartment"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Block">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Block"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Block"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="statements" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="ret" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="DefStatement">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//DefStatement"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="varname" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="expr" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ReturnStatement">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ReturnStatement"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="delta"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Evaluation">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Evaluation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Expression">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Addition">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="left" operator="=">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Plus"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="left" operator="=">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Minus"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="Multiplication">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="left" operator="=">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Multi"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="left" operator="=">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Div"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="NegatedExpression">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//PrimaryExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="negate" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="PrimaryExpression">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//NumberLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="exp" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//FunctionCall"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="ref" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//FunctionReference"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="args" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//VariableReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="ref" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ScopedVariableReference"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="FunctionArgument">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//Expression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//BooleanLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//StringLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="FunctionReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//FunctionReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ExternalFunctionReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="func" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl/functions.ecore#//ExternalFunctionDefinition"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ScopedVariableReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ScopedVariableReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//LocalVariableReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//GlobalVariableReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//CompartmentReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ModelParamReference"/>
+ </type>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="LocalVariableReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//LocalVariableReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//DefStatementReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="obj" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//DefStatement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="CompartmentReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//CompartmentReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="obj" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//Compartment"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//AbsoluteCompartmentValueReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//RelativeCompartmentValueReference"/>
+ </type>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ModelParamReference">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//ModelParamReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="obj" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/metamodel.ecore#//ModelParam"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </terminal>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="GlobalVariable">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http:///org/eclipse/stem/model/ctdl.ecore#//GlobalVariable"/>
+ </type>
+ <alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="BOOLEAN">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="true"/>
+ <elements xsi:type="xtext:Keyword" value="false"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="NUMBER">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:CharacterRange" cardinality="*">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="e"/>
+ <elements xsi:type="xtext:Keyword" value="E"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="INT">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="this one has been deactivated"/>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:TerminalRule" name="ID">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="INT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="STRING">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="/*"/>
+ <elements xsi:type="xtext:UntilToken">
+ <terminal xsi:type="xtext:Keyword" value="*/"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="//"/>
+ <elements xsi:type="xtext:NegatedToken" cardinality="*">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="WS">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Wildcard"/>
+ </rules>
+ </xtext:Grammar>
+</xmi:XMI>
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDLStandaloneSetupGenerated.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDLStandaloneSetupGenerated.java
new file mode 100644
index 000000000..39ab25db4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/CTDLStandaloneSetupGenerated.java
@@ -0,0 +1,43 @@
+
+package org.eclipse.stem.model.ctdl;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.ISetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class CTDLStandaloneSetupGenerated implements ISetup {
+
+ public Injector createInjectorAndDoEMFRegistration() {
+ org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+ Injector injector = createInjector();
+ register(injector);
+ return injector;
+ }
+
+ public Injector createInjector() {
+ return Guice.createInjector(new org.eclipse.stem.model.ctdl.CTDLRuntimeModule());
+ }
+
+ public void register(Injector injector) {
+ if (!EPackage.Registry.INSTANCE.containsKey("http:///org/eclipse/stem/model/ctdl.ecore")) {
+ EPackage.Registry.INSTANCE.put("http:///org/eclipse/stem/model/ctdl.ecore", org.eclipse.stem.model.ctdl.ctdl.CtdlPackage.eINSTANCE);
+ }
+
+ org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+ org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("sctd", resourceFactory);
+ org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("sctd", serviceProvider);
+
+
+
+
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/AbsoluteCompartmentValueReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/AbsoluteCompartmentValueReference.java
new file mode 100644
index 000000000..51e5a233e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/AbsoluteCompartmentValueReference.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Absolute Compartment Value Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getAbsoluteCompartmentValueReference()
+ * @model
+ * @generated
+ */
+public interface AbsoluteCompartmentValueReference extends CompartmentReference
+{
+} // AbsoluteCompartmentValueReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Block.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Block.java
new file mode 100644
index 000000000..863a67804
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Block.java
@@ -0,0 +1,72 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Block</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Block#getStatements <em>Statements</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Block#getRet <em>Ret</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getBlock()
+ * @model
+ * @generated
+ */
+public interface Block extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Statements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.model.ctdl.ctdl.DefStatement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Statements</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Statements</em>' containment reference list.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getBlock_Statements()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DefStatement> getStatements();
+
+ /**
+ * Returns the value of the '<em><b>Ret</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ret</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ret</em>' containment reference.
+ * @see #setRet(ReturnStatement)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getBlock_Ret()
+ * @model containment="true"
+ * @generated
+ */
+ ReturnStatement getRet();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Block#getRet <em>Ret</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ret</em>' containment reference.
+ * @see #getRet()
+ * @generated
+ */
+ void setRet(ReturnStatement value);
+
+} // Block
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/BooleanLiteral.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/BooleanLiteral.java
new file mode 100644
index 000000000..2431628ed
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/BooleanLiteral.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getBooleanLiteral()
+ * @model
+ * @generated
+ */
+public interface BooleanLiteral extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getBooleanLiteral_Value()
+ * @model
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+} // BooleanLiteral
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentReference.java
new file mode 100644
index 000000000..beb4430d2
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentReference.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.stem.model.metamodel.Compartment;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Compartment Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentReference#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getCompartmentReference()
+ * @model
+ * @generated
+ */
+public interface CompartmentReference extends ScopedVariableReference
+{
+ /**
+ * Returns the value of the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Obj</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Obj</em>' reference.
+ * @see #setObj(Compartment)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getCompartmentReference_Obj()
+ * @model
+ * @generated
+ */
+ Compartment getObj();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentReference#getObj <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Obj</em>' reference.
+ * @see #getObj()
+ * @generated
+ */
+ void setObj(Compartment value);
+
+} // CompartmentReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentTransitionDefinitions.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentTransitionDefinitions.java
new file mode 100644
index 000000000..9b18eb5af
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CompartmentTransitionDefinitions.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Compartment Transition Definitions</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getCompartmentTransitionDefinitions()
+ * @model
+ * @generated
+ */
+public interface CompartmentTransitionDefinitions extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Metamodel</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Metamodel</em>' reference.
+ * @see #setMetamodel(MetamodelResource)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getCompartmentTransitionDefinitions_Metamodel()
+ * @model
+ * @generated
+ */
+ MetamodelResource getMetamodel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getMetamodel <em>Metamodel</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Metamodel</em>' reference.
+ * @see #getMetamodel()
+ * @generated
+ */
+ void setMetamodel(MetamodelResource value);
+
+ /**
+ * Returns the value of the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expression</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expression</em>' containment reference.
+ * @see #setExpression(TransitionBlock)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getCompartmentTransitionDefinitions_Expression()
+ * @model containment="true"
+ * @generated
+ */
+ TransitionBlock getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getExpression <em>Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expression</em>' containment reference.
+ * @see #getExpression()
+ * @generated
+ */
+ void setExpression(TransitionBlock value);
+
+} // CompartmentTransitionDefinitions
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlFactory.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlFactory.java
new file mode 100644
index 000000000..2ba6421a9
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlFactory.java
@@ -0,0 +1,298 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage
+ * @generated
+ */
+public interface CtdlFactory extends EFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CtdlFactory eINSTANCE = org.eclipse.stem.model.ctdl.ctdl.impl.CtdlFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Compartment Transition Definitions</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Compartment Transition Definitions</em>'.
+ * @generated
+ */
+ CompartmentTransitionDefinitions createCompartmentTransitionDefinitions();
+
+ /**
+ * Returns a new object of class '<em>Metamodel Resource</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Metamodel Resource</em>'.
+ * @generated
+ */
+ MetamodelResource createMetamodelResource();
+
+ /**
+ * Returns a new object of class '<em>Transition Block</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition Block</em>'.
+ * @generated
+ */
+ TransitionBlock createTransitionBlock();
+
+ /**
+ * Returns a new object of class '<em>Block</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Block</em>'.
+ * @generated
+ */
+ Block createBlock();
+
+ /**
+ * Returns a new object of class '<em>Def Statement</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Def Statement</em>'.
+ * @generated
+ */
+ DefStatement createDefStatement();
+
+ /**
+ * Returns a new object of class '<em>Return Statement</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Return Statement</em>'.
+ * @generated
+ */
+ ReturnStatement createReturnStatement();
+
+ /**
+ * Returns a new object of class '<em>Evaluation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Evaluation</em>'.
+ * @generated
+ */
+ Evaluation createEvaluation();
+
+ /**
+ * Returns a new object of class '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Expression</em>'.
+ * @generated
+ */
+ Expression createExpression();
+
+ /**
+ * Returns a new object of class '<em>Function Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Function Reference</em>'.
+ * @generated
+ */
+ FunctionReference createFunctionReference();
+
+ /**
+ * Returns a new object of class '<em>Scoped Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Scoped Variable Reference</em>'.
+ * @generated
+ */
+ ScopedVariableReference createScopedVariableReference();
+
+ /**
+ * Returns a new object of class '<em>Local Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Local Variable Reference</em>'.
+ * @generated
+ */
+ LocalVariableReference createLocalVariableReference();
+
+ /**
+ * Returns a new object of class '<em>Compartment Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Compartment Reference</em>'.
+ * @generated
+ */
+ CompartmentReference createCompartmentReference();
+
+ /**
+ * Returns a new object of class '<em>Model Param Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model Param Reference</em>'.
+ * @generated
+ */
+ ModelParamReference createModelParamReference();
+
+ /**
+ * Returns a new object of class '<em>Global Variable</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Global Variable</em>'.
+ * @generated
+ */
+ GlobalVariable createGlobalVariable();
+
+ /**
+ * Returns a new object of class '<em>Plus</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Plus</em>'.
+ * @generated
+ */
+ Plus createPlus();
+
+ /**
+ * Returns a new object of class '<em>Minus</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Minus</em>'.
+ * @generated
+ */
+ Minus createMinus();
+
+ /**
+ * Returns a new object of class '<em>Multi</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Multi</em>'.
+ * @generated
+ */
+ Multi createMulti();
+
+ /**
+ * Returns a new object of class '<em>Div</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Div</em>'.
+ * @generated
+ */
+ Div createDiv();
+
+ /**
+ * Returns a new object of class '<em>Primary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Primary Expression</em>'.
+ * @generated
+ */
+ PrimaryExpression createPrimaryExpression();
+
+ /**
+ * Returns a new object of class '<em>Number Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Number Literal</em>'.
+ * @generated
+ */
+ NumberLiteral createNumberLiteral();
+
+ /**
+ * Returns a new object of class '<em>Function Call</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Function Call</em>'.
+ * @generated
+ */
+ FunctionCall createFunctionCall();
+
+ /**
+ * Returns a new object of class '<em>Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Variable Reference</em>'.
+ * @generated
+ */
+ VariableReference createVariableReference();
+
+ /**
+ * Returns a new object of class '<em>Boolean Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Literal</em>'.
+ * @generated
+ */
+ BooleanLiteral createBooleanLiteral();
+
+ /**
+ * Returns a new object of class '<em>String Literal</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Literal</em>'.
+ * @generated
+ */
+ StringLiteral createStringLiteral();
+
+ /**
+ * Returns a new object of class '<em>External Function Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>External Function Reference</em>'.
+ * @generated
+ */
+ ExternalFunctionReference createExternalFunctionReference();
+
+ /**
+ * Returns a new object of class '<em>Global Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Global Variable Reference</em>'.
+ * @generated
+ */
+ GlobalVariableReference createGlobalVariableReference();
+
+ /**
+ * Returns a new object of class '<em>Def Statement Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Def Statement Reference</em>'.
+ * @generated
+ */
+ DefStatementReference createDefStatementReference();
+
+ /**
+ * Returns a new object of class '<em>Absolute Compartment Value Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Absolute Compartment Value Reference</em>'.
+ * @generated
+ */
+ AbsoluteCompartmentValueReference createAbsoluteCompartmentValueReference();
+
+ /**
+ * Returns a new object of class '<em>Relative Compartment Value Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Relative Compartment Value Reference</em>'.
+ * @generated
+ */
+ RelativeCompartmentValueReference createRelativeCompartmentValueReference();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ CtdlPackage getCtdlPackage();
+
+} //CtdlFactory
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlPackage.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlPackage.java
new file mode 100644
index 000000000..67a0fd5a9
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/CtdlPackage.java
@@ -0,0 +1,2351 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface CtdlPackage extends EPackage
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "ctdl";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/model/ctdl.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "ctdl";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CtdlPackage eINSTANCE = org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl <em>Compartment Transition Definitions</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getCompartmentTransitionDefinitions()
+ * @generated
+ */
+ int COMPARTMENT_TRANSITION_DEFINITIONS = 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL = 0;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION = 1;
+
+ /**
+ * The number of structural features of the '<em>Compartment Transition Definitions</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_TRANSITION_DEFINITIONS_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl <em>Metamodel Resource</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMetamodelResource()
+ * @generated
+ */
+ int METAMODEL_RESOURCE = 1;
+
+ /**
+ * The feature id for the '<em><b>Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_RESOURCE__PACKAGE = 0;
+
+ /**
+ * The feature id for the '<em><b>Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_RESOURCE__MODEL = 1;
+
+ /**
+ * The feature id for the '<em><b>Transition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_RESOURCE__TRANSITION = 2;
+
+ /**
+ * The number of structural features of the '<em>Metamodel Resource</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_RESOURCE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.TransitionBlockImpl <em>Transition Block</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.TransitionBlockImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getTransitionBlock()
+ * @generated
+ */
+ int TRANSITION_BLOCK = 2;
+
+ /**
+ * The feature id for the '<em><b>Block</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_BLOCK__BLOCK = 0;
+
+ /**
+ * The number of structural features of the '<em>Transition Block</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_BLOCK_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl <em>Block</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getBlock()
+ * @generated
+ */
+ int BLOCK = 3;
+
+ /**
+ * The feature id for the '<em><b>Statements</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BLOCK__STATEMENTS = 0;
+
+ /**
+ * The feature id for the '<em><b>Ret</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BLOCK__RET = 1;
+
+ /**
+ * The number of structural features of the '<em>Block</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BLOCK_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl <em>Def Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDefStatement()
+ * @generated
+ */
+ int DEF_STATEMENT = 4;
+
+ /**
+ * The feature id for the '<em><b>Varname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT__VARNAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT__EXPR = 1;
+
+ /**
+ * The number of structural features of the '<em>Def Statement</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ReturnStatementImpl <em>Return Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ReturnStatementImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getReturnStatement()
+ * @generated
+ */
+ int RETURN_STATEMENT = 5;
+
+ /**
+ * The number of structural features of the '<em>Return Statement</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RETURN_STATEMENT_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.EvaluationImpl <em>Evaluation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.EvaluationImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getEvaluation()
+ * @generated
+ */
+ int EVALUATION = 6;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EVALUATION__EXPRESSION = RETURN_STATEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Evaluation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EVALUATION_FEATURE_COUNT = RETURN_STATEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ExpressionImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getExpression()
+ * @generated
+ */
+ int EXPRESSION = 7;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPRESSION__EXP = 0;
+
+ /**
+ * The number of structural features of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPRESSION_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionReferenceImpl <em>Function Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.FunctionReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getFunctionReference()
+ * @generated
+ */
+ int FUNCTION_REFERENCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_REFERENCE__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Function Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_REFERENCE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ScopedVariableReferenceImpl <em>Scoped Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ScopedVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getScopedVariableReference()
+ * @generated
+ */
+ int SCOPED_VARIABLE_REFERENCE = 9;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCOPED_VARIABLE_REFERENCE__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Scoped Variable Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.LocalVariableReferenceImpl <em>Local Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.LocalVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getLocalVariableReference()
+ * @generated
+ */
+ int LOCAL_VARIABLE_REFERENCE = 10;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOCAL_VARIABLE_REFERENCE__NAME = SCOPED_VARIABLE_REFERENCE__NAME;
+
+ /**
+ * The number of structural features of the '<em>Local Variable Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOCAL_VARIABLE_REFERENCE_FEATURE_COUNT = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentReferenceImpl <em>Compartment Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getCompartmentReference()
+ * @generated
+ */
+ int COMPARTMENT_REFERENCE = 11;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_REFERENCE__NAME = SCOPED_VARIABLE_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_REFERENCE__OBJ = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Compartment Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARTMENT_REFERENCE_FEATURE_COUNT = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ModelParamReferenceImpl <em>Model Param Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ModelParamReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getModelParamReference()
+ * @generated
+ */
+ int MODEL_PARAM_REFERENCE = 12;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_PARAM_REFERENCE__NAME = SCOPED_VARIABLE_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_PARAM_REFERENCE__OBJ = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Model Param Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_PARAM_REFERENCE_FEATURE_COUNT = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableImpl <em>Global Variable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getGlobalVariable()
+ * @generated
+ */
+ int GLOBAL_VARIABLE = 13;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VARIABLE__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Global Variable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VARIABLE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl <em>Plus</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getPlus()
+ * @generated
+ */
+ int PLUS = 14;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PLUS__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PLUS__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PLUS__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Plus</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PLUS_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl <em>Minus</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMinus()
+ * @generated
+ */
+ int MINUS = 15;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MINUS__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MINUS__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MINUS__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Minus</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MINUS_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl <em>Multi</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMulti()
+ * @generated
+ */
+ int MULTI = 16;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTI__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTI__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTI__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Multi</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MULTI_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl <em>Div</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDiv()
+ * @generated
+ */
+ int DIV = 17;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DIV__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DIV__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DIV__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Div</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DIV_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.PrimaryExpressionImpl <em>Primary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.PrimaryExpressionImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getPrimaryExpression()
+ * @generated
+ */
+ int PRIMARY_EXPRESSION = 18;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Negate</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION__NEGATE = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Primary Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PRIMARY_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.NumberLiteralImpl <em>Number Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.NumberLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getNumberLiteral()
+ * @generated
+ */
+ int NUMBER_LITERAL = 19;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL__VALUE = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Number Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NUMBER_LITERAL_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl <em>Function Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getFunctionCall()
+ * @generated
+ */
+ int FUNCTION_CALL = 20;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_CALL__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_CALL__REF = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Args</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_CALL__ARGS = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Function Call</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_CALL_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.VariableReferenceImpl <em>Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.VariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getVariableReference()
+ * @generated
+ */
+ int VARIABLE_REFERENCE = 21;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_REFERENCE__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_REFERENCE__REF = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Variable Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_REFERENCE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.BooleanLiteralImpl <em>Boolean Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.BooleanLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getBooleanLiteral()
+ * @generated
+ */
+ int BOOLEAN_LITERAL = 22;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL__VALUE = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Boolean Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_LITERAL_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.StringLiteralImpl <em>String Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.StringLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getStringLiteral()
+ * @generated
+ */
+ int STRING_LITERAL = 23;
+
+ /**
+ * The feature id for the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__EXP = EXPRESSION__EXP;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL__VALUE = EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>String Literal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_LITERAL_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExternalFunctionReferenceImpl <em>External Function Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ExternalFunctionReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getExternalFunctionReference()
+ * @generated
+ */
+ int EXTERNAL_FUNCTION_REFERENCE = 24;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_REFERENCE__NAME = FUNCTION_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Func</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_REFERENCE__FUNC = FUNCTION_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>External Function Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_FUNCTION_REFERENCE_FEATURE_COUNT = FUNCTION_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableReferenceImpl <em>Global Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getGlobalVariableReference()
+ * @generated
+ */
+ int GLOBAL_VARIABLE_REFERENCE = 25;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VARIABLE_REFERENCE__NAME = SCOPED_VARIABLE_REFERENCE__NAME;
+
+ /**
+ * The number of structural features of the '<em>Global Variable Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_VARIABLE_REFERENCE_FEATURE_COUNT = SCOPED_VARIABLE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementReferenceImpl <em>Def Statement Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDefStatementReference()
+ * @generated
+ */
+ int DEF_STATEMENT_REFERENCE = 26;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT_REFERENCE__NAME = LOCAL_VARIABLE_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT_REFERENCE__OBJ = LOCAL_VARIABLE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Def Statement Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEF_STATEMENT_REFERENCE_FEATURE_COUNT = LOCAL_VARIABLE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.AbsoluteCompartmentValueReferenceImpl <em>Absolute Compartment Value Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.AbsoluteCompartmentValueReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getAbsoluteCompartmentValueReference()
+ * @generated
+ */
+ int ABSOLUTE_COMPARTMENT_VALUE_REFERENCE = 27;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSOLUTE_COMPARTMENT_VALUE_REFERENCE__NAME = COMPARTMENT_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSOLUTE_COMPARTMENT_VALUE_REFERENCE__OBJ = COMPARTMENT_REFERENCE__OBJ;
+
+ /**
+ * The number of structural features of the '<em>Absolute Compartment Value Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSOLUTE_COMPARTMENT_VALUE_REFERENCE_FEATURE_COUNT = COMPARTMENT_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.RelativeCompartmentValueReferenceImpl <em>Relative Compartment Value Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.RelativeCompartmentValueReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getRelativeCompartmentValueReference()
+ * @generated
+ */
+ int RELATIVE_COMPARTMENT_VALUE_REFERENCE = 28;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIVE_COMPARTMENT_VALUE_REFERENCE__NAME = COMPARTMENT_REFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIVE_COMPARTMENT_VALUE_REFERENCE__OBJ = COMPARTMENT_REFERENCE__OBJ;
+
+ /**
+ * The number of structural features of the '<em>Relative Compartment Value Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RELATIVE_COMPARTMENT_VALUE_REFERENCE_FEATURE_COUNT = COMPARTMENT_REFERENCE_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions <em>Compartment Transition Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Compartment Transition Definitions</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions
+ * @generated
+ */
+ EClass getCompartmentTransitionDefinitions();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getMetamodel <em>Metamodel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Metamodel</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getMetamodel()
+ * @see #getCompartmentTransitionDefinitions()
+ * @generated
+ */
+ EReference getCompartmentTransitionDefinitions_Metamodel();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Expression</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions#getExpression()
+ * @see #getCompartmentTransitionDefinitions()
+ * @generated
+ */
+ EReference getCompartmentTransitionDefinitions_Expression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource <em>Metamodel Resource</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Metamodel Resource</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.MetamodelResource
+ * @generated
+ */
+ EClass getMetamodelResource();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getPackage <em>Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Package</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getPackage()
+ * @see #getMetamodelResource()
+ * @generated
+ */
+ EReference getMetamodelResource_Package();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getModel <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Model</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getModel()
+ * @see #getMetamodelResource()
+ * @generated
+ */
+ EReference getMetamodelResource_Model();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getTransition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Transition</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getTransition()
+ * @see #getMetamodelResource()
+ * @generated
+ */
+ EReference getMetamodelResource_Transition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.TransitionBlock <em>Transition Block</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition Block</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.TransitionBlock
+ * @generated
+ */
+ EClass getTransitionBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.TransitionBlock#getBlock <em>Block</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Block</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.TransitionBlock#getBlock()
+ * @see #getTransitionBlock()
+ * @generated
+ */
+ EReference getTransitionBlock_Block();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Block <em>Block</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Block</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Block
+ * @generated
+ */
+ EClass getBlock();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.model.ctdl.ctdl.Block#getStatements <em>Statements</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Statements</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Block#getStatements()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Statements();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Block#getRet <em>Ret</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Ret</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Block#getRet()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Ret();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement <em>Def Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Def Statement</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatement
+ * @generated
+ */
+ EClass getDefStatement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getVarname <em>Varname</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Varname</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatement#getVarname()
+ * @see #getDefStatement()
+ * @generated
+ */
+ EAttribute getDefStatement_Varname();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getExpr <em>Expr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Expr</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatement#getExpr()
+ * @see #getDefStatement()
+ * @generated
+ */
+ EReference getDefStatement_Expr();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.ReturnStatement <em>Return Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Return Statement</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ReturnStatement
+ * @generated
+ */
+ EClass getReturnStatement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Evaluation <em>Evaluation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Evaluation</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Evaluation
+ * @generated
+ */
+ EClass getEvaluation();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Evaluation#getExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Expression</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Evaluation#getExpression()
+ * @see #getEvaluation()
+ * @generated
+ */
+ EReference getEvaluation_Expression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expression</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Expression
+ * @generated
+ */
+ EClass getExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Expression#getExp <em>Exp</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Exp</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Expression#getExp()
+ * @see #getExpression()
+ * @generated
+ */
+ EReference getExpression_Exp();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionReference <em>Function Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Function Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionReference
+ * @generated
+ */
+ EClass getFunctionReference();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionReference#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionReference#getName()
+ * @see #getFunctionReference()
+ * @generated
+ */
+ EAttribute getFunctionReference_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference <em>Scoped Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Scoped Variable Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference
+ * @generated
+ */
+ EClass getScopedVariableReference();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference#getName()
+ * @see #getScopedVariableReference()
+ * @generated
+ */
+ EAttribute getScopedVariableReference_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference <em>Local Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Local Variable Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference
+ * @generated
+ */
+ EClass getLocalVariableReference();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentReference <em>Compartment Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Compartment Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentReference
+ * @generated
+ */
+ EClass getCompartmentReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentReference#getObj <em>Obj</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Obj</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentReference#getObj()
+ * @see #getCompartmentReference()
+ * @generated
+ */
+ EReference getCompartmentReference_Obj();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.ModelParamReference <em>Model Param Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model Param Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ModelParamReference
+ * @generated
+ */
+ EClass getModelParamReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.ModelParamReference#getObj <em>Obj</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Obj</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ModelParamReference#getObj()
+ * @see #getModelParamReference()
+ * @generated
+ */
+ EReference getModelParamReference_Obj();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariable <em>Global Variable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Global Variable</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.GlobalVariable
+ * @generated
+ */
+ EClass getGlobalVariable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariable#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.GlobalVariable#getName()
+ * @see #getGlobalVariable()
+ * @generated
+ */
+ EAttribute getGlobalVariable_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Plus <em>Plus</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Plus</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Plus
+ * @generated
+ */
+ EClass getPlus();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getLeft <em>Left</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Left</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Plus#getLeft()
+ * @see #getPlus()
+ * @generated
+ */
+ EReference getPlus_Left();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getRight <em>Right</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Right</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Plus#getRight()
+ * @see #getPlus()
+ * @generated
+ */
+ EReference getPlus_Right();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Minus <em>Minus</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Minus</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Minus
+ * @generated
+ */
+ EClass getMinus();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getLeft <em>Left</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Left</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Minus#getLeft()
+ * @see #getMinus()
+ * @generated
+ */
+ EReference getMinus_Left();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getRight <em>Right</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Right</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Minus#getRight()
+ * @see #getMinus()
+ * @generated
+ */
+ EReference getMinus_Right();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Multi <em>Multi</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Multi</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Multi
+ * @generated
+ */
+ EClass getMulti();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getLeft <em>Left</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Left</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Multi#getLeft()
+ * @see #getMulti()
+ * @generated
+ */
+ EReference getMulti_Left();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getRight <em>Right</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Right</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Multi#getRight()
+ * @see #getMulti()
+ * @generated
+ */
+ EReference getMulti_Right();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.Div <em>Div</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Div</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Div
+ * @generated
+ */
+ EClass getDiv();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Div#getLeft <em>Left</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Left</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Div#getLeft()
+ * @see #getDiv()
+ * @generated
+ */
+ EReference getDiv_Left();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.model.ctdl.ctdl.Div#getRight <em>Right</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Right</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Div#getRight()
+ * @see #getDiv()
+ * @generated
+ */
+ EReference getDiv_Right();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression <em>Primary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Primary Expression</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression
+ * @generated
+ */
+ EClass getPrimaryExpression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression#isNegate <em>Negate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Negate</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression#isNegate()
+ * @see #getPrimaryExpression()
+ * @generated
+ */
+ EAttribute getPrimaryExpression_Negate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.NumberLiteral <em>Number Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Number Literal</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.NumberLiteral
+ * @generated
+ */
+ EClass getNumberLiteral();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.NumberLiteral#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.NumberLiteral#getValue()
+ * @see #getNumberLiteral()
+ * @generated
+ */
+ EAttribute getNumberLiteral_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall <em>Function Call</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Function Call</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionCall
+ * @generated
+ */
+ EClass getFunctionCall();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getRef()
+ * @see #getFunctionCall()
+ * @generated
+ */
+ EReference getFunctionCall_Ref();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getArgs <em>Args</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Args</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getArgs()
+ * @see #getFunctionCall()
+ * @generated
+ */
+ EReference getFunctionCall_Args();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.VariableReference <em>Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Variable Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.VariableReference
+ * @generated
+ */
+ EClass getVariableReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.VariableReference#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.VariableReference#getRef()
+ * @see #getVariableReference()
+ * @generated
+ */
+ EReference getVariableReference_Ref();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral <em>Boolean Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Literal</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral
+ * @generated
+ */
+ EClass getBooleanLiteral();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral#isValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral#isValue()
+ * @see #getBooleanLiteral()
+ * @generated
+ */
+ EAttribute getBooleanLiteral_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.StringLiteral <em>String Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Literal</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.StringLiteral
+ * @generated
+ */
+ EClass getStringLiteral();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.ctdl.ctdl.StringLiteral#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.StringLiteral#getValue()
+ * @see #getStringLiteral()
+ * @generated
+ */
+ EAttribute getStringLiteral_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference <em>External Function Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>External Function Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference
+ * @generated
+ */
+ EClass getExternalFunctionReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference#getFunc <em>Func</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Func</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference#getFunc()
+ * @see #getExternalFunctionReference()
+ * @generated
+ */
+ EReference getExternalFunctionReference_Func();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference <em>Global Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Global Variable Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference
+ * @generated
+ */
+ EClass getGlobalVariableReference();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatementReference <em>Def Statement Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Def Statement Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatementReference
+ * @generated
+ */
+ EClass getDefStatementReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatementReference#getObj <em>Obj</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Obj</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatementReference#getObj()
+ * @see #getDefStatementReference()
+ * @generated
+ */
+ EReference getDefStatementReference_Obj();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference <em>Absolute Compartment Value Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Absolute Compartment Value Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference
+ * @generated
+ */
+ EClass getAbsoluteCompartmentValueReference();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference <em>Relative Compartment Value Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Relative Compartment Value Reference</em>'.
+ * @see org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference
+ * @generated
+ */
+ EClass getRelativeCompartmentValueReference();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ CtdlFactory getCtdlFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl <em>Compartment Transition Definitions</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getCompartmentTransitionDefinitions()
+ * @generated
+ */
+ EClass COMPARTMENT_TRANSITION_DEFINITIONS = eINSTANCE.getCompartmentTransitionDefinitions();
+
+ /**
+ * The meta object literal for the '<em><b>Metamodel</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL = eINSTANCE.getCompartmentTransitionDefinitions_Metamodel();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION = eINSTANCE.getCompartmentTransitionDefinitions_Expression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl <em>Metamodel Resource</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMetamodelResource()
+ * @generated
+ */
+ EClass METAMODEL_RESOURCE = eINSTANCE.getMetamodelResource();
+
+ /**
+ * The meta object literal for the '<em><b>Package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference METAMODEL_RESOURCE__PACKAGE = eINSTANCE.getMetamodelResource_Package();
+
+ /**
+ * The meta object literal for the '<em><b>Model</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference METAMODEL_RESOURCE__MODEL = eINSTANCE.getMetamodelResource_Model();
+
+ /**
+ * The meta object literal for the '<em><b>Transition</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference METAMODEL_RESOURCE__TRANSITION = eINSTANCE.getMetamodelResource_Transition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.TransitionBlockImpl <em>Transition Block</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.TransitionBlockImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getTransitionBlock()
+ * @generated
+ */
+ EClass TRANSITION_BLOCK = eINSTANCE.getTransitionBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Block</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION_BLOCK__BLOCK = eINSTANCE.getTransitionBlock_Block();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl <em>Block</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getBlock()
+ * @generated
+ */
+ EClass BLOCK = eINSTANCE.getBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Statements</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BLOCK__STATEMENTS = eINSTANCE.getBlock_Statements();
+
+ /**
+ * The meta object literal for the '<em><b>Ret</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BLOCK__RET = eINSTANCE.getBlock_Ret();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl <em>Def Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDefStatement()
+ * @generated
+ */
+ EClass DEF_STATEMENT = eINSTANCE.getDefStatement();
+
+ /**
+ * The meta object literal for the '<em><b>Varname</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DEF_STATEMENT__VARNAME = eINSTANCE.getDefStatement_Varname();
+
+ /**
+ * The meta object literal for the '<em><b>Expr</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEF_STATEMENT__EXPR = eINSTANCE.getDefStatement_Expr();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ReturnStatementImpl <em>Return Statement</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ReturnStatementImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getReturnStatement()
+ * @generated
+ */
+ EClass RETURN_STATEMENT = eINSTANCE.getReturnStatement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.EvaluationImpl <em>Evaluation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.EvaluationImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getEvaluation()
+ * @generated
+ */
+ EClass EVALUATION = eINSTANCE.getEvaluation();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EVALUATION__EXPRESSION = eINSTANCE.getEvaluation_Expression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ExpressionImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getExpression()
+ * @generated
+ */
+ EClass EXPRESSION = eINSTANCE.getExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Exp</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPRESSION__EXP = eINSTANCE.getExpression_Exp();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionReferenceImpl <em>Function Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.FunctionReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getFunctionReference()
+ * @generated
+ */
+ EClass FUNCTION_REFERENCE = eINSTANCE.getFunctionReference();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FUNCTION_REFERENCE__NAME = eINSTANCE.getFunctionReference_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ScopedVariableReferenceImpl <em>Scoped Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ScopedVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getScopedVariableReference()
+ * @generated
+ */
+ EClass SCOPED_VARIABLE_REFERENCE = eINSTANCE.getScopedVariableReference();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SCOPED_VARIABLE_REFERENCE__NAME = eINSTANCE.getScopedVariableReference_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.LocalVariableReferenceImpl <em>Local Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.LocalVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getLocalVariableReference()
+ * @generated
+ */
+ EClass LOCAL_VARIABLE_REFERENCE = eINSTANCE.getLocalVariableReference();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentReferenceImpl <em>Compartment Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getCompartmentReference()
+ * @generated
+ */
+ EClass COMPARTMENT_REFERENCE = eINSTANCE.getCompartmentReference();
+
+ /**
+ * The meta object literal for the '<em><b>Obj</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMPARTMENT_REFERENCE__OBJ = eINSTANCE.getCompartmentReference_Obj();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ModelParamReferenceImpl <em>Model Param Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ModelParamReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getModelParamReference()
+ * @generated
+ */
+ EClass MODEL_PARAM_REFERENCE = eINSTANCE.getModelParamReference();
+
+ /**
+ * The meta object literal for the '<em><b>Obj</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL_PARAM_REFERENCE__OBJ = eINSTANCE.getModelParamReference_Obj();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableImpl <em>Global Variable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getGlobalVariable()
+ * @generated
+ */
+ EClass GLOBAL_VARIABLE = eINSTANCE.getGlobalVariable();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GLOBAL_VARIABLE__NAME = eINSTANCE.getGlobalVariable_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl <em>Plus</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getPlus()
+ * @generated
+ */
+ EClass PLUS = eINSTANCE.getPlus();
+
+ /**
+ * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PLUS__LEFT = eINSTANCE.getPlus_Left();
+
+ /**
+ * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PLUS__RIGHT = eINSTANCE.getPlus_Right();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl <em>Minus</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMinus()
+ * @generated
+ */
+ EClass MINUS = eINSTANCE.getMinus();
+
+ /**
+ * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MINUS__LEFT = eINSTANCE.getMinus_Left();
+
+ /**
+ * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MINUS__RIGHT = eINSTANCE.getMinus_Right();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl <em>Multi</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getMulti()
+ * @generated
+ */
+ EClass MULTI = eINSTANCE.getMulti();
+
+ /**
+ * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MULTI__LEFT = eINSTANCE.getMulti_Left();
+
+ /**
+ * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MULTI__RIGHT = eINSTANCE.getMulti_Right();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl <em>Div</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDiv()
+ * @generated
+ */
+ EClass DIV = eINSTANCE.getDiv();
+
+ /**
+ * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DIV__LEFT = eINSTANCE.getDiv_Left();
+
+ /**
+ * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DIV__RIGHT = eINSTANCE.getDiv_Right();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.PrimaryExpressionImpl <em>Primary Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.PrimaryExpressionImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getPrimaryExpression()
+ * @generated
+ */
+ EClass PRIMARY_EXPRESSION = eINSTANCE.getPrimaryExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Negate</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PRIMARY_EXPRESSION__NEGATE = eINSTANCE.getPrimaryExpression_Negate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.NumberLiteralImpl <em>Number Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.NumberLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getNumberLiteral()
+ * @generated
+ */
+ EClass NUMBER_LITERAL = eINSTANCE.getNumberLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NUMBER_LITERAL__VALUE = eINSTANCE.getNumberLiteral_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl <em>Function Call</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getFunctionCall()
+ * @generated
+ */
+ EClass FUNCTION_CALL = eINSTANCE.getFunctionCall();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FUNCTION_CALL__REF = eINSTANCE.getFunctionCall_Ref();
+
+ /**
+ * The meta object literal for the '<em><b>Args</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FUNCTION_CALL__ARGS = eINSTANCE.getFunctionCall_Args();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.VariableReferenceImpl <em>Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.VariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getVariableReference()
+ * @generated
+ */
+ EClass VARIABLE_REFERENCE = eINSTANCE.getVariableReference();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VARIABLE_REFERENCE__REF = eINSTANCE.getVariableReference_Ref();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.BooleanLiteralImpl <em>Boolean Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.BooleanLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getBooleanLiteral()
+ * @generated
+ */
+ EClass BOOLEAN_LITERAL = eINSTANCE.getBooleanLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BOOLEAN_LITERAL__VALUE = eINSTANCE.getBooleanLiteral_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.StringLiteralImpl <em>String Literal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.StringLiteralImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getStringLiteral()
+ * @generated
+ */
+ EClass STRING_LITERAL = eINSTANCE.getStringLiteral();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_LITERAL__VALUE = eINSTANCE.getStringLiteral_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExternalFunctionReferenceImpl <em>External Function Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.ExternalFunctionReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getExternalFunctionReference()
+ * @generated
+ */
+ EClass EXTERNAL_FUNCTION_REFERENCE = eINSTANCE.getExternalFunctionReference();
+
+ /**
+ * The meta object literal for the '<em><b>Func</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_FUNCTION_REFERENCE__FUNC = eINSTANCE.getExternalFunctionReference_Func();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableReferenceImpl <em>Global Variable Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getGlobalVariableReference()
+ * @generated
+ */
+ EClass GLOBAL_VARIABLE_REFERENCE = eINSTANCE.getGlobalVariableReference();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementReferenceImpl <em>Def Statement Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getDefStatementReference()
+ * @generated
+ */
+ EClass DEF_STATEMENT_REFERENCE = eINSTANCE.getDefStatementReference();
+
+ /**
+ * The meta object literal for the '<em><b>Obj</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEF_STATEMENT_REFERENCE__OBJ = eINSTANCE.getDefStatementReference_Obj();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.AbsoluteCompartmentValueReferenceImpl <em>Absolute Compartment Value Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.AbsoluteCompartmentValueReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getAbsoluteCompartmentValueReference()
+ * @generated
+ */
+ EClass ABSOLUTE_COMPARTMENT_VALUE_REFERENCE = eINSTANCE.getAbsoluteCompartmentValueReference();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.model.ctdl.ctdl.impl.RelativeCompartmentValueReferenceImpl <em>Relative Compartment Value Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.RelativeCompartmentValueReferenceImpl
+ * @see org.eclipse.stem.model.ctdl.ctdl.impl.CtdlPackageImpl#getRelativeCompartmentValueReference()
+ * @generated
+ */
+ EClass RELATIVE_COMPARTMENT_VALUE_REFERENCE = eINSTANCE.getRelativeCompartmentValueReference();
+
+ }
+
+} //CtdlPackage
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatement.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatement.java
new file mode 100644
index 000000000..3ba3c32c4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatement.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Def Statement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getVarname <em>Varname</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getExpr <em>Expr</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDefStatement()
+ * @model
+ * @generated
+ */
+public interface DefStatement extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Varname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Varname</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Varname</em>' attribute.
+ * @see #setVarname(String)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDefStatement_Varname()
+ * @model
+ * @generated
+ */
+ String getVarname();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getVarname <em>Varname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Varname</em>' attribute.
+ * @see #getVarname()
+ * @generated
+ */
+ void setVarname(String value);
+
+ /**
+ * Returns the value of the '<em><b>Expr</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expr</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expr</em>' containment reference.
+ * @see #setExpr(Evaluation)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDefStatement_Expr()
+ * @model containment="true"
+ * @generated
+ */
+ Evaluation getExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement#getExpr <em>Expr</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expr</em>' containment reference.
+ * @see #getExpr()
+ * @generated
+ */
+ void setExpr(Evaluation value);
+
+} // DefStatement
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatementReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatementReference.java
new file mode 100644
index 000000000..414b53c35
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/DefStatementReference.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Def Statement Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.DefStatementReference#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDefStatementReference()
+ * @model
+ * @generated
+ */
+public interface DefStatementReference extends LocalVariableReference
+{
+ /**
+ * Returns the value of the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Obj</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Obj</em>' reference.
+ * @see #setObj(DefStatement)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDefStatementReference_Obj()
+ * @model
+ * @generated
+ */
+ DefStatement getObj();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatementReference#getObj <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Obj</em>' reference.
+ * @see #getObj()
+ * @generated
+ */
+ void setObj(DefStatement value);
+
+} // DefStatementReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Div.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Div.java
new file mode 100644
index 000000000..2ad4b5a60
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Div.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Div</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Div#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Div#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDiv()
+ * @model
+ * @generated
+ */
+public interface Div extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Left</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Left</em>' containment reference.
+ * @see #setLeft(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDiv_Left()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getLeft();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Div#getLeft <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Left</em>' containment reference.
+ * @see #getLeft()
+ * @generated
+ */
+ void setLeft(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Right</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Right</em>' containment reference.
+ * @see #setRight(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getDiv_Right()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getRight();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Div#getRight <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Right</em>' containment reference.
+ * @see #getRight()
+ * @generated
+ */
+ void setRight(Expression value);
+
+} // Div
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Evaluation.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Evaluation.java
new file mode 100644
index 000000000..97ef35c8a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Evaluation.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Evaluation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Evaluation#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getEvaluation()
+ * @model
+ * @generated
+ */
+public interface Evaluation extends ReturnStatement
+{
+ /**
+ * Returns the value of the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expression</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expression</em>' containment reference.
+ * @see #setExpression(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getEvaluation_Expression()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Evaluation#getExpression <em>Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expression</em>' containment reference.
+ * @see #getExpression()
+ * @generated
+ */
+ void setExpression(Expression value);
+
+} // Evaluation
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Expression.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Expression.java
new file mode 100644
index 000000000..975958a57
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Expression.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Expression#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getExpression()
+ * @model
+ * @generated
+ */
+public interface Expression extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Exp</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Exp</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exp</em>' containment reference.
+ * @see #setExp(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getExpression_Exp()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getExp();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Expression#getExp <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exp</em>' containment reference.
+ * @see #getExp()
+ * @generated
+ */
+ void setExp(Expression value);
+
+} // Expression
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ExternalFunctionReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ExternalFunctionReference.java
new file mode 100644
index 000000000..7c801a1ff
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ExternalFunctionReference.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>External Function Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference#getFunc <em>Func</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getExternalFunctionReference()
+ * @model
+ * @generated
+ */
+public interface ExternalFunctionReference extends FunctionReference
+{
+ /**
+ * Returns the value of the '<em><b>Func</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Func</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Func</em>' reference.
+ * @see #setFunc(ExternalFunctionDefinition)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getExternalFunctionReference_Func()
+ * @model
+ * @generated
+ */
+ ExternalFunctionDefinition getFunc();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference#getFunc <em>Func</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Func</em>' reference.
+ * @see #getFunc()
+ * @generated
+ */
+ void setFunc(ExternalFunctionDefinition value);
+
+} // ExternalFunctionReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionCall.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionCall.java
new file mode 100644
index 000000000..94d23efdb
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionCall.java
@@ -0,0 +1,71 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Call</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getRef <em>Ref</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getFunctionCall()
+ * @model
+ * @generated
+ */
+public interface FunctionCall extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(FunctionReference)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getFunctionCall_Ref()
+ * @model
+ * @generated
+ */
+ FunctionReference getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(FunctionReference value);
+
+ /**
+ * Returns the value of the '<em><b>Args</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.model.ctdl.ctdl.Expression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Args</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Args</em>' containment reference list.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getFunctionCall_Args()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Expression> getArgs();
+
+} // FunctionCall
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionReference.java
new file mode 100644
index 000000000..c1bb80402
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/FunctionReference.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.FunctionReference#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getFunctionReference()
+ * @model
+ * @generated
+ */
+public interface FunctionReference extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getFunctionReference_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionReference#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // FunctionReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariable.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariable.java
new file mode 100644
index 000000000..5721801b4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariable.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Global Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariable#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getGlobalVariable()
+ * @model
+ * @generated
+ */
+public interface GlobalVariable extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getGlobalVariable_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariable#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // GlobalVariable
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariableReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariableReference.java
new file mode 100644
index 000000000..6b7bfc14d
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/GlobalVariableReference.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Global Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getGlobalVariableReference()
+ * @model
+ * @generated
+ */
+public interface GlobalVariableReference extends ScopedVariableReference
+{
+} // GlobalVariableReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/LocalVariableReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/LocalVariableReference.java
new file mode 100644
index 000000000..4b887ff64
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/LocalVariableReference.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Local Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getLocalVariableReference()
+ * @model
+ * @generated
+ */
+public interface LocalVariableReference extends ScopedVariableReference
+{
+} // LocalVariableReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/MetamodelResource.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/MetamodelResource.java
new file mode 100644
index 000000000..f13b4a043
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/MetamodelResource.java
@@ -0,0 +1,110 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Metamodel Resource</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getPackage <em>Package</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getModel <em>Model</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getTransition <em>Transition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMetamodelResource()
+ * @model
+ * @generated
+ */
+public interface MetamodelResource extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package</em>' reference.
+ * @see #setPackage(org.eclipse.stem.model.metamodel.Package)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMetamodelResource_Package()
+ * @model
+ * @generated
+ */
+ org.eclipse.stem.model.metamodel.Package getPackage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getPackage <em>Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package</em>' reference.
+ * @see #getPackage()
+ * @generated
+ */
+ void setPackage(org.eclipse.stem.model.metamodel.Package value);
+
+ /**
+ * Returns the value of the '<em><b>Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Model</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Model</em>' reference.
+ * @see #setModel(Model)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMetamodelResource_Model()
+ * @model
+ * @generated
+ */
+ Model getModel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getModel <em>Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Model</em>' reference.
+ * @see #getModel()
+ * @generated
+ */
+ void setModel(Model value);
+
+ /**
+ * Returns the value of the '<em><b>Transition</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transition</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transition</em>' reference.
+ * @see #setTransition(Transition)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMetamodelResource_Transition()
+ * @model
+ * @generated
+ */
+ Transition getTransition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource#getTransition <em>Transition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Transition</em>' reference.
+ * @see #getTransition()
+ * @generated
+ */
+ void setTransition(Transition value);
+
+} // MetamodelResource
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Minus.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Minus.java
new file mode 100644
index 000000000..5e0034f4b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Minus.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Minus</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMinus()
+ * @model
+ * @generated
+ */
+public interface Minus extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Left</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Left</em>' containment reference.
+ * @see #setLeft(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMinus_Left()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getLeft();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getLeft <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Left</em>' containment reference.
+ * @see #getLeft()
+ * @generated
+ */
+ void setLeft(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Right</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Right</em>' containment reference.
+ * @see #setRight(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMinus_Right()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getRight();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Minus#getRight <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Right</em>' containment reference.
+ * @see #getRight()
+ * @generated
+ */
+ void setRight(Expression value);
+
+} // Minus
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ModelParamReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ModelParamReference.java
new file mode 100644
index 000000000..4f36915cc
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ModelParamReference.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.stem.model.metamodel.ModelParam;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model Param Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.ModelParamReference#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getModelParamReference()
+ * @model
+ * @generated
+ */
+public interface ModelParamReference extends ScopedVariableReference
+{
+ /**
+ * Returns the value of the '<em><b>Obj</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Obj</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Obj</em>' reference.
+ * @see #setObj(ModelParam)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getModelParamReference_Obj()
+ * @model
+ * @generated
+ */
+ ModelParam getObj();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.ModelParamReference#getObj <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Obj</em>' reference.
+ * @see #getObj()
+ * @generated
+ */
+ void setObj(ModelParam value);
+
+} // ModelParamReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Multi.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Multi.java
new file mode 100644
index 000000000..4e40a9d46
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Multi.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multi</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMulti()
+ * @model
+ * @generated
+ */
+public interface Multi extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Left</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Left</em>' containment reference.
+ * @see #setLeft(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMulti_Left()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getLeft();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getLeft <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Left</em>' containment reference.
+ * @see #getLeft()
+ * @generated
+ */
+ void setLeft(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Right</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Right</em>' containment reference.
+ * @see #setRight(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getMulti_Right()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getRight();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Multi#getRight <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Right</em>' containment reference.
+ * @see #getRight()
+ * @generated
+ */
+ void setRight(Expression value);
+
+} // Multi
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/NumberLiteral.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/NumberLiteral.java
new file mode 100644
index 000000000..62d443a30
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/NumberLiteral.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Number Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.NumberLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getNumberLiteral()
+ * @model
+ * @generated
+ */
+public interface NumberLiteral extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(double)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getNumberLiteral_Value()
+ * @model
+ * @generated
+ */
+ double getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.NumberLiteral#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(double value);
+
+} // NumberLiteral
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Plus.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Plus.java
new file mode 100644
index 000000000..e65d6460e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/Plus.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Plus</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getPlus()
+ * @model
+ * @generated
+ */
+public interface Plus extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Left</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Left</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Left</em>' containment reference.
+ * @see #setLeft(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getPlus_Left()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getLeft();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getLeft <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Left</em>' containment reference.
+ * @see #getLeft()
+ * @generated
+ */
+ void setLeft(Expression value);
+
+ /**
+ * Returns the value of the '<em><b>Right</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Right</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Right</em>' containment reference.
+ * @see #setRight(Expression)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getPlus_Right()
+ * @model containment="true"
+ * @generated
+ */
+ Expression getRight();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.Plus#getRight <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Right</em>' containment reference.
+ * @see #getRight()
+ * @generated
+ */
+ void setRight(Expression value);
+
+} // Plus
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/PrimaryExpression.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/PrimaryExpression.java
new file mode 100644
index 000000000..c0a5480d4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/PrimaryExpression.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Primary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression#isNegate <em>Negate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getPrimaryExpression()
+ * @model
+ * @generated
+ */
+public interface PrimaryExpression extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Negate</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Negate</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Negate</em>' attribute.
+ * @see #setNegate(boolean)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getPrimaryExpression_Negate()
+ * @model
+ * @generated
+ */
+ boolean isNegate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression#isNegate <em>Negate</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Negate</em>' attribute.
+ * @see #isNegate()
+ * @generated
+ */
+ void setNegate(boolean value);
+
+} // PrimaryExpression
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/RelativeCompartmentValueReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/RelativeCompartmentValueReference.java
new file mode 100644
index 000000000..10036ccd3
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/RelativeCompartmentValueReference.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Relative Compartment Value Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getRelativeCompartmentValueReference()
+ * @model
+ * @generated
+ */
+public interface RelativeCompartmentValueReference extends CompartmentReference
+{
+} // RelativeCompartmentValueReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ReturnStatement.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ReturnStatement.java
new file mode 100644
index 000000000..5414e344b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ReturnStatement.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Return Statement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getReturnStatement()
+ * @model
+ * @generated
+ */
+public interface ReturnStatement extends EObject
+{
+} // ReturnStatement
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ScopedVariableReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ScopedVariableReference.java
new file mode 100644
index 000000000..09e128bd2
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/ScopedVariableReference.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Scoped Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getScopedVariableReference()
+ * @model
+ * @generated
+ */
+public interface ScopedVariableReference extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getScopedVariableReference_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // ScopedVariableReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/StringLiteral.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/StringLiteral.java
new file mode 100644
index 000000000..b95898f77
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/StringLiteral.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.StringLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getStringLiteral()
+ * @model
+ * @generated
+ */
+public interface StringLiteral extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getStringLiteral_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.StringLiteral#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // StringLiteral
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/TransitionBlock.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/TransitionBlock.java
new file mode 100644
index 000000000..82edeb9ac
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/TransitionBlock.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition Block</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.TransitionBlock#getBlock <em>Block</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getTransitionBlock()
+ * @model
+ * @generated
+ */
+public interface TransitionBlock extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Block</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Block</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Block</em>' containment reference.
+ * @see #setBlock(Block)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getTransitionBlock_Block()
+ * @model containment="true"
+ * @generated
+ */
+ Block getBlock();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.TransitionBlock#getBlock <em>Block</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Block</em>' containment reference.
+ * @see #getBlock()
+ * @generated
+ */
+ void setBlock(Block value);
+
+} // TransitionBlock
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/VariableReference.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/VariableReference.java
new file mode 100644
index 000000000..12f74ad41
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/VariableReference.java
@@ -0,0 +1,53 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.VariableReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getVariableReference()
+ * @model
+ * @generated
+ */
+public interface VariableReference extends Expression
+{
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(ScopedVariableReference)
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#getVariableReference_Ref()
+ * @model
+ * @generated
+ */
+ ScopedVariableReference getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.ctdl.ctdl.VariableReference#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(ScopedVariableReference value);
+
+} // VariableReference
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/AbsoluteCompartmentValueReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/AbsoluteCompartmentValueReferenceImpl.java
new file mode 100644
index 000000000..eb4181a05
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/AbsoluteCompartmentValueReferenceImpl.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Absolute Compartment Value Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AbsoluteCompartmentValueReferenceImpl extends CompartmentReferenceImpl implements AbsoluteCompartmentValueReference
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbsoluteCompartmentValueReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.ABSOLUTE_COMPARTMENT_VALUE_REFERENCE;
+ }
+
+} //AbsoluteCompartmentValueReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BlockImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BlockImpl.java
new file mode 100644
index 000000000..b65bc5947
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BlockImpl.java
@@ -0,0 +1,239 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+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.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Block</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl#getStatements <em>Statements</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.BlockImpl#getRet <em>Ret</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BlockImpl extends MinimalEObjectImpl.Container implements Block
+{
+ /**
+ * The cached value of the '{@link #getStatements() <em>Statements</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStatements()
+ * @generated
+ * @ordered
+ */
+ protected EList<DefStatement> statements;
+
+ /**
+ * The cached value of the '{@link #getRet() <em>Ret</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRet()
+ * @generated
+ * @ordered
+ */
+ protected ReturnStatement ret;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BlockImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DefStatement> getStatements()
+ {
+ if (statements == null)
+ {
+ statements = new EObjectContainmentEList<DefStatement>(DefStatement.class, this, CtdlPackage.BLOCK__STATEMENTS);
+ }
+ return statements;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReturnStatement getRet()
+ {
+ return ret;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRet(ReturnStatement newRet, NotificationChain msgs)
+ {
+ ReturnStatement oldRet = ret;
+ ret = newRet;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.BLOCK__RET, oldRet, newRet);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRet(ReturnStatement newRet)
+ {
+ if (newRet != ret)
+ {
+ NotificationChain msgs = null;
+ if (ret != null)
+ msgs = ((InternalEObject)ret).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.BLOCK__RET, null, msgs);
+ if (newRet != null)
+ msgs = ((InternalEObject)newRet).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.BLOCK__RET, null, msgs);
+ msgs = basicSetRet(newRet, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.BLOCK__RET, newRet, newRet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BLOCK__STATEMENTS:
+ return ((InternalEList<?>)getStatements()).basicRemove(otherEnd, msgs);
+ case CtdlPackage.BLOCK__RET:
+ return basicSetRet(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BLOCK__STATEMENTS:
+ return getStatements();
+ case CtdlPackage.BLOCK__RET:
+ return getRet();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BLOCK__STATEMENTS:
+ getStatements().clear();
+ getStatements().addAll((Collection<? extends DefStatement>)newValue);
+ return;
+ case CtdlPackage.BLOCK__RET:
+ setRet((ReturnStatement)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BLOCK__STATEMENTS:
+ getStatements().clear();
+ return;
+ case CtdlPackage.BLOCK__RET:
+ setRet((ReturnStatement)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BLOCK__STATEMENTS:
+ return statements != null && !statements.isEmpty();
+ case CtdlPackage.BLOCK__RET:
+ return ret != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BlockImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BooleanLiteralImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BooleanLiteralImpl.java
new file mode 100644
index 000000000..d173d2f6e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/BooleanLiteralImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.BooleanLiteralImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanLiteralImpl extends ExpressionImpl implements BooleanLiteral
+{
+ /**
+ * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean VALUE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected boolean value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanLiteralImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.BOOLEAN_LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(boolean newValue)
+ {
+ boolean oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.BOOLEAN_LITERAL__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BOOLEAN_LITERAL__VALUE:
+ return isValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BOOLEAN_LITERAL__VALUE:
+ setValue((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BOOLEAN_LITERAL__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.BOOLEAN_LITERAL__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BooleanLiteralImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentReferenceImpl.java
new file mode 100644
index 000000000..6ad94f8e4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentReferenceImpl.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.metamodel.Compartment;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Compartment Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentReferenceImpl#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompartmentReferenceImpl extends ScopedVariableReferenceImpl implements CompartmentReference
+{
+ /**
+ * The cached value of the '{@link #getObj() <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObj()
+ * @generated
+ * @ordered
+ */
+ protected Compartment obj;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompartmentReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.COMPARTMENT_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment getObj()
+ {
+ if (obj != null && obj.eIsProxy())
+ {
+ InternalEObject oldObj = (InternalEObject)obj;
+ obj = (Compartment)eResolveProxy(oldObj);
+ if (obj != oldObj)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.COMPARTMENT_REFERENCE__OBJ, oldObj, obj));
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment basicGetObj()
+ {
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObj(Compartment newObj)
+ {
+ Compartment oldObj = obj;
+ obj = newObj;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.COMPARTMENT_REFERENCE__OBJ, oldObj, obj));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_REFERENCE__OBJ:
+ if (resolve) return getObj();
+ return basicGetObj();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_REFERENCE__OBJ:
+ setObj((Compartment)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_REFERENCE__OBJ:
+ setObj((Compartment)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_REFERENCE__OBJ:
+ return obj != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CompartmentReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentTransitionDefinitionsImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentTransitionDefinitionsImpl.java
new file mode 100644
index 000000000..d65f53e49
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CompartmentTransitionDefinitionsImpl.java
@@ -0,0 +1,260 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Compartment Transition Definitions</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.CompartmentTransitionDefinitionsImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompartmentTransitionDefinitionsImpl extends MinimalEObjectImpl.Container implements CompartmentTransitionDefinitions
+{
+ /**
+ * The cached value of the '{@link #getMetamodel() <em>Metamodel</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMetamodel()
+ * @generated
+ * @ordered
+ */
+ protected MetamodelResource metamodel;
+
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected TransitionBlock expression;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompartmentTransitionDefinitionsImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.COMPARTMENT_TRANSITION_DEFINITIONS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetamodelResource getMetamodel()
+ {
+ if (metamodel != null && metamodel.eIsProxy())
+ {
+ InternalEObject oldMetamodel = (InternalEObject)metamodel;
+ metamodel = (MetamodelResource)eResolveProxy(oldMetamodel);
+ if (metamodel != oldMetamodel)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL, oldMetamodel, metamodel));
+ }
+ }
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetamodelResource basicGetMetamodel()
+ {
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMetamodel(MetamodelResource newMetamodel)
+ {
+ MetamodelResource oldMetamodel = metamodel;
+ metamodel = newMetamodel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL, oldMetamodel, metamodel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionBlock getExpression()
+ {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExpression(TransitionBlock newExpression, NotificationChain msgs)
+ {
+ TransitionBlock oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION, oldExpression, newExpression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpression(TransitionBlock newExpression)
+ {
+ if (newExpression != expression)
+ {
+ NotificationChain msgs = null;
+ if (expression != null)
+ msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION, null, msgs);
+ if (newExpression != null)
+ msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION, null, msgs);
+ msgs = basicSetExpression(newExpression, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION, newExpression, newExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION:
+ return basicSetExpression(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL:
+ if (resolve) return getMetamodel();
+ return basicGetMetamodel();
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__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 CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL:
+ setMetamodel((MetamodelResource)newValue);
+ return;
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION:
+ setExpression((TransitionBlock)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL:
+ setMetamodel((MetamodelResource)null);
+ return;
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION:
+ setExpression((TransitionBlock)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL:
+ return metamodel != null;
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION:
+ return expression != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CompartmentTransitionDefinitionsImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlFactoryImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlFactoryImpl.java
new file mode 100644
index 000000000..34796787c
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlFactoryImpl.java
@@ -0,0 +1,472 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CtdlFactoryImpl extends EFactoryImpl implements CtdlFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CtdlFactory init()
+ {
+ try
+ {
+ CtdlFactory theCtdlFactory = (CtdlFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/model/ctdl.ecore");
+ if (theCtdlFactory != null)
+ {
+ return theCtdlFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CtdlFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CtdlFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS: return createCompartmentTransitionDefinitions();
+ case CtdlPackage.METAMODEL_RESOURCE: return createMetamodelResource();
+ case CtdlPackage.TRANSITION_BLOCK: return createTransitionBlock();
+ case CtdlPackage.BLOCK: return createBlock();
+ case CtdlPackage.DEF_STATEMENT: return createDefStatement();
+ case CtdlPackage.RETURN_STATEMENT: return createReturnStatement();
+ case CtdlPackage.EVALUATION: return createEvaluation();
+ case CtdlPackage.EXPRESSION: return createExpression();
+ case CtdlPackage.FUNCTION_REFERENCE: return createFunctionReference();
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE: return createScopedVariableReference();
+ case CtdlPackage.LOCAL_VARIABLE_REFERENCE: return createLocalVariableReference();
+ case CtdlPackage.COMPARTMENT_REFERENCE: return createCompartmentReference();
+ case CtdlPackage.MODEL_PARAM_REFERENCE: return createModelParamReference();
+ case CtdlPackage.GLOBAL_VARIABLE: return createGlobalVariable();
+ case CtdlPackage.PLUS: return createPlus();
+ case CtdlPackage.MINUS: return createMinus();
+ case CtdlPackage.MULTI: return createMulti();
+ case CtdlPackage.DIV: return createDiv();
+ case CtdlPackage.PRIMARY_EXPRESSION: return createPrimaryExpression();
+ case CtdlPackage.NUMBER_LITERAL: return createNumberLiteral();
+ case CtdlPackage.FUNCTION_CALL: return createFunctionCall();
+ case CtdlPackage.VARIABLE_REFERENCE: return createVariableReference();
+ case CtdlPackage.BOOLEAN_LITERAL: return createBooleanLiteral();
+ case CtdlPackage.STRING_LITERAL: return createStringLiteral();
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE: return createExternalFunctionReference();
+ case CtdlPackage.GLOBAL_VARIABLE_REFERENCE: return createGlobalVariableReference();
+ case CtdlPackage.DEF_STATEMENT_REFERENCE: return createDefStatementReference();
+ case CtdlPackage.ABSOLUTE_COMPARTMENT_VALUE_REFERENCE: return createAbsoluteCompartmentValueReference();
+ case CtdlPackage.RELATIVE_COMPARTMENT_VALUE_REFERENCE: return createRelativeCompartmentValueReference();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompartmentTransitionDefinitions createCompartmentTransitionDefinitions()
+ {
+ CompartmentTransitionDefinitionsImpl compartmentTransitionDefinitions = new CompartmentTransitionDefinitionsImpl();
+ return compartmentTransitionDefinitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetamodelResource createMetamodelResource()
+ {
+ MetamodelResourceImpl metamodelResource = new MetamodelResourceImpl();
+ return metamodelResource;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionBlock createTransitionBlock()
+ {
+ TransitionBlockImpl transitionBlock = new TransitionBlockImpl();
+ return transitionBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Block createBlock()
+ {
+ BlockImpl block = new BlockImpl();
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefStatement createDefStatement()
+ {
+ DefStatementImpl defStatement = new DefStatementImpl();
+ return defStatement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReturnStatement createReturnStatement()
+ {
+ ReturnStatementImpl returnStatement = new ReturnStatementImpl();
+ return returnStatement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Evaluation createEvaluation()
+ {
+ EvaluationImpl evaluation = new EvaluationImpl();
+ return evaluation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression createExpression()
+ {
+ ExpressionImpl expression = new ExpressionImpl();
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionReference createFunctionReference()
+ {
+ FunctionReferenceImpl functionReference = new FunctionReferenceImpl();
+ return functionReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScopedVariableReference createScopedVariableReference()
+ {
+ ScopedVariableReferenceImpl scopedVariableReference = new ScopedVariableReferenceImpl();
+ return scopedVariableReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LocalVariableReference createLocalVariableReference()
+ {
+ LocalVariableReferenceImpl localVariableReference = new LocalVariableReferenceImpl();
+ return localVariableReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompartmentReference createCompartmentReference()
+ {
+ CompartmentReferenceImpl compartmentReference = new CompartmentReferenceImpl();
+ return compartmentReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelParamReference createModelParamReference()
+ {
+ ModelParamReferenceImpl modelParamReference = new ModelParamReferenceImpl();
+ return modelParamReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GlobalVariable createGlobalVariable()
+ {
+ GlobalVariableImpl globalVariable = new GlobalVariableImpl();
+ return globalVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Plus createPlus()
+ {
+ PlusImpl plus = new PlusImpl();
+ return plus;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Minus createMinus()
+ {
+ MinusImpl minus = new MinusImpl();
+ return minus;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Multi createMulti()
+ {
+ MultiImpl multi = new MultiImpl();
+ return multi;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Div createDiv()
+ {
+ DivImpl div = new DivImpl();
+ return div;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimaryExpression createPrimaryExpression()
+ {
+ PrimaryExpressionImpl primaryExpression = new PrimaryExpressionImpl();
+ return primaryExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NumberLiteral createNumberLiteral()
+ {
+ NumberLiteralImpl numberLiteral = new NumberLiteralImpl();
+ return numberLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionCall createFunctionCall()
+ {
+ FunctionCallImpl functionCall = new FunctionCallImpl();
+ return functionCall;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VariableReference createVariableReference()
+ {
+ VariableReferenceImpl variableReference = new VariableReferenceImpl();
+ return variableReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanLiteral createBooleanLiteral()
+ {
+ BooleanLiteralImpl booleanLiteral = new BooleanLiteralImpl();
+ return booleanLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringLiteral createStringLiteral()
+ {
+ StringLiteralImpl stringLiteral = new StringLiteralImpl();
+ return stringLiteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionReference createExternalFunctionReference()
+ {
+ ExternalFunctionReferenceImpl externalFunctionReference = new ExternalFunctionReferenceImpl();
+ return externalFunctionReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GlobalVariableReference createGlobalVariableReference()
+ {
+ GlobalVariableReferenceImpl globalVariableReference = new GlobalVariableReferenceImpl();
+ return globalVariableReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefStatementReference createDefStatementReference()
+ {
+ DefStatementReferenceImpl defStatementReference = new DefStatementReferenceImpl();
+ return defStatementReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbsoluteCompartmentValueReference createAbsoluteCompartmentValueReference()
+ {
+ AbsoluteCompartmentValueReferenceImpl absoluteCompartmentValueReference = new AbsoluteCompartmentValueReferenceImpl();
+ return absoluteCompartmentValueReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RelativeCompartmentValueReference createRelativeCompartmentValueReference()
+ {
+ RelativeCompartmentValueReferenceImpl relativeCompartmentValueReference = new RelativeCompartmentValueReferenceImpl();
+ return relativeCompartmentValueReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CtdlPackage getCtdlPackage()
+ {
+ return (CtdlPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static CtdlPackage getPackage()
+ {
+ return CtdlPackage.eINSTANCE;
+ }
+
+} //CtdlFactoryImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlPackageImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlPackageImpl.java
new file mode 100644
index 000000000..e3e070765
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/CtdlPackageImpl.java
@@ -0,0 +1,1228 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage;
+import org.eclipse.stem.model.metamodel.MetamodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CtdlPackageImpl extends EPackageImpl implements CtdlPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compartmentTransitionDefinitionsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass metamodelResourceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass transitionBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass blockEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass defStatementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass returnStatementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass evaluationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass expressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass functionReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass scopedVariableReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass localVariableReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compartmentReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modelParamReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass globalVariableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass plusEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass minusEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass multiEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass divEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass primaryExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass numberLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass functionCallEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass variableReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringLiteralEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass externalFunctionReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass globalVariableReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass defStatementReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass absoluteCompartmentValueReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass relativeCompartmentValueReferenceEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CtdlPackageImpl()
+ {
+ super(eNS_URI, CtdlFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link CtdlPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CtdlPackage init()
+ {
+ if (isInited) return (CtdlPackage)EPackage.Registry.INSTANCE.getEPackage(CtdlPackage.eNS_URI);
+
+ // Obtain or create and register package
+ CtdlPackageImpl theCtdlPackage = (CtdlPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof CtdlPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new CtdlPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ ExternalFunctionsPackage.eINSTANCE.eClass();
+ MetamodelPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theCtdlPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theCtdlPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCtdlPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(CtdlPackage.eNS_URI, theCtdlPackage);
+ return theCtdlPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCompartmentTransitionDefinitions()
+ {
+ return compartmentTransitionDefinitionsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompartmentTransitionDefinitions_Metamodel()
+ {
+ return (EReference)compartmentTransitionDefinitionsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompartmentTransitionDefinitions_Expression()
+ {
+ return (EReference)compartmentTransitionDefinitionsEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMetamodelResource()
+ {
+ return metamodelResourceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMetamodelResource_Package()
+ {
+ return (EReference)metamodelResourceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMetamodelResource_Model()
+ {
+ return (EReference)metamodelResourceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMetamodelResource_Transition()
+ {
+ return (EReference)metamodelResourceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTransitionBlock()
+ {
+ return transitionBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransitionBlock_Block()
+ {
+ return (EReference)transitionBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBlock()
+ {
+ return blockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBlock_Statements()
+ {
+ return (EReference)blockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBlock_Ret()
+ {
+ return (EReference)blockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefStatement()
+ {
+ return defStatementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDefStatement_Varname()
+ {
+ return (EAttribute)defStatementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDefStatement_Expr()
+ {
+ return (EReference)defStatementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getReturnStatement()
+ {
+ return returnStatementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEvaluation()
+ {
+ return evaluationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEvaluation_Expression()
+ {
+ return (EReference)evaluationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExpression()
+ {
+ return expressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExpression_Exp()
+ {
+ return (EReference)expressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFunctionReference()
+ {
+ return functionReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFunctionReference_Name()
+ {
+ return (EAttribute)functionReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getScopedVariableReference()
+ {
+ return scopedVariableReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getScopedVariableReference_Name()
+ {
+ return (EAttribute)scopedVariableReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLocalVariableReference()
+ {
+ return localVariableReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCompartmentReference()
+ {
+ return compartmentReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompartmentReference_Obj()
+ {
+ return (EReference)compartmentReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getModelParamReference()
+ {
+ return modelParamReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModelParamReference_Obj()
+ {
+ return (EReference)modelParamReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGlobalVariable()
+ {
+ return globalVariableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGlobalVariable_Name()
+ {
+ return (EAttribute)globalVariableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPlus()
+ {
+ return plusEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPlus_Left()
+ {
+ return (EReference)plusEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPlus_Right()
+ {
+ return (EReference)plusEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMinus()
+ {
+ return minusEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMinus_Left()
+ {
+ return (EReference)minusEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMinus_Right()
+ {
+ return (EReference)minusEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMulti()
+ {
+ return multiEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMulti_Left()
+ {
+ return (EReference)multiEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMulti_Right()
+ {
+ return (EReference)multiEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDiv()
+ {
+ return divEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDiv_Left()
+ {
+ return (EReference)divEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDiv_Right()
+ {
+ return (EReference)divEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPrimaryExpression()
+ {
+ return primaryExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPrimaryExpression_Negate()
+ {
+ return (EAttribute)primaryExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNumberLiteral()
+ {
+ return numberLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNumberLiteral_Value()
+ {
+ return (EAttribute)numberLiteralEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFunctionCall()
+ {
+ return functionCallEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFunctionCall_Ref()
+ {
+ return (EReference)functionCallEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFunctionCall_Args()
+ {
+ return (EReference)functionCallEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getVariableReference()
+ {
+ return variableReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getVariableReference_Ref()
+ {
+ return (EReference)variableReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanLiteral()
+ {
+ return booleanLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBooleanLiteral_Value()
+ {
+ return (EAttribute)booleanLiteralEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringLiteral()
+ {
+ return stringLiteralEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringLiteral_Value()
+ {
+ return (EAttribute)stringLiteralEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExternalFunctionReference()
+ {
+ return externalFunctionReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExternalFunctionReference_Func()
+ {
+ return (EReference)externalFunctionReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGlobalVariableReference()
+ {
+ return globalVariableReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefStatementReference()
+ {
+ return defStatementReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDefStatementReference_Obj()
+ {
+ return (EReference)defStatementReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbsoluteCompartmentValueReference()
+ {
+ return absoluteCompartmentValueReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRelativeCompartmentValueReference()
+ {
+ return relativeCompartmentValueReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CtdlFactory getCtdlFactory()
+ {
+ return (CtdlFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ compartmentTransitionDefinitionsEClass = createEClass(COMPARTMENT_TRANSITION_DEFINITIONS);
+ createEReference(compartmentTransitionDefinitionsEClass, COMPARTMENT_TRANSITION_DEFINITIONS__METAMODEL);
+ createEReference(compartmentTransitionDefinitionsEClass, COMPARTMENT_TRANSITION_DEFINITIONS__EXPRESSION);
+
+ metamodelResourceEClass = createEClass(METAMODEL_RESOURCE);
+ createEReference(metamodelResourceEClass, METAMODEL_RESOURCE__PACKAGE);
+ createEReference(metamodelResourceEClass, METAMODEL_RESOURCE__MODEL);
+ createEReference(metamodelResourceEClass, METAMODEL_RESOURCE__TRANSITION);
+
+ transitionBlockEClass = createEClass(TRANSITION_BLOCK);
+ createEReference(transitionBlockEClass, TRANSITION_BLOCK__BLOCK);
+
+ blockEClass = createEClass(BLOCK);
+ createEReference(blockEClass, BLOCK__STATEMENTS);
+ createEReference(blockEClass, BLOCK__RET);
+
+ defStatementEClass = createEClass(DEF_STATEMENT);
+ createEAttribute(defStatementEClass, DEF_STATEMENT__VARNAME);
+ createEReference(defStatementEClass, DEF_STATEMENT__EXPR);
+
+ returnStatementEClass = createEClass(RETURN_STATEMENT);
+
+ evaluationEClass = createEClass(EVALUATION);
+ createEReference(evaluationEClass, EVALUATION__EXPRESSION);
+
+ expressionEClass = createEClass(EXPRESSION);
+ createEReference(expressionEClass, EXPRESSION__EXP);
+
+ functionReferenceEClass = createEClass(FUNCTION_REFERENCE);
+ createEAttribute(functionReferenceEClass, FUNCTION_REFERENCE__NAME);
+
+ scopedVariableReferenceEClass = createEClass(SCOPED_VARIABLE_REFERENCE);
+ createEAttribute(scopedVariableReferenceEClass, SCOPED_VARIABLE_REFERENCE__NAME);
+
+ localVariableReferenceEClass = createEClass(LOCAL_VARIABLE_REFERENCE);
+
+ compartmentReferenceEClass = createEClass(COMPARTMENT_REFERENCE);
+ createEReference(compartmentReferenceEClass, COMPARTMENT_REFERENCE__OBJ);
+
+ modelParamReferenceEClass = createEClass(MODEL_PARAM_REFERENCE);
+ createEReference(modelParamReferenceEClass, MODEL_PARAM_REFERENCE__OBJ);
+
+ globalVariableEClass = createEClass(GLOBAL_VARIABLE);
+ createEAttribute(globalVariableEClass, GLOBAL_VARIABLE__NAME);
+
+ plusEClass = createEClass(PLUS);
+ createEReference(plusEClass, PLUS__LEFT);
+ createEReference(plusEClass, PLUS__RIGHT);
+
+ minusEClass = createEClass(MINUS);
+ createEReference(minusEClass, MINUS__LEFT);
+ createEReference(minusEClass, MINUS__RIGHT);
+
+ multiEClass = createEClass(MULTI);
+ createEReference(multiEClass, MULTI__LEFT);
+ createEReference(multiEClass, MULTI__RIGHT);
+
+ divEClass = createEClass(DIV);
+ createEReference(divEClass, DIV__LEFT);
+ createEReference(divEClass, DIV__RIGHT);
+
+ primaryExpressionEClass = createEClass(PRIMARY_EXPRESSION);
+ createEAttribute(primaryExpressionEClass, PRIMARY_EXPRESSION__NEGATE);
+
+ numberLiteralEClass = createEClass(NUMBER_LITERAL);
+ createEAttribute(numberLiteralEClass, NUMBER_LITERAL__VALUE);
+
+ functionCallEClass = createEClass(FUNCTION_CALL);
+ createEReference(functionCallEClass, FUNCTION_CALL__REF);
+ createEReference(functionCallEClass, FUNCTION_CALL__ARGS);
+
+ variableReferenceEClass = createEClass(VARIABLE_REFERENCE);
+ createEReference(variableReferenceEClass, VARIABLE_REFERENCE__REF);
+
+ booleanLiteralEClass = createEClass(BOOLEAN_LITERAL);
+ createEAttribute(booleanLiteralEClass, BOOLEAN_LITERAL__VALUE);
+
+ stringLiteralEClass = createEClass(STRING_LITERAL);
+ createEAttribute(stringLiteralEClass, STRING_LITERAL__VALUE);
+
+ externalFunctionReferenceEClass = createEClass(EXTERNAL_FUNCTION_REFERENCE);
+ createEReference(externalFunctionReferenceEClass, EXTERNAL_FUNCTION_REFERENCE__FUNC);
+
+ globalVariableReferenceEClass = createEClass(GLOBAL_VARIABLE_REFERENCE);
+
+ defStatementReferenceEClass = createEClass(DEF_STATEMENT_REFERENCE);
+ createEReference(defStatementReferenceEClass, DEF_STATEMENT_REFERENCE__OBJ);
+
+ absoluteCompartmentValueReferenceEClass = createEClass(ABSOLUTE_COMPARTMENT_VALUE_REFERENCE);
+
+ relativeCompartmentValueReferenceEClass = createEClass(RELATIVE_COMPARTMENT_VALUE_REFERENCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ MetamodelPackage theMetamodelPackage = (MetamodelPackage)EPackage.Registry.INSTANCE.getEPackage(MetamodelPackage.eNS_URI);
+ ExternalFunctionsPackage theExternalFunctionsPackage = (ExternalFunctionsPackage)EPackage.Registry.INSTANCE.getEPackage(ExternalFunctionsPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ evaluationEClass.getESuperTypes().add(this.getReturnStatement());
+ localVariableReferenceEClass.getESuperTypes().add(this.getScopedVariableReference());
+ compartmentReferenceEClass.getESuperTypes().add(this.getScopedVariableReference());
+ modelParamReferenceEClass.getESuperTypes().add(this.getScopedVariableReference());
+ plusEClass.getESuperTypes().add(this.getExpression());
+ minusEClass.getESuperTypes().add(this.getExpression());
+ multiEClass.getESuperTypes().add(this.getExpression());
+ divEClass.getESuperTypes().add(this.getExpression());
+ primaryExpressionEClass.getESuperTypes().add(this.getExpression());
+ numberLiteralEClass.getESuperTypes().add(this.getExpression());
+ functionCallEClass.getESuperTypes().add(this.getExpression());
+ variableReferenceEClass.getESuperTypes().add(this.getExpression());
+ booleanLiteralEClass.getESuperTypes().add(this.getExpression());
+ stringLiteralEClass.getESuperTypes().add(this.getExpression());
+ externalFunctionReferenceEClass.getESuperTypes().add(this.getFunctionReference());
+ globalVariableReferenceEClass.getESuperTypes().add(this.getScopedVariableReference());
+ defStatementReferenceEClass.getESuperTypes().add(this.getLocalVariableReference());
+ absoluteCompartmentValueReferenceEClass.getESuperTypes().add(this.getCompartmentReference());
+ relativeCompartmentValueReferenceEClass.getESuperTypes().add(this.getCompartmentReference());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(compartmentTransitionDefinitionsEClass, CompartmentTransitionDefinitions.class, "CompartmentTransitionDefinitions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCompartmentTransitionDefinitions_Metamodel(), this.getMetamodelResource(), null, "metamodel", null, 0, 1, CompartmentTransitionDefinitions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCompartmentTransitionDefinitions_Expression(), this.getTransitionBlock(), null, "expression", null, 0, 1, CompartmentTransitionDefinitions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(metamodelResourceEClass, MetamodelResource.class, "MetamodelResource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMetamodelResource_Package(), theMetamodelPackage.getPackage(), null, "package", null, 0, 1, MetamodelResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMetamodelResource_Model(), theMetamodelPackage.getModel(), null, "model", null, 0, 1, MetamodelResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMetamodelResource_Transition(), theMetamodelPackage.getTransition(), null, "transition", null, 0, 1, MetamodelResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionBlockEClass, TransitionBlock.class, "TransitionBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTransitionBlock_Block(), this.getBlock(), null, "block", null, 0, 1, TransitionBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(blockEClass, Block.class, "Block", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBlock_Statements(), this.getDefStatement(), null, "statements", null, 0, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBlock_Ret(), this.getReturnStatement(), null, "ret", null, 0, 1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(defStatementEClass, DefStatement.class, "DefStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDefStatement_Varname(), ecorePackage.getEString(), "varname", null, 0, 1, DefStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDefStatement_Expr(), this.getEvaluation(), null, "expr", null, 0, 1, DefStatement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(returnStatementEClass, ReturnStatement.class, "ReturnStatement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(evaluationEClass, Evaluation.class, "Evaluation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEvaluation_Expression(), this.getExpression(), null, "expression", null, 0, 1, Evaluation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExpression_Exp(), this.getExpression(), null, "exp", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(functionReferenceEClass, FunctionReference.class, "FunctionReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFunctionReference_Name(), ecorePackage.getEString(), "name", null, 0, 1, FunctionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(scopedVariableReferenceEClass, ScopedVariableReference.class, "ScopedVariableReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getScopedVariableReference_Name(), ecorePackage.getEString(), "name", null, 0, 1, ScopedVariableReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(localVariableReferenceEClass, LocalVariableReference.class, "LocalVariableReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(compartmentReferenceEClass, CompartmentReference.class, "CompartmentReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCompartmentReference_Obj(), theMetamodelPackage.getCompartment(), null, "obj", null, 0, 1, CompartmentReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(modelParamReferenceEClass, ModelParamReference.class, "ModelParamReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getModelParamReference_Obj(), theMetamodelPackage.getModelParam(), null, "obj", null, 0, 1, ModelParamReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(globalVariableEClass, GlobalVariable.class, "GlobalVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getGlobalVariable_Name(), ecorePackage.getEString(), "name", null, 0, 1, GlobalVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(plusEClass, Plus.class, "Plus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPlus_Left(), this.getExpression(), null, "left", null, 0, 1, Plus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPlus_Right(), this.getExpression(), null, "right", null, 0, 1, Plus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(minusEClass, Minus.class, "Minus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMinus_Left(), this.getExpression(), null, "left", null, 0, 1, Minus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMinus_Right(), this.getExpression(), null, "right", null, 0, 1, Minus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(multiEClass, Multi.class, "Multi", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMulti_Left(), this.getExpression(), null, "left", null, 0, 1, Multi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getMulti_Right(), this.getExpression(), null, "right", null, 0, 1, Multi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(divEClass, Div.class, "Div", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDiv_Left(), this.getExpression(), null, "left", null, 0, 1, Div.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDiv_Right(), this.getExpression(), null, "right", null, 0, 1, Div.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(primaryExpressionEClass, PrimaryExpression.class, "PrimaryExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPrimaryExpression_Negate(), ecorePackage.getEBoolean(), "negate", null, 0, 1, PrimaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(numberLiteralEClass, NumberLiteral.class, "NumberLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNumberLiteral_Value(), ecorePackage.getEDouble(), "value", null, 0, 1, NumberLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(functionCallEClass, FunctionCall.class, "FunctionCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFunctionCall_Ref(), this.getFunctionReference(), null, "ref", null, 0, 1, FunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFunctionCall_Args(), this.getExpression(), null, "args", null, 0, -1, FunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(variableReferenceEClass, VariableReference.class, "VariableReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getVariableReference_Ref(), this.getScopedVariableReference(), null, "ref", null, 0, 1, VariableReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(booleanLiteralEClass, BooleanLiteral.class, "BooleanLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getBooleanLiteral_Value(), ecorePackage.getEBoolean(), "value", null, 0, 1, BooleanLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(stringLiteralEClass, StringLiteral.class, "StringLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getStringLiteral_Value(), ecorePackage.getEString(), "value", null, 0, 1, StringLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(externalFunctionReferenceEClass, ExternalFunctionReference.class, "ExternalFunctionReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExternalFunctionReference_Func(), theExternalFunctionsPackage.getExternalFunctionDefinition(), null, "func", null, 0, 1, ExternalFunctionReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(globalVariableReferenceEClass, GlobalVariableReference.class, "GlobalVariableReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(defStatementReferenceEClass, DefStatementReference.class, "DefStatementReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDefStatementReference_Obj(), this.getDefStatement(), null, "obj", null, 0, 1, DefStatementReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(absoluteCompartmentValueReferenceEClass, AbsoluteCompartmentValueReference.class, "AbsoluteCompartmentValueReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(relativeCompartmentValueReferenceEClass, RelativeCompartmentValueReference.class, "RelativeCompartmentValueReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //CtdlPackageImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementImpl.java
new file mode 100644
index 000000000..1242fe36a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementImpl.java
@@ -0,0 +1,265 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Def Statement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl#getVarname <em>Varname</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementImpl#getExpr <em>Expr</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DefStatementImpl extends MinimalEObjectImpl.Container implements DefStatement
+{
+ /**
+ * The default value of the '{@link #getVarname() <em>Varname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVarname()
+ * @generated
+ * @ordered
+ */
+ protected static final String VARNAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVarname() <em>Varname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVarname()
+ * @generated
+ * @ordered
+ */
+ protected String varname = VARNAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getExpr() <em>Expr</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpr()
+ * @generated
+ * @ordered
+ */
+ protected Evaluation expr;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefStatementImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.DEF_STATEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getVarname()
+ {
+ return varname;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVarname(String newVarname)
+ {
+ String oldVarname = varname;
+ varname = newVarname;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.DEF_STATEMENT__VARNAME, oldVarname, varname));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Evaluation getExpr()
+ {
+ return expr;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExpr(Evaluation newExpr, NotificationChain msgs)
+ {
+ Evaluation oldExpr = expr;
+ expr = newExpr;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.DEF_STATEMENT__EXPR, oldExpr, newExpr);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpr(Evaluation newExpr)
+ {
+ if (newExpr != expr)
+ {
+ NotificationChain msgs = null;
+ if (expr != null)
+ msgs = ((InternalEObject)expr).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DEF_STATEMENT__EXPR, null, msgs);
+ if (newExpr != null)
+ msgs = ((InternalEObject)newExpr).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DEF_STATEMENT__EXPR, null, msgs);
+ msgs = basicSetExpr(newExpr, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.DEF_STATEMENT__EXPR, newExpr, newExpr));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT__EXPR:
+ return basicSetExpr(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT__VARNAME:
+ return getVarname();
+ case CtdlPackage.DEF_STATEMENT__EXPR:
+ return getExpr();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT__VARNAME:
+ setVarname((String)newValue);
+ return;
+ case CtdlPackage.DEF_STATEMENT__EXPR:
+ setExpr((Evaluation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT__VARNAME:
+ setVarname(VARNAME_EDEFAULT);
+ return;
+ case CtdlPackage.DEF_STATEMENT__EXPR:
+ setExpr((Evaluation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT__VARNAME:
+ return VARNAME_EDEFAULT == null ? varname != null : !VARNAME_EDEFAULT.equals(varname);
+ case CtdlPackage.DEF_STATEMENT__EXPR:
+ return expr != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (varname: ");
+ result.append(varname);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DefStatementImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementReferenceImpl.java
new file mode 100644
index 000000000..8b4e854f6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DefStatementReferenceImpl.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Def Statement Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.DefStatementReferenceImpl#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DefStatementReferenceImpl extends LocalVariableReferenceImpl implements DefStatementReference
+{
+ /**
+ * The cached value of the '{@link #getObj() <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObj()
+ * @generated
+ * @ordered
+ */
+ protected DefStatement obj;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefStatementReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.DEF_STATEMENT_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefStatement getObj()
+ {
+ if (obj != null && obj.eIsProxy())
+ {
+ InternalEObject oldObj = (InternalEObject)obj;
+ obj = (DefStatement)eResolveProxy(oldObj);
+ if (obj != oldObj)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ, oldObj, obj));
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefStatement basicGetObj()
+ {
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObj(DefStatement newObj)
+ {
+ DefStatement oldObj = obj;
+ obj = newObj;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ, oldObj, obj));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ:
+ if (resolve) return getObj();
+ return basicGetObj();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ:
+ setObj((DefStatement)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ:
+ setObj((DefStatement)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DEF_STATEMENT_REFERENCE__OBJ:
+ return obj != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DefStatementReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DivImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DivImpl.java
new file mode 100644
index 000000000..202ee32d2
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/DivImpl.java
@@ -0,0 +1,264 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Div</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.DivImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DivImpl extends ExpressionImpl implements Div
+{
+ /**
+ * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLeft()
+ * @generated
+ * @ordered
+ */
+ protected Expression left;
+
+ /**
+ * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRight()
+ * @generated
+ * @ordered
+ */
+ protected Expression right;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DivImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.DIV;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getLeft()
+ {
+ return left;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs)
+ {
+ Expression oldLeft = left;
+ left = newLeft;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.DIV__LEFT, oldLeft, newLeft);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLeft(Expression newLeft)
+ {
+ if (newLeft != left)
+ {
+ NotificationChain msgs = null;
+ if (left != null)
+ msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DIV__LEFT, null, msgs);
+ if (newLeft != null)
+ msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DIV__LEFT, null, msgs);
+ msgs = basicSetLeft(newLeft, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.DIV__LEFT, newLeft, newLeft));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getRight()
+ {
+ return right;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs)
+ {
+ Expression oldRight = right;
+ right = newRight;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.DIV__RIGHT, oldRight, newRight);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRight(Expression newRight)
+ {
+ if (newRight != right)
+ {
+ NotificationChain msgs = null;
+ if (right != null)
+ msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DIV__RIGHT, null, msgs);
+ if (newRight != null)
+ msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.DIV__RIGHT, null, msgs);
+ msgs = basicSetRight(newRight, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.DIV__RIGHT, newRight, newRight));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DIV__LEFT:
+ return basicSetLeft(null, msgs);
+ case CtdlPackage.DIV__RIGHT:
+ return basicSetRight(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DIV__LEFT:
+ return getLeft();
+ case CtdlPackage.DIV__RIGHT:
+ return getRight();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DIV__LEFT:
+ setLeft((Expression)newValue);
+ return;
+ case CtdlPackage.DIV__RIGHT:
+ setRight((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DIV__LEFT:
+ setLeft((Expression)null);
+ return;
+ case CtdlPackage.DIV__RIGHT:
+ setRight((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.DIV__LEFT:
+ return left != null;
+ case CtdlPackage.DIV__RIGHT:
+ return right != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DivImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/EvaluationImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/EvaluationImpl.java
new file mode 100644
index 000000000..bb2cd2109
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/EvaluationImpl.java
@@ -0,0 +1,193 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Evaluation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.EvaluationImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EvaluationImpl extends ReturnStatementImpl implements Evaluation
+{
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected Expression expression;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EvaluationImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.EVALUATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getExpression()
+ {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExpression(Expression newExpression, NotificationChain msgs)
+ {
+ Expression oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.EVALUATION__EXPRESSION, oldExpression, newExpression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpression(Expression newExpression)
+ {
+ if (newExpression != expression)
+ {
+ NotificationChain msgs = null;
+ if (expression != null)
+ msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.EVALUATION__EXPRESSION, null, msgs);
+ if (newExpression != null)
+ msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.EVALUATION__EXPRESSION, null, msgs);
+ msgs = basicSetExpression(newExpression, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.EVALUATION__EXPRESSION, newExpression, newExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EVALUATION__EXPRESSION:
+ return basicSetExpression(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EVALUATION__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 CtdlPackage.EVALUATION__EXPRESSION:
+ setExpression((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EVALUATION__EXPRESSION:
+ setExpression((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EVALUATION__EXPRESSION:
+ return expression != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //EvaluationImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExpressionImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExpressionImpl.java
new file mode 100644
index 000000000..84777c8b1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExpressionImpl.java
@@ -0,0 +1,193 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExpressionImpl#getExp <em>Exp</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpressionImpl extends MinimalEObjectImpl.Container implements Expression
+{
+ /**
+ * The cached value of the '{@link #getExp() <em>Exp</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExp()
+ * @generated
+ * @ordered
+ */
+ protected Expression exp;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getExp()
+ {
+ return exp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetExp(Expression newExp, NotificationChain msgs)
+ {
+ Expression oldExp = exp;
+ exp = newExp;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.EXPRESSION__EXP, oldExp, newExp);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExp(Expression newExp)
+ {
+ if (newExp != exp)
+ {
+ NotificationChain msgs = null;
+ if (exp != null)
+ msgs = ((InternalEObject)exp).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.EXPRESSION__EXP, null, msgs);
+ if (newExp != null)
+ msgs = ((InternalEObject)newExp).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.EXPRESSION__EXP, null, msgs);
+ msgs = basicSetExp(newExp, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.EXPRESSION__EXP, newExp, newExp));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXPRESSION__EXP:
+ return basicSetExp(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXPRESSION__EXP:
+ return getExp();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXPRESSION__EXP:
+ setExp((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXPRESSION__EXP:
+ setExp((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXPRESSION__EXP:
+ return exp != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExpressionImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExternalFunctionReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExternalFunctionReferenceImpl.java
new file mode 100644
index 000000000..64a5b9631
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ExternalFunctionReferenceImpl.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External Function Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.ExternalFunctionReferenceImpl#getFunc <em>Func</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExternalFunctionReferenceImpl extends FunctionReferenceImpl implements ExternalFunctionReference
+{
+ /**
+ * The cached value of the '{@link #getFunc() <em>Func</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFunc()
+ * @generated
+ * @ordered
+ */
+ protected ExternalFunctionDefinition func;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalFunctionReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.EXTERNAL_FUNCTION_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionDefinition getFunc()
+ {
+ if (func != null && func.eIsProxy())
+ {
+ InternalEObject oldFunc = (InternalEObject)func;
+ func = (ExternalFunctionDefinition)eResolveProxy(oldFunc);
+ if (func != oldFunc)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC, oldFunc, func));
+ }
+ }
+ return func;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalFunctionDefinition basicGetFunc()
+ {
+ return func;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFunc(ExternalFunctionDefinition newFunc)
+ {
+ ExternalFunctionDefinition oldFunc = func;
+ func = newFunc;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC, oldFunc, func));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC:
+ if (resolve) return getFunc();
+ return basicGetFunc();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC:
+ setFunc((ExternalFunctionDefinition)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC:
+ setFunc((ExternalFunctionDefinition)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE__FUNC:
+ return func != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExternalFunctionReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionCallImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionCallImpl.java
new file mode 100644
index 000000000..59e9c807b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionCallImpl.java
@@ -0,0 +1,232 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Call</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl#getRef <em>Ref</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionCallImpl#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionCallImpl extends ExpressionImpl implements FunctionCall
+{
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected FunctionReference ref;
+
+ /**
+ * The cached value of the '{@link #getArgs() <em>Args</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArgs()
+ * @generated
+ * @ordered
+ */
+ protected EList<Expression> args;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FunctionCallImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.FUNCTION_CALL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionReference getRef()
+ {
+ if (ref != null && ref.eIsProxy())
+ {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = (FunctionReference)eResolveProxy(oldRef);
+ if (ref != oldRef)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.FUNCTION_CALL__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionReference basicGetRef()
+ {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(FunctionReference newRef)
+ {
+ FunctionReference oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.FUNCTION_CALL__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Expression> getArgs()
+ {
+ if (args == null)
+ {
+ args = new EObjectContainmentEList<Expression>(Expression.class, this, CtdlPackage.FUNCTION_CALL__ARGS);
+ }
+ return args;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_CALL__ARGS:
+ return ((InternalEList<?>)getArgs()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_CALL__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ case CtdlPackage.FUNCTION_CALL__ARGS:
+ return getArgs();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_CALL__REF:
+ setRef((FunctionReference)newValue);
+ return;
+ case CtdlPackage.FUNCTION_CALL__ARGS:
+ getArgs().clear();
+ getArgs().addAll((Collection<? extends Expression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_CALL__REF:
+ setRef((FunctionReference)null);
+ return;
+ case CtdlPackage.FUNCTION_CALL__ARGS:
+ getArgs().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_CALL__REF:
+ return ref != null;
+ case CtdlPackage.FUNCTION_CALL__ARGS:
+ return args != null && !args.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //FunctionCallImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionReferenceImpl.java
new file mode 100644
index 000000000..e69f152e1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/FunctionReferenceImpl.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.FunctionReferenceImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionReferenceImpl extends MinimalEObjectImpl.Container implements FunctionReference
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FunctionReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.FUNCTION_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.FUNCTION_REFERENCE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_REFERENCE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_REFERENCE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_REFERENCE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.FUNCTION_REFERENCE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FunctionReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableImpl.java
new file mode 100644
index 000000000..f9bd1aa68
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableImpl.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Global Variable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.GlobalVariableImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GlobalVariableImpl extends MinimalEObjectImpl.Container implements GlobalVariable
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GlobalVariableImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.GLOBAL_VARIABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.GLOBAL_VARIABLE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.GLOBAL_VARIABLE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.GLOBAL_VARIABLE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.GLOBAL_VARIABLE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.GLOBAL_VARIABLE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //GlobalVariableImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableReferenceImpl.java
new file mode 100644
index 000000000..361f646a1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/GlobalVariableReferenceImpl.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Global Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class GlobalVariableReferenceImpl extends ScopedVariableReferenceImpl implements GlobalVariableReference
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GlobalVariableReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.GLOBAL_VARIABLE_REFERENCE;
+ }
+
+} //GlobalVariableReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/LocalVariableReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/LocalVariableReferenceImpl.java
new file mode 100644
index 000000000..aab3754fd
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/LocalVariableReferenceImpl.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Local Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LocalVariableReferenceImpl extends ScopedVariableReferenceImpl implements LocalVariableReference
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LocalVariableReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.LOCAL_VARIABLE_REFERENCE;
+ }
+
+} //LocalVariableReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MetamodelResourceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MetamodelResourceImpl.java
new file mode 100644
index 000000000..bfe6aed61
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MetamodelResourceImpl.java
@@ -0,0 +1,304 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+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.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metamodel Resource</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl#getPackage <em>Package</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl#getModel <em>Model</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MetamodelResourceImpl#getTransition <em>Transition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MetamodelResourceImpl extends MinimalEObjectImpl.Container implements MetamodelResource
+{
+ /**
+ * The cached value of the '{@link #getPackage() <em>Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPackage()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.stem.model.metamodel.Package package_;
+
+ /**
+ * The cached value of the '{@link #getModel() <em>Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModel()
+ * @generated
+ * @ordered
+ */
+ protected Model model;
+
+ /**
+ * The cached value of the '{@link #getTransition() <em>Transition</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransition()
+ * @generated
+ * @ordered
+ */
+ protected Transition transition;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MetamodelResourceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.METAMODEL_RESOURCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.stem.model.metamodel.Package getPackage()
+ {
+ if (package_ != null && package_.eIsProxy())
+ {
+ InternalEObject oldPackage = (InternalEObject)package_;
+ package_ = (org.eclipse.stem.model.metamodel.Package)eResolveProxy(oldPackage);
+ if (package_ != oldPackage)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.METAMODEL_RESOURCE__PACKAGE, oldPackage, package_));
+ }
+ }
+ return package_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.stem.model.metamodel.Package basicGetPackage()
+ {
+ return package_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPackage(org.eclipse.stem.model.metamodel.Package newPackage)
+ {
+ org.eclipse.stem.model.metamodel.Package oldPackage = package_;
+ package_ = newPackage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.METAMODEL_RESOURCE__PACKAGE, oldPackage, package_));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model getModel()
+ {
+ if (model != null && model.eIsProxy())
+ {
+ InternalEObject oldModel = (InternalEObject)model;
+ model = (Model)eResolveProxy(oldModel);
+ if (model != oldModel)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.METAMODEL_RESOURCE__MODEL, oldModel, model));
+ }
+ }
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model basicGetModel()
+ {
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setModel(Model newModel)
+ {
+ Model oldModel = model;
+ model = newModel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.METAMODEL_RESOURCE__MODEL, oldModel, model));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Transition getTransition()
+ {
+ if (transition != null && transition.eIsProxy())
+ {
+ InternalEObject oldTransition = (InternalEObject)transition;
+ transition = (Transition)eResolveProxy(oldTransition);
+ if (transition != oldTransition)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.METAMODEL_RESOURCE__TRANSITION, oldTransition, transition));
+ }
+ }
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Transition basicGetTransition()
+ {
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTransition(Transition newTransition)
+ {
+ Transition oldTransition = transition;
+ transition = newTransition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.METAMODEL_RESOURCE__TRANSITION, oldTransition, transition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.METAMODEL_RESOURCE__PACKAGE:
+ if (resolve) return getPackage();
+ return basicGetPackage();
+ case CtdlPackage.METAMODEL_RESOURCE__MODEL:
+ if (resolve) return getModel();
+ return basicGetModel();
+ case CtdlPackage.METAMODEL_RESOURCE__TRANSITION:
+ if (resolve) return getTransition();
+ return basicGetTransition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.METAMODEL_RESOURCE__PACKAGE:
+ setPackage((org.eclipse.stem.model.metamodel.Package)newValue);
+ return;
+ case CtdlPackage.METAMODEL_RESOURCE__MODEL:
+ setModel((Model)newValue);
+ return;
+ case CtdlPackage.METAMODEL_RESOURCE__TRANSITION:
+ setTransition((Transition)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.METAMODEL_RESOURCE__PACKAGE:
+ setPackage((org.eclipse.stem.model.metamodel.Package)null);
+ return;
+ case CtdlPackage.METAMODEL_RESOURCE__MODEL:
+ setModel((Model)null);
+ return;
+ case CtdlPackage.METAMODEL_RESOURCE__TRANSITION:
+ setTransition((Transition)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.METAMODEL_RESOURCE__PACKAGE:
+ return package_ != null;
+ case CtdlPackage.METAMODEL_RESOURCE__MODEL:
+ return model != null;
+ case CtdlPackage.METAMODEL_RESOURCE__TRANSITION:
+ return transition != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MetamodelResourceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MinusImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MinusImpl.java
new file mode 100644
index 000000000..4b661b710
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MinusImpl.java
@@ -0,0 +1,264 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Minus</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MinusImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MinusImpl extends ExpressionImpl implements Minus
+{
+ /**
+ * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLeft()
+ * @generated
+ * @ordered
+ */
+ protected Expression left;
+
+ /**
+ * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRight()
+ * @generated
+ * @ordered
+ */
+ protected Expression right;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MinusImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.MINUS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getLeft()
+ {
+ return left;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs)
+ {
+ Expression oldLeft = left;
+ left = newLeft;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.MINUS__LEFT, oldLeft, newLeft);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLeft(Expression newLeft)
+ {
+ if (newLeft != left)
+ {
+ NotificationChain msgs = null;
+ if (left != null)
+ msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MINUS__LEFT, null, msgs);
+ if (newLeft != null)
+ msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MINUS__LEFT, null, msgs);
+ msgs = basicSetLeft(newLeft, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.MINUS__LEFT, newLeft, newLeft));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getRight()
+ {
+ return right;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs)
+ {
+ Expression oldRight = right;
+ right = newRight;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.MINUS__RIGHT, oldRight, newRight);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRight(Expression newRight)
+ {
+ if (newRight != right)
+ {
+ NotificationChain msgs = null;
+ if (right != null)
+ msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MINUS__RIGHT, null, msgs);
+ if (newRight != null)
+ msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MINUS__RIGHT, null, msgs);
+ msgs = basicSetRight(newRight, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.MINUS__RIGHT, newRight, newRight));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MINUS__LEFT:
+ return basicSetLeft(null, msgs);
+ case CtdlPackage.MINUS__RIGHT:
+ return basicSetRight(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MINUS__LEFT:
+ return getLeft();
+ case CtdlPackage.MINUS__RIGHT:
+ return getRight();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MINUS__LEFT:
+ setLeft((Expression)newValue);
+ return;
+ case CtdlPackage.MINUS__RIGHT:
+ setRight((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MINUS__LEFT:
+ setLeft((Expression)null);
+ return;
+ case CtdlPackage.MINUS__RIGHT:
+ setRight((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MINUS__LEFT:
+ return left != null;
+ case CtdlPackage.MINUS__RIGHT:
+ return right != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MinusImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ModelParamReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ModelParamReferenceImpl.java
new file mode 100644
index 000000000..1c89781e8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ModelParamReferenceImpl.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.metamodel.ModelParam;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model Param Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.ModelParamReferenceImpl#getObj <em>Obj</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModelParamReferenceImpl extends ScopedVariableReferenceImpl implements ModelParamReference
+{
+ /**
+ * The cached value of the '{@link #getObj() <em>Obj</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getObj()
+ * @generated
+ * @ordered
+ */
+ protected ModelParam obj;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModelParamReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.MODEL_PARAM_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelParam getObj()
+ {
+ if (obj != null && obj.eIsProxy())
+ {
+ InternalEObject oldObj = (InternalEObject)obj;
+ obj = (ModelParam)eResolveProxy(oldObj);
+ if (obj != oldObj)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.MODEL_PARAM_REFERENCE__OBJ, oldObj, obj));
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelParam basicGetObj()
+ {
+ return obj;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setObj(ModelParam newObj)
+ {
+ ModelParam oldObj = obj;
+ obj = newObj;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.MODEL_PARAM_REFERENCE__OBJ, oldObj, obj));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MODEL_PARAM_REFERENCE__OBJ:
+ if (resolve) return getObj();
+ return basicGetObj();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MODEL_PARAM_REFERENCE__OBJ:
+ setObj((ModelParam)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MODEL_PARAM_REFERENCE__OBJ:
+ setObj((ModelParam)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MODEL_PARAM_REFERENCE__OBJ:
+ return obj != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ModelParamReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MultiImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MultiImpl.java
new file mode 100644
index 000000000..6bef3a8d5
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/MultiImpl.java
@@ -0,0 +1,264 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multi</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.MultiImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MultiImpl extends ExpressionImpl implements Multi
+{
+ /**
+ * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLeft()
+ * @generated
+ * @ordered
+ */
+ protected Expression left;
+
+ /**
+ * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRight()
+ * @generated
+ * @ordered
+ */
+ protected Expression right;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MultiImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.MULTI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getLeft()
+ {
+ return left;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs)
+ {
+ Expression oldLeft = left;
+ left = newLeft;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.MULTI__LEFT, oldLeft, newLeft);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLeft(Expression newLeft)
+ {
+ if (newLeft != left)
+ {
+ NotificationChain msgs = null;
+ if (left != null)
+ msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MULTI__LEFT, null, msgs);
+ if (newLeft != null)
+ msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MULTI__LEFT, null, msgs);
+ msgs = basicSetLeft(newLeft, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.MULTI__LEFT, newLeft, newLeft));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getRight()
+ {
+ return right;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs)
+ {
+ Expression oldRight = right;
+ right = newRight;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.MULTI__RIGHT, oldRight, newRight);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRight(Expression newRight)
+ {
+ if (newRight != right)
+ {
+ NotificationChain msgs = null;
+ if (right != null)
+ msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MULTI__RIGHT, null, msgs);
+ if (newRight != null)
+ msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.MULTI__RIGHT, null, msgs);
+ msgs = basicSetRight(newRight, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.MULTI__RIGHT, newRight, newRight));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MULTI__LEFT:
+ return basicSetLeft(null, msgs);
+ case CtdlPackage.MULTI__RIGHT:
+ return basicSetRight(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MULTI__LEFT:
+ return getLeft();
+ case CtdlPackage.MULTI__RIGHT:
+ return getRight();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MULTI__LEFT:
+ setLeft((Expression)newValue);
+ return;
+ case CtdlPackage.MULTI__RIGHT:
+ setRight((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MULTI__LEFT:
+ setLeft((Expression)null);
+ return;
+ case CtdlPackage.MULTI__RIGHT:
+ setRight((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.MULTI__LEFT:
+ return left != null;
+ case CtdlPackage.MULTI__RIGHT:
+ return right != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MultiImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/NumberLiteralImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/NumberLiteralImpl.java
new file mode 100644
index 000000000..ab2dbefe9
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/NumberLiteralImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Number Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.NumberLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NumberLiteralImpl extends ExpressionImpl implements NumberLiteral
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double VALUE_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected double value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NumberLiteralImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.NUMBER_LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(double newValue)
+ {
+ double oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.NUMBER_LITERAL__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.NUMBER_LITERAL__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.NUMBER_LITERAL__VALUE:
+ setValue((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.NUMBER_LITERAL__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.NUMBER_LITERAL__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //NumberLiteralImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PlusImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PlusImpl.java
new file mode 100644
index 000000000..334295ddc
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PlusImpl.java
@@ -0,0 +1,264 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Plus</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl#getLeft <em>Left</em>}</li>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.PlusImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PlusImpl extends ExpressionImpl implements Plus
+{
+ /**
+ * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLeft()
+ * @generated
+ * @ordered
+ */
+ protected Expression left;
+
+ /**
+ * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRight()
+ * @generated
+ * @ordered
+ */
+ protected Expression right;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PlusImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.PLUS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getLeft()
+ {
+ return left;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs)
+ {
+ Expression oldLeft = left;
+ left = newLeft;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.PLUS__LEFT, oldLeft, newLeft);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLeft(Expression newLeft)
+ {
+ if (newLeft != left)
+ {
+ NotificationChain msgs = null;
+ if (left != null)
+ msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.PLUS__LEFT, null, msgs);
+ if (newLeft != null)
+ msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.PLUS__LEFT, null, msgs);
+ msgs = basicSetLeft(newLeft, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.PLUS__LEFT, newLeft, newLeft));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Expression getRight()
+ {
+ return right;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs)
+ {
+ Expression oldRight = right;
+ right = newRight;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.PLUS__RIGHT, oldRight, newRight);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRight(Expression newRight)
+ {
+ if (newRight != right)
+ {
+ NotificationChain msgs = null;
+ if (right != null)
+ msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.PLUS__RIGHT, null, msgs);
+ if (newRight != null)
+ msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.PLUS__RIGHT, null, msgs);
+ msgs = basicSetRight(newRight, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.PLUS__RIGHT, newRight, newRight));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PLUS__LEFT:
+ return basicSetLeft(null, msgs);
+ case CtdlPackage.PLUS__RIGHT:
+ return basicSetRight(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PLUS__LEFT:
+ return getLeft();
+ case CtdlPackage.PLUS__RIGHT:
+ return getRight();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PLUS__LEFT:
+ setLeft((Expression)newValue);
+ return;
+ case CtdlPackage.PLUS__RIGHT:
+ setRight((Expression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PLUS__LEFT:
+ setLeft((Expression)null);
+ return;
+ case CtdlPackage.PLUS__RIGHT:
+ setRight((Expression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PLUS__LEFT:
+ return left != null;
+ case CtdlPackage.PLUS__RIGHT:
+ return right != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PlusImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PrimaryExpressionImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PrimaryExpressionImpl.java
new file mode 100644
index 000000000..613171c64
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/PrimaryExpressionImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Primary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.PrimaryExpressionImpl#isNegate <em>Negate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PrimaryExpressionImpl extends ExpressionImpl implements PrimaryExpression
+{
+ /**
+ * The default value of the '{@link #isNegate() <em>Negate</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isNegate()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean NEGATE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isNegate() <em>Negate</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isNegate()
+ * @generated
+ * @ordered
+ */
+ protected boolean negate = NEGATE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PrimaryExpressionImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.PRIMARY_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isNegate()
+ {
+ return negate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNegate(boolean newNegate)
+ {
+ boolean oldNegate = negate;
+ negate = newNegate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.PRIMARY_EXPRESSION__NEGATE, oldNegate, negate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PRIMARY_EXPRESSION__NEGATE:
+ return isNegate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PRIMARY_EXPRESSION__NEGATE:
+ setNegate((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PRIMARY_EXPRESSION__NEGATE:
+ setNegate(NEGATE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.PRIMARY_EXPRESSION__NEGATE:
+ return negate != NEGATE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (negate: ");
+ result.append(negate);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PrimaryExpressionImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/RelativeCompartmentValueReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/RelativeCompartmentValueReferenceImpl.java
new file mode 100644
index 000000000..940b0ccd6
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/RelativeCompartmentValueReferenceImpl.java
@@ -0,0 +1,44 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Relative Compartment Value Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RelativeCompartmentValueReferenceImpl extends CompartmentReferenceImpl implements RelativeCompartmentValueReference
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RelativeCompartmentValueReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.RELATIVE_COMPARTMENT_VALUE_REFERENCE;
+ }
+
+} //RelativeCompartmentValueReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ReturnStatementImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ReturnStatementImpl.java
new file mode 100644
index 000000000..85b46f199
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ReturnStatementImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Return Statement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ReturnStatementImpl extends MinimalEObjectImpl.Container implements ReturnStatement
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ReturnStatementImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.RETURN_STATEMENT;
+ }
+
+} //ReturnStatementImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ScopedVariableReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ScopedVariableReferenceImpl.java
new file mode 100644
index 000000000..325a38d11
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/ScopedVariableReferenceImpl.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Scoped Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.ScopedVariableReferenceImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ScopedVariableReferenceImpl extends MinimalEObjectImpl.Container implements ScopedVariableReference
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ScopedVariableReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.SCOPED_VARIABLE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.SCOPED_VARIABLE_REFERENCE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ScopedVariableReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/StringLiteralImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/StringLiteralImpl.java
new file mode 100644
index 000000000..50244a9a7
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/StringLiteralImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.StringLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringLiteralImpl extends ExpressionImpl implements StringLiteral
+{
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringLiteralImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.STRING_LITERAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue)
+ {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.STRING_LITERAL__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.STRING_LITERAL__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.STRING_LITERAL__VALUE:
+ setValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.STRING_LITERAL__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.STRING_LITERAL__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //StringLiteralImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/TransitionBlockImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/TransitionBlockImpl.java
new file mode 100644
index 000000000..71c672a35
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/TransitionBlockImpl.java
@@ -0,0 +1,194 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+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.MinimalEObjectImpl;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition Block</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.TransitionBlockImpl#getBlock <em>Block</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionBlockImpl extends MinimalEObjectImpl.Container implements TransitionBlock
+{
+ /**
+ * The cached value of the '{@link #getBlock() <em>Block</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBlock()
+ * @generated
+ * @ordered
+ */
+ protected Block block;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionBlockImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.TRANSITION_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Block getBlock()
+ {
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetBlock(Block newBlock, NotificationChain msgs)
+ {
+ Block oldBlock = block;
+ block = newBlock;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CtdlPackage.TRANSITION_BLOCK__BLOCK, oldBlock, newBlock);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBlock(Block newBlock)
+ {
+ if (newBlock != block)
+ {
+ NotificationChain msgs = null;
+ if (block != null)
+ msgs = ((InternalEObject)block).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.TRANSITION_BLOCK__BLOCK, null, msgs);
+ if (newBlock != null)
+ msgs = ((InternalEObject)newBlock).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CtdlPackage.TRANSITION_BLOCK__BLOCK, null, msgs);
+ msgs = basicSetBlock(newBlock, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.TRANSITION_BLOCK__BLOCK, newBlock, newBlock));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.TRANSITION_BLOCK__BLOCK:
+ return basicSetBlock(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.TRANSITION_BLOCK__BLOCK:
+ return getBlock();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.TRANSITION_BLOCK__BLOCK:
+ setBlock((Block)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.TRANSITION_BLOCK__BLOCK:
+ setBlock((Block)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.TRANSITION_BLOCK__BLOCK:
+ return block != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TransitionBlockImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/VariableReferenceImpl.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/VariableReferenceImpl.java
new file mode 100644
index 000000000..004fbfc30
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/impl/VariableReferenceImpl.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Variable Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.ctdl.ctdl.impl.VariableReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class VariableReferenceImpl extends ExpressionImpl implements VariableReference
+{
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected ScopedVariableReference ref;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected VariableReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return CtdlPackage.Literals.VARIABLE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScopedVariableReference getRef()
+ {
+ if (ref != null && ref.eIsProxy())
+ {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = (ScopedVariableReference)eResolveProxy(oldRef);
+ if (ref != oldRef)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CtdlPackage.VARIABLE_REFERENCE__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScopedVariableReference basicGetRef()
+ {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(ScopedVariableReference newRef)
+ {
+ ScopedVariableReference oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CtdlPackage.VARIABLE_REFERENCE__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.VARIABLE_REFERENCE__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.VARIABLE_REFERENCE__REF:
+ setRef((ScopedVariableReference)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.VARIABLE_REFERENCE__REF:
+ setRef((ScopedVariableReference)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CtdlPackage.VARIABLE_REFERENCE__REF:
+ return ref != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //VariableReferenceImpl
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlAdapterFactory.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlAdapterFactory.java
new file mode 100644
index 000000000..a40112bc4
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlAdapterFactory.java
@@ -0,0 +1,721 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage
+ * @generated
+ */
+public class CtdlAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CtdlPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CtdlAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = CtdlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CtdlSwitch<Adapter> modelSwitch =
+ new CtdlSwitch<Adapter>()
+ {
+ @Override
+ public Adapter caseCompartmentTransitionDefinitions(CompartmentTransitionDefinitions object)
+ {
+ return createCompartmentTransitionDefinitionsAdapter();
+ }
+ @Override
+ public Adapter caseMetamodelResource(MetamodelResource object)
+ {
+ return createMetamodelResourceAdapter();
+ }
+ @Override
+ public Adapter caseTransitionBlock(TransitionBlock object)
+ {
+ return createTransitionBlockAdapter();
+ }
+ @Override
+ public Adapter caseBlock(Block object)
+ {
+ return createBlockAdapter();
+ }
+ @Override
+ public Adapter caseDefStatement(DefStatement object)
+ {
+ return createDefStatementAdapter();
+ }
+ @Override
+ public Adapter caseReturnStatement(ReturnStatement object)
+ {
+ return createReturnStatementAdapter();
+ }
+ @Override
+ public Adapter caseEvaluation(Evaluation object)
+ {
+ return createEvaluationAdapter();
+ }
+ @Override
+ public Adapter caseExpression(Expression object)
+ {
+ return createExpressionAdapter();
+ }
+ @Override
+ public Adapter caseFunctionReference(FunctionReference object)
+ {
+ return createFunctionReferenceAdapter();
+ }
+ @Override
+ public Adapter caseScopedVariableReference(ScopedVariableReference object)
+ {
+ return createScopedVariableReferenceAdapter();
+ }
+ @Override
+ public Adapter caseLocalVariableReference(LocalVariableReference object)
+ {
+ return createLocalVariableReferenceAdapter();
+ }
+ @Override
+ public Adapter caseCompartmentReference(CompartmentReference object)
+ {
+ return createCompartmentReferenceAdapter();
+ }
+ @Override
+ public Adapter caseModelParamReference(ModelParamReference object)
+ {
+ return createModelParamReferenceAdapter();
+ }
+ @Override
+ public Adapter caseGlobalVariable(GlobalVariable object)
+ {
+ return createGlobalVariableAdapter();
+ }
+ @Override
+ public Adapter casePlus(Plus object)
+ {
+ return createPlusAdapter();
+ }
+ @Override
+ public Adapter caseMinus(Minus object)
+ {
+ return createMinusAdapter();
+ }
+ @Override
+ public Adapter caseMulti(Multi object)
+ {
+ return createMultiAdapter();
+ }
+ @Override
+ public Adapter caseDiv(Div object)
+ {
+ return createDivAdapter();
+ }
+ @Override
+ public Adapter casePrimaryExpression(PrimaryExpression object)
+ {
+ return createPrimaryExpressionAdapter();
+ }
+ @Override
+ public Adapter caseNumberLiteral(NumberLiteral object)
+ {
+ return createNumberLiteralAdapter();
+ }
+ @Override
+ public Adapter caseFunctionCall(FunctionCall object)
+ {
+ return createFunctionCallAdapter();
+ }
+ @Override
+ public Adapter caseVariableReference(VariableReference object)
+ {
+ return createVariableReferenceAdapter();
+ }
+ @Override
+ public Adapter caseBooleanLiteral(BooleanLiteral object)
+ {
+ return createBooleanLiteralAdapter();
+ }
+ @Override
+ public Adapter caseStringLiteral(StringLiteral object)
+ {
+ return createStringLiteralAdapter();
+ }
+ @Override
+ public Adapter caseExternalFunctionReference(ExternalFunctionReference object)
+ {
+ return createExternalFunctionReferenceAdapter();
+ }
+ @Override
+ public Adapter caseGlobalVariableReference(GlobalVariableReference object)
+ {
+ return createGlobalVariableReferenceAdapter();
+ }
+ @Override
+ public Adapter caseDefStatementReference(DefStatementReference object)
+ {
+ return createDefStatementReferenceAdapter();
+ }
+ @Override
+ public Adapter caseAbsoluteCompartmentValueReference(AbsoluteCompartmentValueReference object)
+ {
+ return createAbsoluteCompartmentValueReferenceAdapter();
+ }
+ @Override
+ public Adapter caseRelativeCompartmentValueReference(RelativeCompartmentValueReference object)
+ {
+ return createRelativeCompartmentValueReferenceAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions <em>Compartment Transition Definitions</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions
+ * @generated
+ */
+ public Adapter createCompartmentTransitionDefinitionsAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.MetamodelResource <em>Metamodel Resource</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.MetamodelResource
+ * @generated
+ */
+ public Adapter createMetamodelResourceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.TransitionBlock <em>Transition Block</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.TransitionBlock
+ * @generated
+ */
+ public Adapter createTransitionBlockAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Block <em>Block</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Block
+ * @generated
+ */
+ public Adapter createBlockAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatement <em>Def Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatement
+ * @generated
+ */
+ public Adapter createDefStatementAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.ReturnStatement <em>Return Statement</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ReturnStatement
+ * @generated
+ */
+ public Adapter createReturnStatementAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Evaluation <em>Evaluation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Evaluation
+ * @generated
+ */
+ public Adapter createEvaluationAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Expression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Expression
+ * @generated
+ */
+ public Adapter createExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionReference <em>Function Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionReference
+ * @generated
+ */
+ public Adapter createFunctionReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference <em>Scoped Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference
+ * @generated
+ */
+ public Adapter createScopedVariableReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference <em>Local Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference
+ * @generated
+ */
+ public Adapter createLocalVariableReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.CompartmentReference <em>Compartment Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.CompartmentReference
+ * @generated
+ */
+ public Adapter createCompartmentReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.ModelParamReference <em>Model Param Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ModelParamReference
+ * @generated
+ */
+ public Adapter createModelParamReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariable <em>Global Variable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.GlobalVariable
+ * @generated
+ */
+ public Adapter createGlobalVariableAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Plus <em>Plus</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Plus
+ * @generated
+ */
+ public Adapter createPlusAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Minus <em>Minus</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Minus
+ * @generated
+ */
+ public Adapter createMinusAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Multi <em>Multi</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Multi
+ * @generated
+ */
+ public Adapter createMultiAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.Div <em>Div</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.Div
+ * @generated
+ */
+ public Adapter createDivAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression <em>Primary Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression
+ * @generated
+ */
+ public Adapter createPrimaryExpressionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.NumberLiteral <em>Number Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.NumberLiteral
+ * @generated
+ */
+ public Adapter createNumberLiteralAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.FunctionCall <em>Function Call</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.FunctionCall
+ * @generated
+ */
+ public Adapter createFunctionCallAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.VariableReference <em>Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.VariableReference
+ * @generated
+ */
+ public Adapter createVariableReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral <em>Boolean Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral
+ * @generated
+ */
+ public Adapter createBooleanLiteralAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.StringLiteral <em>String Literal</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.StringLiteral
+ * @generated
+ */
+ public Adapter createStringLiteralAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference <em>External Function Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference
+ * @generated
+ */
+ public Adapter createExternalFunctionReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference <em>Global Variable Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference
+ * @generated
+ */
+ public Adapter createGlobalVariableReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.DefStatementReference <em>Def Statement Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.DefStatementReference
+ * @generated
+ */
+ public Adapter createDefStatementReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference <em>Absolute Compartment Value Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference
+ * @generated
+ */
+ public Adapter createAbsoluteCompartmentValueReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference <em>Relative Compartment Value Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference
+ * @generated
+ */
+ public Adapter createRelativeCompartmentValueReferenceAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} //CtdlAdapterFactory
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlSwitch.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlSwitch.java
new file mode 100644
index 000000000..ee794786f
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/ctdl/util/CtdlSwitch.java
@@ -0,0 +1,815 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.eclipse.stem.model.ctdl.ctdl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.ctdl.ctdl.CtdlPackage
+ * @generated
+ */
+public class CtdlSwitch<T> extends Switch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CtdlPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CtdlSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = CtdlPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS:
+ {
+ CompartmentTransitionDefinitions compartmentTransitionDefinitions = (CompartmentTransitionDefinitions)theEObject;
+ T result = caseCompartmentTransitionDefinitions(compartmentTransitionDefinitions);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.METAMODEL_RESOURCE:
+ {
+ MetamodelResource metamodelResource = (MetamodelResource)theEObject;
+ T result = caseMetamodelResource(metamodelResource);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.TRANSITION_BLOCK:
+ {
+ TransitionBlock transitionBlock = (TransitionBlock)theEObject;
+ T result = caseTransitionBlock(transitionBlock);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.BLOCK:
+ {
+ Block block = (Block)theEObject;
+ T result = caseBlock(block);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.DEF_STATEMENT:
+ {
+ DefStatement defStatement = (DefStatement)theEObject;
+ T result = caseDefStatement(defStatement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.RETURN_STATEMENT:
+ {
+ ReturnStatement returnStatement = (ReturnStatement)theEObject;
+ T result = caseReturnStatement(returnStatement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.EVALUATION:
+ {
+ Evaluation evaluation = (Evaluation)theEObject;
+ T result = caseEvaluation(evaluation);
+ if (result == null) result = caseReturnStatement(evaluation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.EXPRESSION:
+ {
+ Expression expression = (Expression)theEObject;
+ T result = caseExpression(expression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.FUNCTION_REFERENCE:
+ {
+ FunctionReference functionReference = (FunctionReference)theEObject;
+ T result = caseFunctionReference(functionReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE:
+ {
+ ScopedVariableReference scopedVariableReference = (ScopedVariableReference)theEObject;
+ T result = caseScopedVariableReference(scopedVariableReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.LOCAL_VARIABLE_REFERENCE:
+ {
+ LocalVariableReference localVariableReference = (LocalVariableReference)theEObject;
+ T result = caseLocalVariableReference(localVariableReference);
+ if (result == null) result = caseScopedVariableReference(localVariableReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.COMPARTMENT_REFERENCE:
+ {
+ CompartmentReference compartmentReference = (CompartmentReference)theEObject;
+ T result = caseCompartmentReference(compartmentReference);
+ if (result == null) result = caseScopedVariableReference(compartmentReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.MODEL_PARAM_REFERENCE:
+ {
+ ModelParamReference modelParamReference = (ModelParamReference)theEObject;
+ T result = caseModelParamReference(modelParamReference);
+ if (result == null) result = caseScopedVariableReference(modelParamReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.GLOBAL_VARIABLE:
+ {
+ GlobalVariable globalVariable = (GlobalVariable)theEObject;
+ T result = caseGlobalVariable(globalVariable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.PLUS:
+ {
+ Plus plus = (Plus)theEObject;
+ T result = casePlus(plus);
+ if (result == null) result = caseExpression(plus);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.MINUS:
+ {
+ Minus minus = (Minus)theEObject;
+ T result = caseMinus(minus);
+ if (result == null) result = caseExpression(minus);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.MULTI:
+ {
+ Multi multi = (Multi)theEObject;
+ T result = caseMulti(multi);
+ if (result == null) result = caseExpression(multi);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.DIV:
+ {
+ Div div = (Div)theEObject;
+ T result = caseDiv(div);
+ if (result == null) result = caseExpression(div);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.PRIMARY_EXPRESSION:
+ {
+ PrimaryExpression primaryExpression = (PrimaryExpression)theEObject;
+ T result = casePrimaryExpression(primaryExpression);
+ if (result == null) result = caseExpression(primaryExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.NUMBER_LITERAL:
+ {
+ NumberLiteral numberLiteral = (NumberLiteral)theEObject;
+ T result = caseNumberLiteral(numberLiteral);
+ if (result == null) result = caseExpression(numberLiteral);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.FUNCTION_CALL:
+ {
+ FunctionCall functionCall = (FunctionCall)theEObject;
+ T result = caseFunctionCall(functionCall);
+ if (result == null) result = caseExpression(functionCall);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.VARIABLE_REFERENCE:
+ {
+ VariableReference variableReference = (VariableReference)theEObject;
+ T result = caseVariableReference(variableReference);
+ if (result == null) result = caseExpression(variableReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.BOOLEAN_LITERAL:
+ {
+ BooleanLiteral booleanLiteral = (BooleanLiteral)theEObject;
+ T result = caseBooleanLiteral(booleanLiteral);
+ if (result == null) result = caseExpression(booleanLiteral);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.STRING_LITERAL:
+ {
+ StringLiteral stringLiteral = (StringLiteral)theEObject;
+ T result = caseStringLiteral(stringLiteral);
+ if (result == null) result = caseExpression(stringLiteral);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE:
+ {
+ ExternalFunctionReference externalFunctionReference = (ExternalFunctionReference)theEObject;
+ T result = caseExternalFunctionReference(externalFunctionReference);
+ if (result == null) result = caseFunctionReference(externalFunctionReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.GLOBAL_VARIABLE_REFERENCE:
+ {
+ GlobalVariableReference globalVariableReference = (GlobalVariableReference)theEObject;
+ T result = caseGlobalVariableReference(globalVariableReference);
+ if (result == null) result = caseScopedVariableReference(globalVariableReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.DEF_STATEMENT_REFERENCE:
+ {
+ DefStatementReference defStatementReference = (DefStatementReference)theEObject;
+ T result = caseDefStatementReference(defStatementReference);
+ if (result == null) result = caseLocalVariableReference(defStatementReference);
+ if (result == null) result = caseScopedVariableReference(defStatementReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.ABSOLUTE_COMPARTMENT_VALUE_REFERENCE:
+ {
+ AbsoluteCompartmentValueReference absoluteCompartmentValueReference = (AbsoluteCompartmentValueReference)theEObject;
+ T result = caseAbsoluteCompartmentValueReference(absoluteCompartmentValueReference);
+ if (result == null) result = caseCompartmentReference(absoluteCompartmentValueReference);
+ if (result == null) result = caseScopedVariableReference(absoluteCompartmentValueReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CtdlPackage.RELATIVE_COMPARTMENT_VALUE_REFERENCE:
+ {
+ RelativeCompartmentValueReference relativeCompartmentValueReference = (RelativeCompartmentValueReference)theEObject;
+ T result = caseRelativeCompartmentValueReference(relativeCompartmentValueReference);
+ if (result == null) result = caseCompartmentReference(relativeCompartmentValueReference);
+ if (result == null) result = caseScopedVariableReference(relativeCompartmentValueReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Compartment Transition Definitions</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Compartment Transition Definitions</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompartmentTransitionDefinitions(CompartmentTransitionDefinitions object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Metamodel Resource</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Metamodel Resource</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMetamodelResource(MetamodelResource object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Transition Block</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransitionBlock(TransitionBlock object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Block</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBlock(Block object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Def Statement</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Def Statement</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefStatement(DefStatement object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Return Statement</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Return Statement</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseReturnStatement(ReturnStatement object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Evaluation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Evaluation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEvaluation(Evaluation object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExpression(Expression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Function Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Function Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFunctionReference(FunctionReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Scoped Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Scoped Variable Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseScopedVariableReference(ScopedVariableReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Local Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Local Variable Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLocalVariableReference(LocalVariableReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Compartment Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Compartment Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompartmentReference(CompartmentReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model Param Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model Param Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModelParamReference(ModelParamReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Global Variable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Global Variable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseGlobalVariable(GlobalVariable object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Plus</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Plus</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePlus(Plus object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Minus</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Minus</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMinus(Minus object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Multi</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Multi</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMulti(Multi object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Div</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Div</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDiv(Div object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Primary Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Primary Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePrimaryExpression(PrimaryExpression object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Number Literal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Number Literal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNumberLiteral(NumberLiteral object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Function Call</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Function Call</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFunctionCall(FunctionCall object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Variable Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVariableReference(VariableReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Literal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Literal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBooleanLiteral(BooleanLiteral object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Literal</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Literal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringLiteral(StringLiteral object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>External Function Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>External Function Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalFunctionReference(ExternalFunctionReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Global Variable Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Global Variable Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseGlobalVariableReference(GlobalVariableReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Def Statement Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Def Statement Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefStatementReference(DefStatementReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Absolute Compartment Value Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Absolute Compartment Value Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbsoluteCompartmentValueReference(AbsoluteCompartmentValueReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Relative Compartment Value Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Relative Compartment Value Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRelativeCompartmentValueReference(RelativeCompartmentValueReference object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //CtdlSwitch
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLAntlrTokenFileProvider.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLAntlrTokenFileProvider.java
new file mode 100644
index 000000000..91f936d45
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLAntlrTokenFileProvider.java
@@ -0,0 +1,16 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.parser.antlr;
+
+import java.io.InputStream;
+
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class CTDLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+ public InputStream getAntlrTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.tokens");
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLParser.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLParser.java
new file mode 100644
index 000000000..b3bab7284
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/CTDLParser.java
@@ -0,0 +1,39 @@
+/*
+* generated by Xtext
+*/
+package org.eclipse.stem.model.ctdl.parser.antlr;
+
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+
+import com.google.inject.Inject;
+
+public class CTDLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+
+ @Inject
+ private CTDLGrammarAccess grammarAccess;
+
+ @Override
+ protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+ tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+ }
+
+ @Override
+ protected org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLParser createParser(XtextTokenStream stream) {
+ return new org.eclipse.stem.model.ctdl.parser.antlr.internal.InternalCTDLParser(stream, getGrammarAccess());
+ }
+
+ @Override
+ protected String getDefaultRuleName() {
+ return "CompartmentTransitionDefinitions";
+ }
+
+ public CTDLGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(CTDLGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g
new file mode 100644
index 000000000..1ec2a6556
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g
@@ -0,0 +1,862 @@
+/*
+* generated by Xtext
+*/
+grammar InternalCTDL;
+
+options {
+ superClass=AbstractInternalAntlrParser;
+
+}
+
+@lexer::header {
+package org.eclipse.stem.model.ctdl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.stem.model.ctdl.parser.antlr.internal;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+
+}
+
+@parser::members {
+
+ private CTDLGrammarAccess grammarAccess;
+
+ public InternalCTDLParser(TokenStream input, CTDLGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "CompartmentTransitionDefinitions";
+ }
+
+ @Override
+ protected CTDLGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+}
+
+@rulecatch {
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+}
+
+
+
+
+// Entry rule entryRuleCompartmentTransitionDefinitions
+entryRuleCompartmentTransitionDefinitions returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getCompartmentTransitionDefinitionsRule()); }
+ iv_ruleCompartmentTransitionDefinitions=ruleCompartmentTransitionDefinitions
+ { $current=$iv_ruleCompartmentTransitionDefinitions.current; }
+ EOF
+;
+
+// Rule CompartmentTransitionDefinitions
+ruleCompartmentTransitionDefinitions returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ }
+ }
+ otherlv_0=RULE_ID
+ {
+ newLeafNode(otherlv_0, grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0());
+ }
+
+)
+)?(
+(
+ {
+ newCompositeNode(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0());
+ }
+ lv_expression_1_0=ruleTransitionBlock {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ }
+ set(
+ $current,
+ "expression",
+ lv_expression_1_0,
+ "TransitionBlock");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleTransitionBlock
+entryRuleTransitionBlock returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getTransitionBlockRule()); }
+ iv_ruleTransitionBlock=ruleTransitionBlock
+ { $current=$iv_ruleTransitionBlock.current; }
+ EOF
+;
+
+// Rule TransitionBlock
+ruleTransitionBlock returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+(
+ {
+ newCompositeNode(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0());
+ }
+ lv_block_0_0=ruleBlock {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getTransitionBlockRule());
+ }
+ set(
+ $current,
+ "block",
+ lv_block_0_0,
+ "Block");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)
+;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleBlock
+entryRuleBlock returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getBlockRule()); }
+ iv_ruleBlock=ruleBlock
+ { $current=$iv_ruleBlock.current; }
+ EOF
+;
+
+// Rule Block
+ruleBlock returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getBlockAccess().getBlockAction_0(),
+ $current);
+ }
+)(
+(
+ {
+ newCompositeNode(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0());
+ }
+ lv_statements_1_0=ruleDefStatement {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getBlockRule());
+ }
+ add(
+ $current,
+ "statements",
+ lv_statements_1_0,
+ "DefStatement");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)*(
+(
+ {
+ newCompositeNode(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0());
+ }
+ lv_ret_2_0=ruleReturnStatement {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getBlockRule());
+ }
+ set(
+ $current,
+ "ret",
+ lv_ret_2_0,
+ "ReturnStatement");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDefStatement
+entryRuleDefStatement returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getDefStatementRule()); }
+ iv_ruleDefStatement=ruleDefStatement
+ { $current=$iv_ruleDefStatement.current; }
+ EOF
+;
+
+// Rule DefStatement
+ruleDefStatement returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ lv_varname_0_0=RULE_ID
+ {
+ newLeafNode(lv_varname_0_0, grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getDefStatementRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "varname",
+ lv_varname_0_0,
+ "ID");
+ }
+
+)
+) otherlv_1='='
+ {
+ newLeafNode(otherlv_1, grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0());
+ }
+ lv_expr_2_0=ruleEvaluation {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getDefStatementRule());
+ }
+ set(
+ $current,
+ "expr",
+ lv_expr_2_0,
+ "Evaluation");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleReturnStatement
+entryRuleReturnStatement returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getReturnStatementRule()); }
+ iv_ruleReturnStatement=ruleReturnStatement
+ { $current=$iv_ruleReturnStatement.current; }
+ EOF
+;
+
+// Rule ReturnStatement
+ruleReturnStatement returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+( otherlv_0='delta'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getReturnStatementAccess().getDeltaKeyword_0());
+ }
+
+ {
+ newCompositeNode(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1());
+ }
+ this_Evaluation_1=ruleEvaluation
+ {
+ $current = $this_Evaluation_1.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEvaluation
+entryRuleEvaluation returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getEvaluationRule()); }
+ iv_ruleEvaluation=ruleEvaluation
+ { $current=$iv_ruleEvaluation.current; }
+ EOF
+;
+
+// Rule Evaluation
+ruleEvaluation returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+(
+ {
+ newCompositeNode(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0());
+ }
+ lv_expression_0_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getEvaluationRule());
+ }
+ set(
+ $current,
+ "expression",
+ lv_expression_0_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_1=';'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getEvaluationAccess().getSemicolonKeyword_1());
+ }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExpression
+entryRuleExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getExpressionRule()); }
+ iv_ruleExpression=ruleExpression
+ { $current=$iv_ruleExpression.current; }
+ EOF
+;
+
+// Rule Expression
+ruleExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+
+ {
+ newCompositeNode(grammarAccess.getExpressionAccess().getAdditionParserRuleCall());
+ }
+ this_Addition_0=ruleAddition
+ {
+ $current = $this_Addition_0.current;
+ afterParserOrEnumRuleCall();
+ }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAddition
+entryRuleAddition returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getAdditionRule()); }
+ iv_ruleAddition=ruleAddition
+ { $current=$iv_ruleAddition.current; }
+ EOF
+;
+
+// Rule Addition
+ruleAddition returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0());
+ }
+ this_Multiplication_0=ruleMultiplication
+ {
+ $current = $this_Multiplication_0.current;
+ afterParserOrEnumRuleCall();
+ }
+((((
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0(),
+ $current);
+ }
+) otherlv_2='+'
+ {
+ newLeafNode(otherlv_2, grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1());
+ }
+)
+ |((
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0(),
+ $current);
+ }
+) otherlv_4='-'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+ }
+))(
+(
+ {
+ newCompositeNode(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0());
+ }
+ lv_right_5_0=ruleMultiplication {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getAdditionRule());
+ }
+ set(
+ $current,
+ "right",
+ lv_right_5_0,
+ "Multiplication");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplication
+entryRuleMultiplication returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getMultiplicationRule()); }
+ iv_ruleMultiplication=ruleMultiplication
+ { $current=$iv_ruleMultiplication.current; }
+ EOF
+;
+
+// Rule Multiplication
+ruleMultiplication returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(
+ {
+ newCompositeNode(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0());
+ }
+ this_NegatedExpression_0=ruleNegatedExpression
+ {
+ $current = $this_NegatedExpression_0.current;
+ afterParserOrEnumRuleCall();
+ }
+((((
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0(),
+ $current);
+ }
+) otherlv_2='*'
+ {
+ newLeafNode(otherlv_2, grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+ }
+)
+ |((
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0(),
+ $current);
+ }
+) otherlv_4='/'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+ }
+))(
+(
+ {
+ newCompositeNode(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0());
+ }
+ lv_right_5_0=ruleNegatedExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getMultiplicationRule());
+ }
+ set(
+ $current,
+ "right",
+ lv_right_5_0,
+ "NegatedExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleNegatedExpression
+entryRuleNegatedExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getNegatedExpressionRule()); }
+ iv_ruleNegatedExpression=ruleNegatedExpression
+ { $current=$iv_ruleNegatedExpression.current; }
+ EOF
+;
+
+// Rule NegatedExpression
+ruleNegatedExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0(),
+ $current);
+ }
+)(
+(
+ lv_negate_1_0= '-'
+ {
+ newLeafNode(lv_negate_1_0, grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+ }
+
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getNegatedExpressionRule());
+ }
+ setWithLastConsumed($current, "negate", true, "-");
+ }
+
+)
+)?(
+(
+ {
+ newCompositeNode(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0());
+ }
+ lv_exp_2_0=rulePrimaryExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getNegatedExpressionRule());
+ }
+ set(
+ $current,
+ "exp",
+ lv_exp_2_0,
+ "PrimaryExpression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpression
+entryRulePrimaryExpression returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getPrimaryExpressionRule()); }
+ iv_rulePrimaryExpression=rulePrimaryExpression
+ { $current=$iv_rulePrimaryExpression.current; }
+ EOF
+;
+
+// Rule PrimaryExpression
+rulePrimaryExpression returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0(),
+ $current);
+ }
+)(
+(
+ lv_value_1_0=RULE_NUMBER
+ {
+ newLeafNode(lv_value_1_0, grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_1_0,
+ "NUMBER");
+ }
+
+)
+))
+ |( otherlv_2='('
+ {
+ newLeafNode(otherlv_2, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0());
+ }
+ lv_exp_3_0=ruleExpression {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ $current,
+ "exp",
+ lv_exp_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+) otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2());
+ }
+)
+ |((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0(),
+ $current);
+ }
+)(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+ }
+ otherlv_6=RULE_ID
+ {
+ newLeafNode(otherlv_6, grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0());
+ }
+
+)
+)( otherlv_7='('
+ {
+ newLeafNode(otherlv_7, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0());
+ }
+ lv_args_8_0=ruleFunctionArgument {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ add(
+ $current,
+ "args",
+ lv_args_8_0,
+ "FunctionArgument");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+)?( otherlv_9=','
+ {
+ newLeafNode(otherlv_9, grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0());
+ }
+(
+(
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0());
+ }
+ lv_args_10_0=ruleFunctionArgument {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ add(
+ $current,
+ "args",
+ lv_args_10_0,
+ "FunctionArgument");
+ afterParserOrEnumRuleCall();
+ }
+
+)
+))* otherlv_11=')'
+ {
+ newLeafNode(otherlv_11, grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3());
+ }
+))
+ |((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0(),
+ $current);
+ }
+)(
+(
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+ }
+ otherlv_13=RULE_ID
+ {
+ newLeafNode(otherlv_13, grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0());
+ }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionArgument
+entryRuleFunctionArgument returns [EObject current=null]
+ :
+ { newCompositeNode(grammarAccess.getFunctionArgumentRule()); }
+ iv_ruleFunctionArgument=ruleFunctionArgument
+ { $current=$iv_ruleFunctionArgument.current; }
+ EOF
+;
+
+// Rule FunctionArgument
+ruleFunctionArgument returns [EObject current=null]
+ @init { enterRule();
+ }
+ @after { leaveRule(); }:
+(((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0(),
+ $current);
+ }
+)(
+(
+ lv_value_1_0=RULE_BOOLEAN
+ {
+ newLeafNode(lv_value_1_0, grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getFunctionArgumentRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_1_0,
+ "BOOLEAN");
+ }
+
+)
+))
+ |((
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0(),
+ $current);
+ }
+)(
+(
+ lv_value_3_0=RULE_STRING
+ {
+ newLeafNode(lv_value_3_0, grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getFunctionArgumentRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "value",
+ lv_value_3_0,
+ "STRING");
+ }
+
+)
+))
+ |
+ {
+ newCompositeNode(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2());
+ }
+ this_Expression_4=ruleExpression
+ {
+ $current = $this_Expression_4.current;
+ afterParserOrEnumRuleCall();
+ }
+)
+;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RULE_BOOLEAN : ('true'|'false');
+
+RULE_NUMBER : (('0'..'9')+ ('.' ('0'..'9')*)?|'.' ('0'..'9')+) (('e'|'E') ('+'|'-')? ('0'..'9')+)?;
+
+RULE_INT : 'this one has been deactivated';
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.tokens b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.tokens
new file mode 100644
index 000000000..090f73453
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.tokens
@@ -0,0 +1,29 @@
+RULE_BOOLEAN=6
+RULE_ID=4
+T__22=22
+RULE_ANY_OTHER=12
+T__21=21
+T__20=20
+RULE_SL_COMMENT=10
+RULE_ML_COMMENT=9
+T__19=19
+RULE_STRING=7
+T__16=16
+T__15=15
+T__18=18
+T__17=17
+RULE_NUMBER=5
+T__14=14
+T__13=13
+RULE_INT=8
+RULE_WS=11
+';'=15
+'delta'=14
+'='=13
+'/'=19
+'('=20
+'*'=18
+'-'=17
+'+'=16
+','=22
+')'=21
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLLexer.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLLexer.java
new file mode 100644
index 000000000..76a57b79a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLLexer.java
@@ -0,0 +1,1368 @@
+package org.eclipse.stem.model.ctdl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+@SuppressWarnings("all")
+public class InternalCTDLLexer extends Lexer {
+ public static final int RULE_BOOLEAN=6;
+ public static final int RULE_ID=4;
+ public static final int T__22=22;
+ public static final int RULE_ANY_OTHER=12;
+ public static final int T__21=21;
+ public static final int T__20=20;
+ public static final int EOF=-1;
+ public static final int RULE_SL_COMMENT=10;
+ public static final int RULE_ML_COMMENT=9;
+ public static final int T__19=19;
+ public static final int RULE_STRING=7;
+ public static final int T__16=16;
+ public static final int T__15=15;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_NUMBER=5;
+ public static final int T__14=14;
+ public static final int T__13=13;
+ public static final int RULE_INT=8;
+ public static final int RULE_WS=11;
+
+ // delegates
+ // delegators
+
+ public InternalCTDLLexer() {;}
+ public InternalCTDLLexer(CharStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalCTDLLexer(CharStream input, RecognizerSharedState state) {
+ super(input,state);
+
+ }
+ public String getGrammarFileName() { return "../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g"; }
+
+ // $ANTLR start "T__13"
+ public final void mT__13() throws RecognitionException {
+ try {
+ int _type = T__13;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:11:7: ( '=' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:11:9: '='
+ {
+ match('=');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__13"
+
+ // $ANTLR start "T__14"
+ public final void mT__14() throws RecognitionException {
+ try {
+ int _type = T__14;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:12:7: ( 'delta' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:12:9: 'delta'
+ {
+ match("delta");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__14"
+
+ // $ANTLR start "T__15"
+ public final void mT__15() throws RecognitionException {
+ try {
+ int _type = T__15;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:13:7: ( ';' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:13:9: ';'
+ {
+ match(';');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__15"
+
+ // $ANTLR start "T__16"
+ public final void mT__16() throws RecognitionException {
+ try {
+ int _type = T__16;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:14:7: ( '+' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:14:9: '+'
+ {
+ match('+');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__16"
+
+ // $ANTLR start "T__17"
+ public final void mT__17() throws RecognitionException {
+ try {
+ int _type = T__17;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:15:7: ( '-' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:15:9: '-'
+ {
+ match('-');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__17"
+
+ // $ANTLR start "T__18"
+ public final void mT__18() throws RecognitionException {
+ try {
+ int _type = T__18;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:16:7: ( '*' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:16:9: '*'
+ {
+ match('*');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__18"
+
+ // $ANTLR start "T__19"
+ public final void mT__19() throws RecognitionException {
+ try {
+ int _type = T__19;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:17:7: ( '/' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:17:9: '/'
+ {
+ match('/');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__19"
+
+ // $ANTLR start "T__20"
+ public final void mT__20() throws RecognitionException {
+ try {
+ int _type = T__20;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:18:7: ( '(' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:18:9: '('
+ {
+ match('(');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__20"
+
+ // $ANTLR start "T__21"
+ public final void mT__21() throws RecognitionException {
+ try {
+ int _type = T__21;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:19:7: ( ')' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:19:9: ')'
+ {
+ match(')');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__21"
+
+ // $ANTLR start "T__22"
+ public final void mT__22() throws RecognitionException {
+ try {
+ int _type = T__22;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:20:7: ( ',' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:20:9: ','
+ {
+ match(',');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__22"
+
+ // $ANTLR start "RULE_BOOLEAN"
+ public final void mRULE_BOOLEAN() throws RecognitionException {
+ try {
+ int _type = RULE_BOOLEAN;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:844:14: ( ( 'true' | 'false' ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:844:16: ( 'true' | 'false' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:844:16: ( 'true' | 'false' )
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='t') ) {
+ alt1=1;
+ }
+ else if ( (LA1_0=='f') ) {
+ alt1=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 0, input);
+
+ throw nvae;
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:844:17: 'true'
+ {
+ match("true");
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:844:24: 'false'
+ {
+ match("false");
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_BOOLEAN"
+
+ // $ANTLR start "RULE_NUMBER"
+ public final void mRULE_NUMBER() throws RecognitionException {
+ try {
+ int _type = RULE_NUMBER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:13: ( ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ ) ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )? )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:15: ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ ) ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )?
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:15: ( ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )? | '.' ( '0' .. '9' )+ )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+ alt6=1;
+ }
+ else if ( (LA6_0=='.') ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:16: ( '0' .. '9' )+ ( '.' ( '0' .. '9' )* )?
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:16: ( '0' .. '9' )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:17: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt2 >= 1 ) break loop2;
+ EarlyExitException eee =
+ new EarlyExitException(2, input);
+ throw eee;
+ }
+ cnt2++;
+ } while (true);
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:28: ( '.' ( '0' .. '9' )* )?
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='.') ) {
+ alt4=1;
+ }
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:29: '.' ( '0' .. '9' )*
+ {
+ match('.');
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:33: ( '0' .. '9' )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:34: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:47: '.' ( '0' .. '9' )+
+ {
+ match('.');
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:51: ( '0' .. '9' )+
+ int cnt5=0;
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( ((LA5_0>='0' && LA5_0<='9')) ) {
+ alt5=1;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:52: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt5 >= 1 ) break loop5;
+ EarlyExitException eee =
+ new EarlyExitException(5, input);
+ throw eee;
+ }
+ cnt5++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:64: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='E'||LA9_0=='e') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:65: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+ {
+ if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:75: ( '+' | '-' )?
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='+'||LA7_0=='-') ) {
+ alt7=1;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:
+ {
+ if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:86: ( '0' .. '9' )+
+ int cnt8=0;
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:846:87: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt8 >= 1 ) break loop8;
+ EarlyExitException eee =
+ new EarlyExitException(8, input);
+ throw eee;
+ }
+ cnt8++;
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_NUMBER"
+
+ // $ANTLR start "RULE_INT"
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:848:10: ( 'this one has been deactivated' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:848:12: 'this one has been deactivated'
+ {
+ match("this one has been deactivated");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_INT"
+
+ // $ANTLR start "RULE_ID"
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:850:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:850:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:850:11: ( '^' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='^') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:850:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:850:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>='0' && LA11_0<='9')||(LA11_0>='A' && LA11_0<='Z')||LA11_0=='_'||(LA11_0>='a' && LA11_0<='z')) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ID"
+
+ // $ANTLR start "RULE_STRING"
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0=='\"') ) {
+ alt14=1;
+ }
+ else if ( (LA14_0=='\'') ) {
+ alt14=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 14, 0, input);
+
+ throw nvae;
+ }
+ switch (alt14) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+ {
+ match('\"');
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop12:
+ do {
+ int alt12=3;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='\\') ) {
+ alt12=1;
+ }
+ else if ( ((LA12_0>='\u0000' && LA12_0<='!')||(LA12_0>='#' && LA12_0<='[')||(LA12_0>=']' && LA12_0<='\uFFFF')) ) {
+ alt12=2;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:66: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+ {
+ match('\'');
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop13:
+ do {
+ int alt13=3;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0=='\\') ) {
+ alt13=1;
+ }
+ else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+ alt13=2;
+ }
+
+
+ switch (alt13) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:852:137: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop13;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_STRING"
+
+ // $ANTLR start "RULE_ML_COMMENT"
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:854:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:854:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:854:24: ( options {greedy=false; } : . )*
+ loop15:
+ do {
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0=='*') ) {
+ int LA15_1 = input.LA(2);
+
+ if ( (LA15_1=='/') ) {
+ alt15=2;
+ }
+ else if ( ((LA15_1>='\u0000' && LA15_1<='.')||(LA15_1>='0' && LA15_1<='\uFFFF')) ) {
+ alt15=1;
+ }
+
+
+ }
+ else if ( ((LA15_0>='\u0000' && LA15_0<=')')||(LA15_0>='+' && LA15_0<='\uFFFF')) ) {
+ alt15=1;
+ }
+
+
+ switch (alt15) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:854:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop15;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ML_COMMENT"
+
+ // $ANTLR start "RULE_SL_COMMENT"
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop16:
+ do {
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( ((LA16_0>='\u0000' && LA16_0<='\t')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\uFFFF')) ) {
+ alt16=1;
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:40: ( ( '\\r' )? '\\n' )?
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0=='\n'||LA18_0=='\r') ) {
+ alt18=1;
+ }
+ switch (alt18) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:41: ( '\\r' )? '\\n'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:41: ( '\\r' )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0=='\r') ) {
+ alt17=1;
+ }
+ switch (alt17) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:856:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_SL_COMMENT"
+
+ // $ANTLR start "RULE_WS"
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:858:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:858:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:858:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt19=0;
+ loop19:
+ do {
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( ((LA19_0>='\t' && LA19_0<='\n')||LA19_0=='\r'||LA19_0==' ') ) {
+ alt19=1;
+ }
+
+
+ switch (alt19) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ if ( cnt19 >= 1 ) break loop19;
+ EarlyExitException eee =
+ new EarlyExitException(19, input);
+ throw eee;
+ }
+ cnt19++;
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_WS"
+
+ // $ANTLR start "RULE_ANY_OTHER"
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:860:16: ( . )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:860:18: .
+ {
+ matchAny();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ANY_OTHER"
+
+ public void mTokens() throws RecognitionException {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_BOOLEAN | RULE_NUMBER | RULE_INT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt20=19;
+ alt20 = dfa20.predict(input);
+ switch (alt20) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:10: T__13
+ {
+ mT__13();
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:16: T__14
+ {
+ mT__14();
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:22: T__15
+ {
+ mT__15();
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:28: T__16
+ {
+ mT__16();
+
+ }
+ break;
+ case 5 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:34: T__17
+ {
+ mT__17();
+
+ }
+ break;
+ case 6 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:40: T__18
+ {
+ mT__18();
+
+ }
+ break;
+ case 7 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:46: T__19
+ {
+ mT__19();
+
+ }
+ break;
+ case 8 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:52: T__20
+ {
+ mT__20();
+
+ }
+ break;
+ case 9 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:58: T__21
+ {
+ mT__21();
+
+ }
+ break;
+ case 10 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:64: T__22
+ {
+ mT__22();
+
+ }
+ break;
+ case 11 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:70: RULE_BOOLEAN
+ {
+ mRULE_BOOLEAN();
+
+ }
+ break;
+ case 12 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:83: RULE_NUMBER
+ {
+ mRULE_NUMBER();
+
+ }
+ break;
+ case 13 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:95: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 14 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:104: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 15 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:112: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 16 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:124: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 17 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:140: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 18 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:156: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 19 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:1:164: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+ protected DFA20 dfa20 = new DFA20(this);
+ static final String DFA20_eotS =
+ "\2\uffff\1\27\4\uffff\1\36\3\uffff\2\27\1\uffff\2\24\1\uffff\2\24"+
+ "\3\uffff\1\27\13\uffff\3\27\3\uffff\5\27\1\61\2\27\1\64\2\uffff"+
+ "\1\61\1\uffff";
+ static final String DFA20_eofS =
+ "\65\uffff";
+ static final String DFA20_minS =
+ "\1\0\1\uffff\1\145\4\uffff\1\52\3\uffff\1\150\1\141\1\uffff\1\60"+
+ "\1\101\1\uffff\2\0\3\uffff\1\154\13\uffff\1\165\1\151\1\154\3\uffff"+
+ "\1\164\1\145\2\163\1\141\1\60\1\40\1\145\1\60\2\uffff\1\60\1\uffff";
+ static final String DFA20_maxS =
+ "\1\uffff\1\uffff\1\145\4\uffff\1\57\3\uffff\1\162\1\141\1\uffff"+
+ "\1\71\1\172\1\uffff\2\uffff\3\uffff\1\154\13\uffff\1\165\1\151\1"+
+ "\154\3\uffff\1\164\1\145\2\163\1\141\1\172\1\40\1\145\1\172\2\uffff"+
+ "\1\172\1\uffff";
+ static final String DFA20_acceptS =
+ "\1\uffff\1\1\1\uffff\1\3\1\4\1\5\1\6\1\uffff\1\10\1\11\1\12\2\uffff"+
+ "\1\14\2\uffff\1\16\2\uffff\1\22\1\23\1\1\1\uffff\1\16\1\3\1\4\1"+
+ "\5\1\6\1\20\1\21\1\7\1\10\1\11\1\12\3\uffff\1\14\1\17\1\22\11\uffff"+
+ "\1\13\1\15\1\uffff\1\2";
+ static final String DFA20_specialS =
+ "\1\2\20\uffff\1\1\1\0\42\uffff}>";
+ static final String[] DFA20_transitionS = {
+ "\11\24\2\23\2\24\1\23\22\24\1\23\1\24\1\21\4\24\1\22\1\10\1"+
+ "\11\1\6\1\4\1\12\1\5\1\16\1\7\12\15\1\24\1\3\1\24\1\1\3\24\32"+
+ "\20\3\24\1\17\1\20\1\24\3\20\1\2\1\20\1\14\15\20\1\13\6\20\uff85"+
+ "\24",
+ "",
+ "\1\26",
+ "",
+ "",
+ "",
+ "",
+ "\1\34\4\uffff\1\35",
+ "",
+ "",
+ "",
+ "\1\43\11\uffff\1\42",
+ "\1\44",
+ "",
+ "\12\45",
+ "\32\27\4\uffff\1\27\1\uffff\32\27",
+ "",
+ "\0\46",
+ "\0\46",
+ "",
+ "",
+ "",
+ "\1\50",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\51",
+ "\1\52",
+ "\1\53",
+ "",
+ "",
+ "",
+ "\1\54",
+ "\1\55",
+ "\1\56",
+ "\1\57",
+ "\1\60",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ "\1\62",
+ "\1\63",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ "",
+ "",
+ "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27",
+ ""
+ };
+
+ static final short[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
+ static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
+ static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
+ static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
+ static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
+ static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
+ static final short[][] DFA20_transition;
+
+ static {
+ int numStates = DFA20_transitionS.length;
+ DFA20_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
+ }
+ }
+
+ class DFA20 extends DFA {
+
+ public DFA20(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 20;
+ this.eot = DFA20_eot;
+ this.eof = DFA20_eof;
+ this.min = DFA20_min;
+ this.max = DFA20_max;
+ this.accept = DFA20_accept;
+ this.special = DFA20_special;
+ this.transition = DFA20_transition;
+ }
+ public String getDescription() {
+ return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_BOOLEAN | RULE_NUMBER | RULE_INT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+ }
+ public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+ IntStream input = _input;
+ int _s = s;
+ switch ( s ) {
+ case 0 :
+ int LA20_18 = input.LA(1);
+
+ s = -1;
+ if ( ((LA20_18>='\u0000' && LA20_18<='\uFFFF')) ) {s = 38;}
+
+ else s = 20;
+
+ if ( s>=0 ) return s;
+ break;
+ case 1 :
+ int LA20_17 = input.LA(1);
+
+ s = -1;
+ if ( ((LA20_17>='\u0000' && LA20_17<='\uFFFF')) ) {s = 38;}
+
+ else s = 20;
+
+ if ( s>=0 ) return s;
+ break;
+ case 2 :
+ int LA20_0 = input.LA(1);
+
+ s = -1;
+ if ( (LA20_0=='=') ) {s = 1;}
+
+ else if ( (LA20_0=='d') ) {s = 2;}
+
+ else if ( (LA20_0==';') ) {s = 3;}
+
+ else if ( (LA20_0=='+') ) {s = 4;}
+
+ else if ( (LA20_0=='-') ) {s = 5;}
+
+ else if ( (LA20_0=='*') ) {s = 6;}
+
+ else if ( (LA20_0=='/') ) {s = 7;}
+
+ else if ( (LA20_0=='(') ) {s = 8;}
+
+ else if ( (LA20_0==')') ) {s = 9;}
+
+ else if ( (LA20_0==',') ) {s = 10;}
+
+ else if ( (LA20_0=='t') ) {s = 11;}
+
+ else if ( (LA20_0=='f') ) {s = 12;}
+
+ else if ( ((LA20_0>='0' && LA20_0<='9')) ) {s = 13;}
+
+ else if ( (LA20_0=='.') ) {s = 14;}
+
+ else if ( (LA20_0=='^') ) {s = 15;}
+
+ else if ( ((LA20_0>='A' && LA20_0<='Z')||LA20_0=='_'||(LA20_0>='a' && LA20_0<='c')||LA20_0=='e'||(LA20_0>='g' && LA20_0<='s')||(LA20_0>='u' && LA20_0<='z')) ) {s = 16;}
+
+ else if ( (LA20_0=='\"') ) {s = 17;}
+
+ else if ( (LA20_0=='\'') ) {s = 18;}
+
+ else if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {s = 19;}
+
+ else if ( ((LA20_0>='\u0000' && LA20_0<='\b')||(LA20_0>='\u000B' && LA20_0<='\f')||(LA20_0>='\u000E' && LA20_0<='\u001F')||LA20_0=='!'||(LA20_0>='#' && LA20_0<='&')||LA20_0==':'||LA20_0=='<'||(LA20_0>='>' && LA20_0<='@')||(LA20_0>='[' && LA20_0<=']')||LA20_0=='`'||(LA20_0>='{' && LA20_0<='\uFFFF')) ) {s = 20;}
+
+ if ( s>=0 ) return s;
+ break;
+ }
+ NoViableAltException nvae =
+ new NoViableAltException(getDescription(), 20, _s, input);
+ error(nvae);
+ throw nvae;
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLParser.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLParser.java
new file mode 100644
index 000000000..df05db087
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDLParser.java
@@ -0,0 +1,2188 @@
+package org.eclipse.stem.model.ctdl.parser.antlr.internal;
+
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.TokenStream;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+
+@SuppressWarnings("all")
+public class InternalCTDLParser extends AbstractInternalAntlrParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_NUMBER", "RULE_BOOLEAN", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'delta'", "';'", "'+'", "'-'", "'*'", "'/'", "'('", "')'", "','"
+ };
+ public static final int RULE_BOOLEAN=6;
+ public static final int RULE_ID=4;
+ public static final int T__22=22;
+ public static final int RULE_ANY_OTHER=12;
+ public static final int T__21=21;
+ public static final int T__20=20;
+ public static final int RULE_SL_COMMENT=10;
+ public static final int EOF=-1;
+ public static final int RULE_ML_COMMENT=9;
+ public static final int T__19=19;
+ public static final int RULE_STRING=7;
+ public static final int T__16=16;
+ public static final int T__15=15;
+ public static final int T__18=18;
+ public static final int T__17=17;
+ public static final int RULE_NUMBER=5;
+ public static final int T__14=14;
+ public static final int T__13=13;
+ public static final int RULE_INT=8;
+ public static final int RULE_WS=11;
+
+ // delegates
+ // delegators
+
+
+ public InternalCTDLParser(TokenStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalCTDLParser(TokenStream input, RecognizerSharedState state) {
+ super(input, state);
+
+ }
+
+
+ public String[] getTokenNames() { return InternalCTDLParser.tokenNames; }
+ public String getGrammarFileName() { return "../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g"; }
+
+
+
+ private CTDLGrammarAccess grammarAccess;
+
+ public InternalCTDLParser(TokenStream input, CTDLGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "CompartmentTransitionDefinitions";
+ }
+
+ @Override
+ protected CTDLGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+
+
+
+ // $ANTLR start "entryRuleCompartmentTransitionDefinitions"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:67:1: entryRuleCompartmentTransitionDefinitions returns [EObject current=null] : iv_ruleCompartmentTransitionDefinitions= ruleCompartmentTransitionDefinitions EOF ;
+ public final EObject entryRuleCompartmentTransitionDefinitions() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleCompartmentTransitionDefinitions = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:68:2: (iv_ruleCompartmentTransitionDefinitions= ruleCompartmentTransitionDefinitions EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:69:2: iv_ruleCompartmentTransitionDefinitions= ruleCompartmentTransitionDefinitions EOF
+ {
+ newCompositeNode(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ pushFollow(FOLLOW_ruleCompartmentTransitionDefinitions_in_entryRuleCompartmentTransitionDefinitions75);
+ iv_ruleCompartmentTransitionDefinitions=ruleCompartmentTransitionDefinitions();
+
+ state._fsp--;
+
+ current =iv_ruleCompartmentTransitionDefinitions;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleCompartmentTransitionDefinitions85);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleCompartmentTransitionDefinitions"
+
+
+ // $ANTLR start "ruleCompartmentTransitionDefinitions"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:76:1: ruleCompartmentTransitionDefinitions returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) )? ( (lv_expression_1_0= ruleTransitionBlock ) ) ) ;
+ public final EObject ruleCompartmentTransitionDefinitions() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject lv_expression_1_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:79:28: ( ( ( (otherlv_0= RULE_ID ) )? ( (lv_expression_1_0= ruleTransitionBlock ) ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:80:1: ( ( (otherlv_0= RULE_ID ) )? ( (lv_expression_1_0= ruleTransitionBlock ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:80:1: ( ( (otherlv_0= RULE_ID ) )? ( (lv_expression_1_0= ruleTransitionBlock ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:80:2: ( (otherlv_0= RULE_ID ) )? ( (lv_expression_1_0= ruleTransitionBlock ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:80:2: ( (otherlv_0= RULE_ID ) )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==RULE_ID) ) {
+ int LA1_1 = input.LA(2);
+
+ if ( (LA1_1==RULE_ID||LA1_1==14) ) {
+ alt1=1;
+ }
+ }
+ switch (alt1) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:81:1: (otherlv_0= RULE_ID )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:81:1: (otherlv_0= RULE_ID )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:82:3: otherlv_0= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ }
+
+ otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCompartmentTransitionDefinitions130);
+
+ newLeafNode(otherlv_0, grammarAccess.getCompartmentTransitionDefinitionsAccess().getMetamodelMetamodelResourceCrossReference_0_0());
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:93:3: ( (lv_expression_1_0= ruleTransitionBlock ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:94:1: (lv_expression_1_0= ruleTransitionBlock )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:94:1: (lv_expression_1_0= ruleTransitionBlock )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:95:3: lv_expression_1_0= ruleTransitionBlock
+ {
+
+ newCompositeNode(grammarAccess.getCompartmentTransitionDefinitionsAccess().getExpressionTransitionBlockParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleTransitionBlock_in_ruleCompartmentTransitionDefinitions152);
+ lv_expression_1_0=ruleTransitionBlock();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getCompartmentTransitionDefinitionsRule());
+ }
+ set(
+ current,
+ "expression",
+ lv_expression_1_0,
+ "TransitionBlock");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleCompartmentTransitionDefinitions"
+
+
+ // $ANTLR start "entryRuleTransitionBlock"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:121:1: entryRuleTransitionBlock returns [EObject current=null] : iv_ruleTransitionBlock= ruleTransitionBlock EOF ;
+ public final EObject entryRuleTransitionBlock() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTransitionBlock = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:122:2: (iv_ruleTransitionBlock= ruleTransitionBlock EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:123:2: iv_ruleTransitionBlock= ruleTransitionBlock EOF
+ {
+ newCompositeNode(grammarAccess.getTransitionBlockRule());
+ pushFollow(FOLLOW_ruleTransitionBlock_in_entryRuleTransitionBlock190);
+ iv_ruleTransitionBlock=ruleTransitionBlock();
+
+ state._fsp--;
+
+ current =iv_ruleTransitionBlock;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionBlock200);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleTransitionBlock"
+
+
+ // $ANTLR start "ruleTransitionBlock"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:130:1: ruleTransitionBlock returns [EObject current=null] : ( (lv_block_0_0= ruleBlock ) ) ;
+ public final EObject ruleTransitionBlock() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_block_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:133:28: ( ( (lv_block_0_0= ruleBlock ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:134:1: ( (lv_block_0_0= ruleBlock ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:134:1: ( (lv_block_0_0= ruleBlock ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:135:1: (lv_block_0_0= ruleBlock )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:135:1: (lv_block_0_0= ruleBlock )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:136:3: lv_block_0_0= ruleBlock
+ {
+
+ newCompositeNode(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleBlock_in_ruleTransitionBlock245);
+ lv_block_0_0=ruleBlock();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getTransitionBlockRule());
+ }
+ set(
+ current,
+ "block",
+ lv_block_0_0,
+ "Block");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleTransitionBlock"
+
+
+ // $ANTLR start "entryRuleBlock"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:164:1: entryRuleBlock returns [EObject current=null] : iv_ruleBlock= ruleBlock EOF ;
+ public final EObject entryRuleBlock() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleBlock = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:165:2: (iv_ruleBlock= ruleBlock EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:166:2: iv_ruleBlock= ruleBlock EOF
+ {
+ newCompositeNode(grammarAccess.getBlockRule());
+ pushFollow(FOLLOW_ruleBlock_in_entryRuleBlock284);
+ iv_ruleBlock=ruleBlock();
+
+ state._fsp--;
+
+ current =iv_ruleBlock;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleBlock294);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleBlock"
+
+
+ // $ANTLR start "ruleBlock"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:173:1: ruleBlock returns [EObject current=null] : ( () ( (lv_statements_1_0= ruleDefStatement ) )* ( (lv_ret_2_0= ruleReturnStatement ) ) ) ;
+ public final EObject ruleBlock() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_statements_1_0 = null;
+
+ EObject lv_ret_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:176:28: ( ( () ( (lv_statements_1_0= ruleDefStatement ) )* ( (lv_ret_2_0= ruleReturnStatement ) ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:177:1: ( () ( (lv_statements_1_0= ruleDefStatement ) )* ( (lv_ret_2_0= ruleReturnStatement ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:177:1: ( () ( (lv_statements_1_0= ruleDefStatement ) )* ( (lv_ret_2_0= ruleReturnStatement ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:177:2: () ( (lv_statements_1_0= ruleDefStatement ) )* ( (lv_ret_2_0= ruleReturnStatement ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:177:2: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:178:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getBlockAccess().getBlockAction_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:183:2: ( (lv_statements_1_0= ruleDefStatement ) )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==RULE_ID) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:184:1: (lv_statements_1_0= ruleDefStatement )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:184:1: (lv_statements_1_0= ruleDefStatement )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:185:3: lv_statements_1_0= ruleDefStatement
+ {
+
+ newCompositeNode(grammarAccess.getBlockAccess().getStatementsDefStatementParserRuleCall_1_0());
+
+ pushFollow(FOLLOW_ruleDefStatement_in_ruleBlock349);
+ lv_statements_1_0=ruleDefStatement();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getBlockRule());
+ }
+ add(
+ current,
+ "statements",
+ lv_statements_1_0,
+ "DefStatement");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:201:3: ( (lv_ret_2_0= ruleReturnStatement ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:202:1: (lv_ret_2_0= ruleReturnStatement )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:202:1: (lv_ret_2_0= ruleReturnStatement )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:203:3: lv_ret_2_0= ruleReturnStatement
+ {
+
+ newCompositeNode(grammarAccess.getBlockAccess().getRetReturnStatementParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_ruleReturnStatement_in_ruleBlock371);
+ lv_ret_2_0=ruleReturnStatement();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getBlockRule());
+ }
+ set(
+ current,
+ "ret",
+ lv_ret_2_0,
+ "ReturnStatement");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleBlock"
+
+
+ // $ANTLR start "entryRuleDefStatement"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:227:1: entryRuleDefStatement returns [EObject current=null] : iv_ruleDefStatement= ruleDefStatement EOF ;
+ public final EObject entryRuleDefStatement() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleDefStatement = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:228:2: (iv_ruleDefStatement= ruleDefStatement EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:229:2: iv_ruleDefStatement= ruleDefStatement EOF
+ {
+ newCompositeNode(grammarAccess.getDefStatementRule());
+ pushFollow(FOLLOW_ruleDefStatement_in_entryRuleDefStatement407);
+ iv_ruleDefStatement=ruleDefStatement();
+
+ state._fsp--;
+
+ current =iv_ruleDefStatement;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleDefStatement417);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleDefStatement"
+
+
+ // $ANTLR start "ruleDefStatement"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:236:1: ruleDefStatement returns [EObject current=null] : ( ( (lv_varname_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleEvaluation ) ) ) ;
+ public final EObject ruleDefStatement() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_varname_0_0=null;
+ Token otherlv_1=null;
+ EObject lv_expr_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:239:28: ( ( ( (lv_varname_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleEvaluation ) ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:240:1: ( ( (lv_varname_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleEvaluation ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:240:1: ( ( (lv_varname_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleEvaluation ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:240:2: ( (lv_varname_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleEvaluation ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:240:2: ( (lv_varname_0_0= RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:241:1: (lv_varname_0_0= RULE_ID )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:241:1: (lv_varname_0_0= RULE_ID )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:242:3: lv_varname_0_0= RULE_ID
+ {
+ lv_varname_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDefStatement459);
+
+ newLeafNode(lv_varname_0_0, grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getDefStatementRule());
+ }
+ setWithLastConsumed(
+ current,
+ "varname",
+ lv_varname_0_0,
+ "ID");
+
+
+ }
+
+
+ }
+
+ otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleDefStatement476);
+
+ newLeafNode(otherlv_1, grammarAccess.getDefStatementAccess().getEqualsSignKeyword_1());
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:262:1: ( (lv_expr_2_0= ruleEvaluation ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:263:1: (lv_expr_2_0= ruleEvaluation )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:263:1: (lv_expr_2_0= ruleEvaluation )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:264:3: lv_expr_2_0= ruleEvaluation
+ {
+
+ newCompositeNode(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_ruleEvaluation_in_ruleDefStatement497);
+ lv_expr_2_0=ruleEvaluation();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getDefStatementRule());
+ }
+ set(
+ current,
+ "expr",
+ lv_expr_2_0,
+ "Evaluation");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleDefStatement"
+
+
+ // $ANTLR start "entryRuleReturnStatement"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:288:1: entryRuleReturnStatement returns [EObject current=null] : iv_ruleReturnStatement= ruleReturnStatement EOF ;
+ public final EObject entryRuleReturnStatement() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleReturnStatement = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:289:2: (iv_ruleReturnStatement= ruleReturnStatement EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:290:2: iv_ruleReturnStatement= ruleReturnStatement EOF
+ {
+ newCompositeNode(grammarAccess.getReturnStatementRule());
+ pushFollow(FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement533);
+ iv_ruleReturnStatement=ruleReturnStatement();
+
+ state._fsp--;
+
+ current =iv_ruleReturnStatement;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleReturnStatement543);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleReturnStatement"
+
+
+ // $ANTLR start "ruleReturnStatement"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:297:1: ruleReturnStatement returns [EObject current=null] : (otherlv_0= 'delta' this_Evaluation_1= ruleEvaluation ) ;
+ public final EObject ruleReturnStatement() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject this_Evaluation_1 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:300:28: ( (otherlv_0= 'delta' this_Evaluation_1= ruleEvaluation ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:301:1: (otherlv_0= 'delta' this_Evaluation_1= ruleEvaluation )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:301:1: (otherlv_0= 'delta' this_Evaluation_1= ruleEvaluation )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:301:3: otherlv_0= 'delta' this_Evaluation_1= ruleEvaluation
+ {
+ otherlv_0=(Token)match(input,14,FOLLOW_14_in_ruleReturnStatement580);
+
+ newLeafNode(otherlv_0, grammarAccess.getReturnStatementAccess().getDeltaKeyword_0());
+
+
+ newCompositeNode(grammarAccess.getReturnStatementAccess().getEvaluationParserRuleCall_1());
+
+ pushFollow(FOLLOW_ruleEvaluation_in_ruleReturnStatement602);
+ this_Evaluation_1=ruleEvaluation();
+
+ state._fsp--;
+
+
+ current = this_Evaluation_1;
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleReturnStatement"
+
+
+ // $ANTLR start "entryRuleEvaluation"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:322:1: entryRuleEvaluation returns [EObject current=null] : iv_ruleEvaluation= ruleEvaluation EOF ;
+ public final EObject entryRuleEvaluation() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEvaluation = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:323:2: (iv_ruleEvaluation= ruleEvaluation EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:324:2: iv_ruleEvaluation= ruleEvaluation EOF
+ {
+ newCompositeNode(grammarAccess.getEvaluationRule());
+ pushFollow(FOLLOW_ruleEvaluation_in_entryRuleEvaluation637);
+ iv_ruleEvaluation=ruleEvaluation();
+
+ state._fsp--;
+
+ current =iv_ruleEvaluation;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEvaluation647);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleEvaluation"
+
+
+ // $ANTLR start "ruleEvaluation"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:331:1: ruleEvaluation returns [EObject current=null] : ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' ) ;
+ public final EObject ruleEvaluation() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_expression_0_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:334:28: ( ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:335:1: ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:335:1: ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:335:2: ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:335:2: ( (lv_expression_0_0= ruleExpression ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:336:1: (lv_expression_0_0= ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:336:1: (lv_expression_0_0= ruleExpression )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:337:3: lv_expression_0_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleEvaluation693);
+ lv_expression_0_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getEvaluationRule());
+ }
+ set(
+ current,
+ "expression",
+ lv_expression_0_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_1=(Token)match(input,15,FOLLOW_15_in_ruleEvaluation705);
+
+ newLeafNode(otherlv_1, grammarAccess.getEvaluationAccess().getSemicolonKeyword_1());
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleEvaluation"
+
+
+ // $ANTLR start "entryRuleExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:365:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
+ public final EObject entryRuleExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleExpression = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:366:2: (iv_ruleExpression= ruleExpression EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:367:2: iv_ruleExpression= ruleExpression EOF
+ {
+ newCompositeNode(grammarAccess.getExpressionRule());
+ pushFollow(FOLLOW_ruleExpression_in_entryRuleExpression741);
+ iv_ruleExpression=ruleExpression();
+
+ state._fsp--;
+
+ current =iv_ruleExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleExpression751);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleExpression"
+
+
+ // $ANTLR start "ruleExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:374:1: ruleExpression returns [EObject current=null] : this_Addition_0= ruleAddition ;
+ public final EObject ruleExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_Addition_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:377:28: (this_Addition_0= ruleAddition )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:379:5: this_Addition_0= ruleAddition
+ {
+
+ newCompositeNode(grammarAccess.getExpressionAccess().getAdditionParserRuleCall());
+
+ pushFollow(FOLLOW_ruleAddition_in_ruleExpression797);
+ this_Addition_0=ruleAddition();
+
+ state._fsp--;
+
+
+ current = this_Addition_0;
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleExpression"
+
+
+ // $ANTLR start "entryRuleAddition"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:395:1: entryRuleAddition returns [EObject current=null] : iv_ruleAddition= ruleAddition EOF ;
+ public final EObject entryRuleAddition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleAddition = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:396:2: (iv_ruleAddition= ruleAddition EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:397:2: iv_ruleAddition= ruleAddition EOF
+ {
+ newCompositeNode(grammarAccess.getAdditionRule());
+ pushFollow(FOLLOW_ruleAddition_in_entryRuleAddition831);
+ iv_ruleAddition=ruleAddition();
+
+ state._fsp--;
+
+ current =iv_ruleAddition;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleAddition841);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleAddition"
+
+
+ // $ANTLR start "ruleAddition"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:404:1: ruleAddition returns [EObject current=null] : (this_Multiplication_0= ruleMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )* ) ;
+ public final EObject ruleAddition() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ EObject this_Multiplication_0 = null;
+
+ EObject lv_right_5_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:407:28: ( (this_Multiplication_0= ruleMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )* ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:408:1: (this_Multiplication_0= ruleMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )* )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:408:1: (this_Multiplication_0= ruleMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )* )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:409:5: this_Multiplication_0= ruleMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )*
+ {
+
+ newCompositeNode(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleMultiplication_in_ruleAddition888);
+ this_Multiplication_0=ruleMultiplication();
+
+ state._fsp--;
+
+
+ current = this_Multiplication_0;
+ afterParserOrEnumRuleCall();
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:1: ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) ) )*
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>=16 && LA4_0<=17)) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:2: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMultiplication ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:2: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) )
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==16) ) {
+ alt3=1;
+ }
+ else if ( (LA3_0==17) ) {
+ alt3=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 3, 0, input);
+
+ throw nvae;
+ }
+ switch (alt3) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:3: ( () otherlv_2= '+' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:3: ( () otherlv_2= '+' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:4: () otherlv_2= '+'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:417:4: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:418:5:
+ {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0(),
+ current);
+
+
+ }
+
+ otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleAddition911);
+
+ newLeafNode(otherlv_2, grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1());
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:428:6: ( () otherlv_4= '-' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:428:6: ( () otherlv_4= '-' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:428:7: () otherlv_4= '-'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:428:7: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:429:5:
+ {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0(),
+ current);
+
+
+ }
+
+ otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleAddition940);
+
+ newLeafNode(otherlv_4, grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:438:3: ( (lv_right_5_0= ruleMultiplication ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:439:1: (lv_right_5_0= ruleMultiplication )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:439:1: (lv_right_5_0= ruleMultiplication )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:440:3: lv_right_5_0= ruleMultiplication
+ {
+
+ newCompositeNode(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleMultiplication_in_ruleAddition963);
+ lv_right_5_0=ruleMultiplication();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getAdditionRule());
+ }
+ set(
+ current,
+ "right",
+ lv_right_5_0,
+ "Multiplication");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleAddition"
+
+
+ // $ANTLR start "entryRuleMultiplication"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:464:1: entryRuleMultiplication returns [EObject current=null] : iv_ruleMultiplication= ruleMultiplication EOF ;
+ public final EObject entryRuleMultiplication() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMultiplication = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:465:2: (iv_ruleMultiplication= ruleMultiplication EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:466:2: iv_ruleMultiplication= ruleMultiplication EOF
+ {
+ newCompositeNode(grammarAccess.getMultiplicationRule());
+ pushFollow(FOLLOW_ruleMultiplication_in_entryRuleMultiplication1001);
+ iv_ruleMultiplication=ruleMultiplication();
+
+ state._fsp--;
+
+ current =iv_ruleMultiplication;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMultiplication1011);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleMultiplication"
+
+
+ // $ANTLR start "ruleMultiplication"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:473:1: ruleMultiplication returns [EObject current=null] : (this_NegatedExpression_0= ruleNegatedExpression ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )* ) ;
+ public final EObject ruleMultiplication() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ EObject this_NegatedExpression_0 = null;
+
+ EObject lv_right_5_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:476:28: ( (this_NegatedExpression_0= ruleNegatedExpression ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )* ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:477:1: (this_NegatedExpression_0= ruleNegatedExpression ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )* )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:477:1: (this_NegatedExpression_0= ruleNegatedExpression ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )* )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:478:5: this_NegatedExpression_0= ruleNegatedExpression ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )*
+ {
+
+ newCompositeNode(grammarAccess.getMultiplicationAccess().getNegatedExpressionParserRuleCall_0());
+
+ pushFollow(FOLLOW_ruleNegatedExpression_in_ruleMultiplication1058);
+ this_NegatedExpression_0=ruleNegatedExpression();
+
+ state._fsp--;
+
+
+ current = this_NegatedExpression_0;
+ afterParserOrEnumRuleCall();
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:1: ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) ) )*
+ loop6:
+ do {
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>=18 && LA6_0<=19)) ) {
+ alt6=1;
+ }
+
+
+ switch (alt6) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:2: ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleNegatedExpression ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:2: ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) )
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==18) ) {
+ alt5=1;
+ }
+ else if ( (LA5_0==19) ) {
+ alt5=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 5, 0, input);
+
+ throw nvae;
+ }
+ switch (alt5) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:3: ( () otherlv_2= '*' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:3: ( () otherlv_2= '*' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:4: () otherlv_2= '*'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:486:4: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:487:5:
+ {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0(),
+ current);
+
+
+ }
+
+ otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleMultiplication1081);
+
+ newLeafNode(otherlv_2, grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:497:6: ( () otherlv_4= '/' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:497:6: ( () otherlv_4= '/' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:497:7: () otherlv_4= '/'
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:497:7: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:498:5:
+ {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0(),
+ current);
+
+
+ }
+
+ otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleMultiplication1110);
+
+ newLeafNode(otherlv_4, grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:507:3: ( (lv_right_5_0= ruleNegatedExpression ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:508:1: (lv_right_5_0= ruleNegatedExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:508:1: (lv_right_5_0= ruleNegatedExpression )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:509:3: lv_right_5_0= ruleNegatedExpression
+ {
+
+ newCompositeNode(grammarAccess.getMultiplicationAccess().getRightNegatedExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleNegatedExpression_in_ruleMultiplication1133);
+ lv_right_5_0=ruleNegatedExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getMultiplicationRule());
+ }
+ set(
+ current,
+ "right",
+ lv_right_5_0,
+ "NegatedExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop6;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleMultiplication"
+
+
+ // $ANTLR start "entryRuleNegatedExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:533:1: entryRuleNegatedExpression returns [EObject current=null] : iv_ruleNegatedExpression= ruleNegatedExpression EOF ;
+ public final EObject entryRuleNegatedExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleNegatedExpression = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:534:2: (iv_ruleNegatedExpression= ruleNegatedExpression EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:535:2: iv_ruleNegatedExpression= ruleNegatedExpression EOF
+ {
+ newCompositeNode(grammarAccess.getNegatedExpressionRule());
+ pushFollow(FOLLOW_ruleNegatedExpression_in_entryRuleNegatedExpression1171);
+ iv_ruleNegatedExpression=ruleNegatedExpression();
+
+ state._fsp--;
+
+ current =iv_ruleNegatedExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleNegatedExpression1181);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleNegatedExpression"
+
+
+ // $ANTLR start "ruleNegatedExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:542:1: ruleNegatedExpression returns [EObject current=null] : ( () ( (lv_negate_1_0= '-' ) )? ( (lv_exp_2_0= rulePrimaryExpression ) ) ) ;
+ public final EObject ruleNegatedExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_negate_1_0=null;
+ EObject lv_exp_2_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:545:28: ( ( () ( (lv_negate_1_0= '-' ) )? ( (lv_exp_2_0= rulePrimaryExpression ) ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:546:1: ( () ( (lv_negate_1_0= '-' ) )? ( (lv_exp_2_0= rulePrimaryExpression ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:546:1: ( () ( (lv_negate_1_0= '-' ) )? ( (lv_exp_2_0= rulePrimaryExpression ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:546:2: () ( (lv_negate_1_0= '-' ) )? ( (lv_exp_2_0= rulePrimaryExpression ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:546:2: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:547:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getNegatedExpressionAccess().getPrimaryExpressionAction_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:552:2: ( (lv_negate_1_0= '-' ) )?
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==17) ) {
+ alt7=1;
+ }
+ switch (alt7) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:553:1: (lv_negate_1_0= '-' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:553:1: (lv_negate_1_0= '-' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:554:3: lv_negate_1_0= '-'
+ {
+ lv_negate_1_0=(Token)match(input,17,FOLLOW_17_in_ruleNegatedExpression1233);
+
+ newLeafNode(lv_negate_1_0, grammarAccess.getNegatedExpressionAccess().getNegateHyphenMinusKeyword_1_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getNegatedExpressionRule());
+ }
+ setWithLastConsumed(current, "negate", true, "-");
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:567:3: ( (lv_exp_2_0= rulePrimaryExpression ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:568:1: (lv_exp_2_0= rulePrimaryExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:568:1: (lv_exp_2_0= rulePrimaryExpression )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:569:3: lv_exp_2_0= rulePrimaryExpression
+ {
+
+ newCompositeNode(grammarAccess.getNegatedExpressionAccess().getExpPrimaryExpressionParserRuleCall_2_0());
+
+ pushFollow(FOLLOW_rulePrimaryExpression_in_ruleNegatedExpression1268);
+ lv_exp_2_0=rulePrimaryExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getNegatedExpressionRule());
+ }
+ set(
+ current,
+ "exp",
+ lv_exp_2_0,
+ "PrimaryExpression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleNegatedExpression"
+
+
+ // $ANTLR start "entryRulePrimaryExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:593:1: entryRulePrimaryExpression returns [EObject current=null] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
+ public final EObject entryRulePrimaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_rulePrimaryExpression = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:594:2: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:595:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
+ {
+ newCompositeNode(grammarAccess.getPrimaryExpressionRule());
+ pushFollow(FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression1304);
+ iv_rulePrimaryExpression=rulePrimaryExpression();
+
+ state._fsp--;
+
+ current =iv_rulePrimaryExpression;
+ match(input,EOF,FOLLOW_EOF_in_entryRulePrimaryExpression1314);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRulePrimaryExpression"
+
+
+ // $ANTLR start "rulePrimaryExpression"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:602:1: rulePrimaryExpression returns [EObject current=null] : ( ( () ( (lv_value_1_0= RULE_NUMBER ) ) ) | (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' ) | ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) ) | ( () ( (otherlv_13= RULE_ID ) ) ) ) ;
+ public final EObject rulePrimaryExpression() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_1_0=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ Token otherlv_6=null;
+ Token otherlv_7=null;
+ Token otherlv_9=null;
+ Token otherlv_11=null;
+ Token otherlv_13=null;
+ EObject lv_exp_3_0 = null;
+
+ EObject lv_args_8_0 = null;
+
+ EObject lv_args_10_0 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:605:28: ( ( ( () ( (lv_value_1_0= RULE_NUMBER ) ) ) | (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' ) | ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) ) | ( () ( (otherlv_13= RULE_ID ) ) ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:1: ( ( () ( (lv_value_1_0= RULE_NUMBER ) ) ) | (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' ) | ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) ) | ( () ( (otherlv_13= RULE_ID ) ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:1: ( ( () ( (lv_value_1_0= RULE_NUMBER ) ) ) | (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' ) | ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) ) | ( () ( (otherlv_13= RULE_ID ) ) ) )
+ int alt10=4;
+ switch ( input.LA(1) ) {
+ case RULE_NUMBER:
+ {
+ alt10=1;
+ }
+ break;
+ case 20:
+ {
+ alt10=2;
+ }
+ break;
+ case RULE_ID:
+ {
+ int LA10_3 = input.LA(2);
+
+ if ( (LA10_3==20) ) {
+ alt10=3;
+ }
+ else if ( (LA10_3==EOF||(LA10_3>=15 && LA10_3<=19)||(LA10_3>=21 && LA10_3<=22)) ) {
+ alt10=4;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 10, 3, input);
+
+ throw nvae;
+ }
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 10, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt10) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:2: ( () ( (lv_value_1_0= RULE_NUMBER ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:2: ( () ( (lv_value_1_0= RULE_NUMBER ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:3: () ( (lv_value_1_0= RULE_NUMBER ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:606:3: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:607:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_0_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:612:2: ( (lv_value_1_0= RULE_NUMBER ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:613:1: (lv_value_1_0= RULE_NUMBER )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:613:1: (lv_value_1_0= RULE_NUMBER )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:614:3: lv_value_1_0= RULE_NUMBER
+ {
+ lv_value_1_0=(Token)match(input,RULE_NUMBER,FOLLOW_RULE_NUMBER_in_rulePrimaryExpression1366);
+
+ newLeafNode(lv_value_1_0, grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_0_1_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_1_0,
+ "NUMBER");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:631:6: (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:631:6: (otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:631:8: otherlv_2= '(' ( (lv_exp_3_0= ruleExpression ) ) otherlv_4= ')'
+ {
+ otherlv_2=(Token)match(input,20,FOLLOW_20_in_rulePrimaryExpression1391);
+
+ newLeafNode(otherlv_2, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_0());
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:635:1: ( (lv_exp_3_0= ruleExpression ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:636:1: (lv_exp_3_0= ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:636:1: (lv_exp_3_0= ruleExpression )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:637:3: lv_exp_3_0= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0());
+
+ pushFollow(FOLLOW_ruleExpression_in_rulePrimaryExpression1412);
+ lv_exp_3_0=ruleExpression();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ set(
+ current,
+ "exp",
+ lv_exp_3_0,
+ "Expression");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+ otherlv_4=(Token)match(input,21,FOLLOW_21_in_rulePrimaryExpression1424);
+
+ newLeafNode(otherlv_4, grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2());
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:658:6: ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:658:6: ( () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:658:7: () ( (otherlv_6= RULE_ID ) ) (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:658:7: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:659:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getFunctionCallAction_2_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:664:2: ( (otherlv_6= RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:665:1: (otherlv_6= RULE_ID )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:665:1: (otherlv_6= RULE_ID )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:666:3: otherlv_6= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+
+ otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePrimaryExpression1461);
+
+ newLeafNode(otherlv_6, grammarAccess.getPrimaryExpressionAccess().getRefFunctionReferenceCrossReference_2_1_0());
+
+
+ }
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:677:2: (otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')' )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:677:4: otherlv_7= '(' ( (lv_args_8_0= ruleFunctionArgument ) )? (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )* otherlv_11= ')'
+ {
+ otherlv_7=(Token)match(input,20,FOLLOW_20_in_rulePrimaryExpression1474);
+
+ newLeafNode(otherlv_7, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_2_2_0());
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:681:1: ( (lv_args_8_0= ruleFunctionArgument ) )?
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>=RULE_ID && LA8_0<=RULE_STRING)||LA8_0==17||LA8_0==20) ) {
+ alt8=1;
+ }
+ switch (alt8) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:682:1: (lv_args_8_0= ruleFunctionArgument )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:682:1: (lv_args_8_0= ruleFunctionArgument )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:683:3: lv_args_8_0= ruleFunctionArgument
+ {
+
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_1_0());
+
+ pushFollow(FOLLOW_ruleFunctionArgument_in_rulePrimaryExpression1495);
+ lv_args_8_0=ruleFunctionArgument();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ add(
+ current,
+ "args",
+ lv_args_8_0,
+ "FunctionArgument");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:699:3: (otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) ) )*
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==22) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:699:5: otherlv_9= ',' ( (lv_args_10_0= ruleFunctionArgument ) )
+ {
+ otherlv_9=(Token)match(input,22,FOLLOW_22_in_rulePrimaryExpression1509);
+
+ newLeafNode(otherlv_9, grammarAccess.getPrimaryExpressionAccess().getCommaKeyword_2_2_2_0());
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:703:1: ( (lv_args_10_0= ruleFunctionArgument ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:704:1: (lv_args_10_0= ruleFunctionArgument )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:704:1: (lv_args_10_0= ruleFunctionArgument )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:705:3: lv_args_10_0= ruleFunctionArgument
+ {
+
+ newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getArgsFunctionArgumentParserRuleCall_2_2_2_1_0());
+
+ pushFollow(FOLLOW_ruleFunctionArgument_in_rulePrimaryExpression1530);
+ lv_args_10_0=ruleFunctionArgument();
+
+ state._fsp--;
+
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
+ }
+ add(
+ current,
+ "args",
+ lv_args_10_0,
+ "FunctionArgument");
+ afterParserOrEnumRuleCall();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+ otherlv_11=(Token)match(input,21,FOLLOW_21_in_rulePrimaryExpression1544);
+
+ newLeafNode(otherlv_11, grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_2_2_3());
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 4 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:726:6: ( () ( (otherlv_13= RULE_ID ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:726:6: ( () ( (otherlv_13= RULE_ID ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:726:7: () ( (otherlv_13= RULE_ID ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:726:7: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:727:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getPrimaryExpressionAccess().getVariableReferenceAction_3_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:732:2: ( (otherlv_13= RULE_ID ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:733:1: (otherlv_13= RULE_ID )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:733:1: (otherlv_13= RULE_ID )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:734:3: otherlv_13= RULE_ID
+ {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getPrimaryExpressionRule());
+ }
+
+ otherlv_13=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePrimaryExpression1582);
+
+ newLeafNode(otherlv_13, grammarAccess.getPrimaryExpressionAccess().getRefScopedVariableReferenceCrossReference_3_1_0());
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "rulePrimaryExpression"
+
+
+ // $ANTLR start "entryRuleFunctionArgument"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:753:1: entryRuleFunctionArgument returns [EObject current=null] : iv_ruleFunctionArgument= ruleFunctionArgument EOF ;
+ public final EObject entryRuleFunctionArgument() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleFunctionArgument = null;
+
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:754:2: (iv_ruleFunctionArgument= ruleFunctionArgument EOF )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:755:2: iv_ruleFunctionArgument= ruleFunctionArgument EOF
+ {
+ newCompositeNode(grammarAccess.getFunctionArgumentRule());
+ pushFollow(FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument1619);
+ iv_ruleFunctionArgument=ruleFunctionArgument();
+
+ state._fsp--;
+
+ current =iv_ruleFunctionArgument;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionArgument1629);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleFunctionArgument"
+
+
+ // $ANTLR start "ruleFunctionArgument"
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:762:1: ruleFunctionArgument returns [EObject current=null] : ( ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) ) | ( () ( (lv_value_3_0= RULE_STRING ) ) ) | this_Expression_4= ruleExpression ) ;
+ public final EObject ruleFunctionArgument() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_value_1_0=null;
+ Token lv_value_3_0=null;
+ EObject this_Expression_4 = null;
+
+
+ enterRule();
+
+ try {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:765:28: ( ( ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) ) | ( () ( (lv_value_3_0= RULE_STRING ) ) ) | this_Expression_4= ruleExpression ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:1: ( ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) ) | ( () ( (lv_value_3_0= RULE_STRING ) ) ) | this_Expression_4= ruleExpression )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:1: ( ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) ) | ( () ( (lv_value_3_0= RULE_STRING ) ) ) | this_Expression_4= ruleExpression )
+ int alt11=3;
+ switch ( input.LA(1) ) {
+ case RULE_BOOLEAN:
+ {
+ alt11=1;
+ }
+ break;
+ case RULE_STRING:
+ {
+ alt11=2;
+ }
+ break;
+ case RULE_ID:
+ case RULE_NUMBER:
+ case 17:
+ case 20:
+ {
+ alt11=3;
+ }
+ break;
+ default:
+ NoViableAltException nvae =
+ new NoViableAltException("", 11, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt11) {
+ case 1 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:2: ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:2: ( () ( (lv_value_1_0= RULE_BOOLEAN ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:3: () ( (lv_value_1_0= RULE_BOOLEAN ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:766:3: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:767:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getFunctionArgumentAccess().getBooleanLiteralAction_0_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:772:2: ( (lv_value_1_0= RULE_BOOLEAN ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:773:1: (lv_value_1_0= RULE_BOOLEAN )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:773:1: (lv_value_1_0= RULE_BOOLEAN )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:774:3: lv_value_1_0= RULE_BOOLEAN
+ {
+ lv_value_1_0=(Token)match(input,RULE_BOOLEAN,FOLLOW_RULE_BOOLEAN_in_ruleFunctionArgument1681);
+
+ newLeafNode(lv_value_1_0, grammarAccess.getFunctionArgumentAccess().getValueBOOLEANTerminalRuleCall_0_1_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getFunctionArgumentRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_1_0,
+ "BOOLEAN");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:791:6: ( () ( (lv_value_3_0= RULE_STRING ) ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:791:6: ( () ( (lv_value_3_0= RULE_STRING ) ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:791:7: () ( (lv_value_3_0= RULE_STRING ) )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:791:7: ()
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:792:5:
+ {
+
+ current = forceCreateModelElement(
+ grammarAccess.getFunctionArgumentAccess().getStringLiteralAction_1_0(),
+ current);
+
+
+ }
+
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:797:2: ( (lv_value_3_0= RULE_STRING ) )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:798:1: (lv_value_3_0= RULE_STRING )
+ {
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:798:1: (lv_value_3_0= RULE_STRING )
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:799:3: lv_value_3_0= RULE_STRING
+ {
+ lv_value_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFunctionArgument1720);
+
+ newLeafNode(lv_value_3_0, grammarAccess.getFunctionArgumentAccess().getValueSTRINGTerminalRuleCall_1_1_0());
+
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getFunctionArgumentRule());
+ }
+ setWithLastConsumed(
+ current,
+ "value",
+ lv_value_3_0,
+ "STRING");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // ../org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/parser/antlr/internal/InternalCTDL.g:817:5: this_Expression_4= ruleExpression
+ {
+
+ newCompositeNode(grammarAccess.getFunctionArgumentAccess().getExpressionParserRuleCall_2());
+
+ pushFollow(FOLLOW_ruleExpression_in_ruleFunctionArgument1754);
+ this_Expression_4=ruleExpression();
+
+ state._fsp--;
+
+
+ current = this_Expression_4;
+ afterParserOrEnumRuleCall();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ leaveRule();
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleFunctionArgument"
+
+ // Delegated rules
+
+
+
+
+ public static final BitSet FOLLOW_ruleCompartmentTransitionDefinitions_in_entryRuleCompartmentTransitionDefinitions75 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleCompartmentTransitionDefinitions85 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleCompartmentTransitionDefinitions130 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_ruleTransitionBlock_in_ruleCompartmentTransitionDefinitions152 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleTransitionBlock_in_entryRuleTransitionBlock190 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleTransitionBlock200 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBlock_in_ruleTransitionBlock245 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleBlock_in_entryRuleBlock284 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleBlock294 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefStatement_in_ruleBlock349 = new BitSet(new long[]{0x0000000000004010L});
+ public static final BitSet FOLLOW_ruleReturnStatement_in_ruleBlock371 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleDefStatement_in_entryRuleDefStatement407 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleDefStatement417 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_ruleDefStatement459 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_13_in_ruleDefStatement476 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_ruleDefStatement497 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement533 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleReturnStatement543 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_14_in_ruleReturnStatement580 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_ruleReturnStatement602 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleEvaluation_in_entryRuleEvaluation637 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEvaluation647 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleEvaluation693 = new BitSet(new long[]{0x0000000000008000L});
+ public static final BitSet FOLLOW_15_in_ruleEvaluation705 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression741 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleExpression751 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAddition_in_ruleExpression797 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleAddition_in_entryRuleAddition831 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleAddition841 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_ruleAddition888 = new BitSet(new long[]{0x0000000000030002L});
+ public static final BitSet FOLLOW_16_in_ruleAddition911 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_17_in_ruleAddition940 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_ruleAddition963 = new BitSet(new long[]{0x0000000000030002L});
+ public static final BitSet FOLLOW_ruleMultiplication_in_entryRuleMultiplication1001 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleMultiplication1011 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_ruleMultiplication1058 = new BitSet(new long[]{0x00000000000C0002L});
+ public static final BitSet FOLLOW_18_in_ruleMultiplication1081 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_19_in_ruleMultiplication1110 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_ruleMultiplication1133 = new BitSet(new long[]{0x00000000000C0002L});
+ public static final BitSet FOLLOW_ruleNegatedExpression_in_entryRuleNegatedExpression1171 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleNegatedExpression1181 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_17_in_ruleNegatedExpression1233 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_ruleNegatedExpression1268 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression1304 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpression1314 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_NUMBER_in_rulePrimaryExpression1366 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_20_in_rulePrimaryExpression1391 = new BitSet(new long[]{0x0000000000120030L});
+ public static final BitSet FOLLOW_ruleExpression_in_rulePrimaryExpression1412 = new BitSet(new long[]{0x0000000000200000L});
+ public static final BitSet FOLLOW_21_in_rulePrimaryExpression1424 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rulePrimaryExpression1461 = new BitSet(new long[]{0x0000000000100000L});
+ public static final BitSet FOLLOW_20_in_rulePrimaryExpression1474 = new BitSet(new long[]{0x00000000007200F0L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_rulePrimaryExpression1495 = new BitSet(new long[]{0x0000000000600000L});
+ public static final BitSet FOLLOW_22_in_rulePrimaryExpression1509 = new BitSet(new long[]{0x00000000001200F0L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_rulePrimaryExpression1530 = new BitSet(new long[]{0x0000000000600000L});
+ public static final BitSet FOLLOW_21_in_rulePrimaryExpression1544 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_ID_in_rulePrimaryExpression1582 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleFunctionArgument_in_entryRuleFunctionArgument1619 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleFunctionArgument1629 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_BOOLEAN_in_ruleFunctionArgument1681 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RULE_STRING_in_ruleFunctionArgument1720 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleExpression_in_ruleFunctionArgument1754 = new BitSet(new long[]{0x0000000000000002L});
+
+} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSemanticSequencer.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSemanticSequencer.java
new file mode 100644
index 000000000..4f58a448b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSemanticSequencer.java
@@ -0,0 +1,628 @@
+package org.eclipse.stem.model.ctdl.serializer;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariable;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.MetamodelPackage;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class CTDLSemanticSequencer extends AbstractDelegatingSemanticSequencer {
+
+ @Inject
+ private CTDLGrammarAccess grammarAccess;
+
+ public void createSequence(EObject context, EObject semanticObject) {
+ if(semanticObject.eClass().getEPackage() == CtdlPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+ case CtdlPackage.ABSOLUTE_COMPARTMENT_VALUE_REFERENCE:
+ if(context == grammarAccess.getCompartmentReferenceRule()) {
+ sequence_CompartmentReference(context, (AbsoluteCompartmentValueReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.BLOCK:
+ if(context == grammarAccess.getBlockRule()) {
+ sequence_Block(context, (Block) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.BOOLEAN_LITERAL:
+ if(context == grammarAccess.getFunctionArgumentRule()) {
+ sequence_FunctionArgument(context, (BooleanLiteral) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.COMPARTMENT_REFERENCE:
+ if(context == grammarAccess.getCompartmentReferenceRule()) {
+ sequence_CompartmentReference(context, (CompartmentReference) semanticObject);
+ return;
+ }
+ else if(context == grammarAccess.getScopedVariableReferenceRule()) {
+ sequence_ScopedVariableReference(context, (CompartmentReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.COMPARTMENT_TRANSITION_DEFINITIONS:
+ if(context == grammarAccess.getCompartmentTransitionDefinitionsRule()) {
+ sequence_CompartmentTransitionDefinitions(context, (CompartmentTransitionDefinitions) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.DEF_STATEMENT:
+ if(context == grammarAccess.getDefStatementRule()) {
+ sequence_DefStatement(context, (DefStatement) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.DEF_STATEMENT_REFERENCE:
+ if(context == grammarAccess.getLocalVariableReferenceRule()) {
+ sequence_LocalVariableReference(context, (DefStatementReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.DIV:
+ if(context == grammarAccess.getAdditionRule() ||
+ context == grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0() ||
+ context == grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0() ||
+ context == grammarAccess.getExpressionRule() ||
+ context == grammarAccess.getFunctionArgumentRule() ||
+ context == grammarAccess.getMultiplicationRule() ||
+ context == grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0() ||
+ context == grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()) {
+ sequence_Multiplication(context, (Div) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.EVALUATION:
+ if(context == grammarAccess.getEvaluationRule() ||
+ context == grammarAccess.getReturnStatementRule()) {
+ sequence_Evaluation(context, (Evaluation) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.EXPRESSION:
+ if(context == grammarAccess.getPrimaryExpressionRule()) {
+ sequence_PrimaryExpression(context, (Expression) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.EXTERNAL_FUNCTION_REFERENCE:
+ if(context == grammarAccess.getFunctionReferenceRule()) {
+ sequence_FunctionReference(context, (ExternalFunctionReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.FUNCTION_CALL:
+ if(context == grammarAccess.getPrimaryExpressionRule()) {
+ sequence_PrimaryExpression(context, (FunctionCall) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.FUNCTION_REFERENCE:
+ if(context == grammarAccess.getFunctionReferenceRule()) {
+ sequence_FunctionReference(context, (FunctionReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.GLOBAL_VARIABLE:
+ if(context == grammarAccess.getGlobalVariableRule()) {
+ sequence_GlobalVariable(context, (GlobalVariable) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.GLOBAL_VARIABLE_REFERENCE:
+ if(context == grammarAccess.getScopedVariableReferenceRule()) {
+ sequence_ScopedVariableReference(context, (GlobalVariableReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.LOCAL_VARIABLE_REFERENCE:
+ if(context == grammarAccess.getScopedVariableReferenceRule()) {
+ sequence_ScopedVariableReference(context, (LocalVariableReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.METAMODEL_RESOURCE:
+ if(context == grammarAccess.getMetamodelResourceRule()) {
+ sequence_MetamodelResource(context, (MetamodelResource) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.MINUS:
+ if(context == grammarAccess.getAdditionRule() ||
+ context == grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0() ||
+ context == grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0() ||
+ context == grammarAccess.getExpressionRule() ||
+ context == grammarAccess.getFunctionArgumentRule()) {
+ sequence_Addition(context, (Minus) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.MODEL_PARAM_REFERENCE:
+ if(context == grammarAccess.getModelParamReferenceRule()) {
+ sequence_ModelParamReference(context, (ModelParamReference) semanticObject);
+ return;
+ }
+ else if(context == grammarAccess.getScopedVariableReferenceRule()) {
+ sequence_ScopedVariableReference(context, (ModelParamReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.MULTI:
+ if(context == grammarAccess.getAdditionRule() ||
+ context == grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0() ||
+ context == grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0() ||
+ context == grammarAccess.getExpressionRule() ||
+ context == grammarAccess.getFunctionArgumentRule() ||
+ context == grammarAccess.getMultiplicationRule() ||
+ context == grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0() ||
+ context == grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()) {
+ sequence_Multiplication(context, (Multi) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.NUMBER_LITERAL:
+ if(context == grammarAccess.getPrimaryExpressionRule()) {
+ sequence_PrimaryExpression(context, (NumberLiteral) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.PLUS:
+ if(context == grammarAccess.getAdditionRule() ||
+ context == grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0() ||
+ context == grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0() ||
+ context == grammarAccess.getExpressionRule() ||
+ context == grammarAccess.getFunctionArgumentRule()) {
+ sequence_Addition(context, (Plus) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.PRIMARY_EXPRESSION:
+ if(context == grammarAccess.getAdditionRule() ||
+ context == grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0() ||
+ context == grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0() ||
+ context == grammarAccess.getExpressionRule() ||
+ context == grammarAccess.getFunctionArgumentRule() ||
+ context == grammarAccess.getMultiplicationRule() ||
+ context == grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0() ||
+ context == grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0() ||
+ context == grammarAccess.getNegatedExpressionRule()) {
+ sequence_NegatedExpression(context, (PrimaryExpression) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.RELATIVE_COMPARTMENT_VALUE_REFERENCE:
+ if(context == grammarAccess.getCompartmentReferenceRule()) {
+ sequence_CompartmentReference(context, (RelativeCompartmentValueReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.SCOPED_VARIABLE_REFERENCE:
+ if(context == grammarAccess.getScopedVariableReferenceRule()) {
+ sequence_ScopedVariableReference(context, (ScopedVariableReference) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.STRING_LITERAL:
+ if(context == grammarAccess.getFunctionArgumentRule()) {
+ sequence_FunctionArgument(context, (StringLiteral) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.TRANSITION_BLOCK:
+ if(context == grammarAccess.getTransitionBlockRule()) {
+ sequence_TransitionBlock(context, (TransitionBlock) semanticObject);
+ return;
+ }
+ else break;
+ case CtdlPackage.VARIABLE_REFERENCE:
+ if(context == grammarAccess.getPrimaryExpressionRule()) {
+ sequence_PrimaryExpression(context, (VariableReference) semanticObject);
+ return;
+ }
+ else break;
+ }
+ else if(semanticObject.eClass().getEPackage() == MetamodelPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+ case MetamodelPackage.COMPARTMENT:
+ if(context == grammarAccess.getCompartmentRule()) {
+ sequence_Compartment(context, (Compartment) semanticObject);
+ return;
+ }
+ else break;
+ case MetamodelPackage.TRANSITION:
+ if(context == grammarAccess.getTransitionRule()) {
+ sequence_Transition(context, (Transition) semanticObject);
+ return;
+ }
+ else break;
+ }
+ if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+ }
+
+ /**
+ * Constraint:
+ * (left=Addition_Minus_1_0_1_0 right=Multiplication)
+ */
+ protected void sequence_Addition(EObject context, Minus semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (left=Addition_Plus_1_0_0_0 right=Multiplication)
+ */
+ protected void sequence_Addition(EObject context, Plus semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (statements+=DefStatement* ret=ReturnStatement)
+ */
+ protected void sequence_Block(EObject context, Block semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {AbsoluteCompartmentValueReference}
+ */
+ protected void sequence_CompartmentReference(EObject context, AbsoluteCompartmentValueReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * obj=[Compartment|ID]
+ */
+ protected void sequence_CompartmentReference(EObject context, CompartmentReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {RelativeCompartmentValueReference}
+ */
+ protected void sequence_CompartmentReference(EObject context, RelativeCompartmentValueReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (metamodel=[MetamodelResource|ID]? expression=TransitionBlock)
+ */
+ protected void sequence_CompartmentTransitionDefinitions(EObject context, CompartmentTransitionDefinitions semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * name=ID
+ */
+ protected void sequence_Compartment(EObject context, Compartment semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (varname=ID expr=Evaluation)
+ */
+ protected void sequence_DefStatement(EObject context, DefStatement semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.DEF_STATEMENT__VARNAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.DEF_STATEMENT__VARNAME));
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.DEF_STATEMENT__EXPR) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.DEF_STATEMENT__EXPR));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getDefStatementAccess().getVarnameIDTerminalRuleCall_0_0(), semanticObject.getVarname());
+ feeder.accept(grammarAccess.getDefStatementAccess().getExprEvaluationParserRuleCall_2_0(), semanticObject.getExpr());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * expression=Expression
+ */
+ protected void sequence_Evaluation(EObject context, Evaluation semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.EVALUATION__EXPRESSION) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.EVALUATION__EXPRESSION));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getEvaluationAccess().getExpressionExpressionParserRuleCall_0_0(), semanticObject.getExpression());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * value=BOOLEAN
+ */
+ protected void sequence_FunctionArgument(EObject context, BooleanLiteral semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * value=STRING
+ */
+ protected void sequence_FunctionArgument(EObject context, StringLiteral semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * func=[ExternalFunctionDefinition|ID]
+ */
+ protected void sequence_FunctionReference(EObject context, ExternalFunctionReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * name=ID
+ */
+ protected void sequence_FunctionReference(EObject context, FunctionReference semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.FUNCTION_REFERENCE__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.FUNCTION_REFERENCE__NAME));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getFunctionReferenceAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * name=ID
+ */
+ protected void sequence_GlobalVariable(EObject context, GlobalVariable semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.GLOBAL_VARIABLE__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.GLOBAL_VARIABLE__NAME));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getGlobalVariableAccess().getNameIDTerminalRuleCall_0(), semanticObject.getName());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * obj=[DefStatement|ID]
+ */
+ protected void sequence_LocalVariableReference(EObject context, DefStatementReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (package=[Package|STRING] model=[Model|ID] transition=[Transition|ID])
+ */
+ protected void sequence_MetamodelResource(EObject context, MetamodelResource semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__PACKAGE) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__PACKAGE));
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__MODEL) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__MODEL));
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__TRANSITION) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.METAMODEL_RESOURCE__TRANSITION));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getMetamodelResourceAccess().getPackagePackageSTRINGTerminalRuleCall_1_0_1(), semanticObject.getPackage());
+ feeder.accept(grammarAccess.getMetamodelResourceAccess().getModelModelIDTerminalRuleCall_3_0_1(), semanticObject.getModel());
+ feeder.accept(grammarAccess.getMetamodelResourceAccess().getTransitionTransitionIDTerminalRuleCall_5_0_1(), semanticObject.getTransition());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * obj=[ModelParam|ID]
+ */
+ protected void sequence_ModelParamReference(EObject context, ModelParamReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (left=Multiplication_Div_1_0_1_0 right=NegatedExpression)
+ */
+ protected void sequence_Multiplication(EObject context, Div semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (left=Multiplication_Multi_1_0_0_0 right=NegatedExpression)
+ */
+ protected void sequence_Multiplication(EObject context, Multi semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * (negate?='-'? exp=PrimaryExpression)
+ */
+ protected void sequence_NegatedExpression(EObject context, PrimaryExpression semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * exp=Expression
+ */
+ protected void sequence_PrimaryExpression(EObject context, Expression semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.EXPRESSION__EXP) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.EXPRESSION__EXP));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getPrimaryExpressionAccess().getExpExpressionParserRuleCall_1_1_0(), semanticObject.getExp());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * (ref=[FunctionReference|ID] args+=FunctionArgument? args+=FunctionArgument*)
+ */
+ protected void sequence_PrimaryExpression(EObject context, FunctionCall semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * value=NUMBER
+ */
+ protected void sequence_PrimaryExpression(EObject context, NumberLiteral semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * ref=[ScopedVariableReference|ID]
+ */
+ protected void sequence_PrimaryExpression(EObject context, VariableReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {CompartmentReference}
+ */
+ protected void sequence_ScopedVariableReference(EObject context, CompartmentReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {GlobalVariableReference}
+ */
+ protected void sequence_ScopedVariableReference(EObject context, GlobalVariableReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {LocalVariableReference}
+ */
+ protected void sequence_ScopedVariableReference(EObject context, LocalVariableReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * {ModelParamReference}
+ */
+ protected void sequence_ScopedVariableReference(EObject context, ModelParamReference semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Constraint:
+ * name=ID
+ */
+ protected void sequence_ScopedVariableReference(EObject context, ScopedVariableReference semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.SCOPED_VARIABLE_REFERENCE__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.SCOPED_VARIABLE_REFERENCE__NAME));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getScopedVariableReferenceAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * block=Block
+ */
+ protected void sequence_TransitionBlock(EObject context, TransitionBlock semanticObject) {
+ if(errorAcceptor != null) {
+ if(transientValues.isValueTransient(semanticObject, CtdlPackage.Literals.TRANSITION_BLOCK__BLOCK) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CtdlPackage.Literals.TRANSITION_BLOCK__BLOCK));
+ }
+ INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+ SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+ feeder.accept(grammarAccess.getTransitionBlockAccess().getBlockBlockParserRuleCall_0(), semanticObject.getBlock());
+ feeder.finish();
+ }
+
+
+ /**
+ * Constraint:
+ * (source=[Compartment|ID] target=[Compartment|ID])
+ */
+ protected void sequence_Transition(EObject context, Transition semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSyntacticSequencer.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSyntacticSequencer.java
new file mode 100644
index 000000000..95fc7802b
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/serializer/CTDLSyntacticSequencer.java
@@ -0,0 +1,42 @@
+package org.eclipse.stem.model.ctdl.serializer;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.model.ctdl.services.CTDLGrammarAccess;
+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.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class CTDLSyntacticSequencer extends AbstractSyntacticSequencer {
+
+ protected CTDLGrammarAccess grammarAccess;
+
+ @Inject
+ protected void init(IGrammarAccess access) {
+ grammarAccess = (CTDLGrammarAccess) access;
+ }
+
+ @Override
+ protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+ return "";
+ }
+
+
+ @Override
+ protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+ if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+ List<INode> transitionNodes = collectNodes(fromNode, toNode);
+ for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+ List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+ acceptNodes(getLastNavigableState(), syntaxNodes);
+ }
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/services/CTDLGrammarAccess.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/services/CTDLGrammarAccess.java
new file mode 100644
index 000000000..648c8f7b0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/services/CTDLGrammarAccess.java
@@ -0,0 +1,1148 @@
+/*
+* generated by Xtext
+*/
+
+package org.eclipse.stem.model.ctdl.services;
+
+import java.util.List;
+
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Alternatives;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.TerminalRule;
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
+import org.eclipse.xtext.service.GrammarProvider;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class CTDLGrammarAccess extends AbstractGrammarElementFinder {
+
+
+ public class CompartmentTransitionDefinitionsElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompartmentTransitionDefinitions");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cMetamodelAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final CrossReference cMetamodelMetamodelResourceCrossReference_0_0 = (CrossReference)cMetamodelAssignment_0.eContents().get(0);
+ private final RuleCall cMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1 = (RuleCall)cMetamodelMetamodelResourceCrossReference_0_0.eContents().get(1);
+ private final Assignment cExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cExpressionTransitionBlockParserRuleCall_1_0 = (RuleCall)cExpressionAssignment_1.eContents().get(0);
+
+ //CompartmentTransitionDefinitions:
+ // metamodel=[MetamodelResource]? expression=TransitionBlock;
+ public ParserRule getRule() { return rule; }
+
+ //metamodel=[MetamodelResource]? expression=TransitionBlock
+ public Group getGroup() { return cGroup; }
+
+ //metamodel=[MetamodelResource]?
+ public Assignment getMetamodelAssignment_0() { return cMetamodelAssignment_0; }
+
+ //[MetamodelResource]
+ public CrossReference getMetamodelMetamodelResourceCrossReference_0_0() { return cMetamodelMetamodelResourceCrossReference_0_0; }
+
+ //ID
+ public RuleCall getMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1() { return cMetamodelMetamodelResourceIDTerminalRuleCall_0_0_1; }
+
+ //expression=TransitionBlock
+ public Assignment getExpressionAssignment_1() { return cExpressionAssignment_1; }
+
+ //TransitionBlock
+ public RuleCall getExpressionTransitionBlockParserRuleCall_1_0() { return cExpressionTransitionBlockParserRuleCall_1_0; }
+ }
+
+ public class MetamodelResourceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "MetamodelResource");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cMetamodelKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cPackageAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cPackagePackageCrossReference_1_0 = (CrossReference)cPackageAssignment_1.eContents().get(0);
+ private final RuleCall cPackagePackageSTRINGTerminalRuleCall_1_0_1 = (RuleCall)cPackagePackageCrossReference_1_0.eContents().get(1);
+ private final Keyword cModelKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cModelAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cModelModelCrossReference_3_0 = (CrossReference)cModelAssignment_3.eContents().get(0);
+ private final RuleCall cModelModelIDTerminalRuleCall_3_0_1 = (RuleCall)cModelModelCrossReference_3_0.eContents().get(1);
+ private final Keyword cTransitionKeyword_4 = (Keyword)cGroup.eContents().get(4);
+ private final Assignment cTransitionAssignment_5 = (Assignment)cGroup.eContents().get(5);
+ private final CrossReference cTransitionTransitionCrossReference_5_0 = (CrossReference)cTransitionAssignment_5.eContents().get(0);
+ private final RuleCall cTransitionTransitionIDTerminalRuleCall_5_0_1 = (RuleCall)cTransitionTransitionCrossReference_5_0.eContents().get(1);
+
+ //MetamodelResource:
+ // "metamodel " package=[metamodel::Package|STRING] "model " model=[metamodel::Model] "transition "
+ // transition=[metamodel::Transition];
+ public ParserRule getRule() { return rule; }
+
+ //"metamodel " package=[metamodel::Package|STRING] "model " model=[metamodel::Model] "transition "
+ //transition=[metamodel::Transition]
+ public Group getGroup() { return cGroup; }
+
+ //"metamodel "
+ public Keyword getMetamodelKeyword_0() { return cMetamodelKeyword_0; }
+
+ //package=[metamodel::Package|STRING]
+ public Assignment getPackageAssignment_1() { return cPackageAssignment_1; }
+
+ //[metamodel::Package|STRING]
+ public CrossReference getPackagePackageCrossReference_1_0() { return cPackagePackageCrossReference_1_0; }
+
+ //STRING
+ public RuleCall getPackagePackageSTRINGTerminalRuleCall_1_0_1() { return cPackagePackageSTRINGTerminalRuleCall_1_0_1; }
+
+ //"model "
+ public Keyword getModelKeyword_2() { return cModelKeyword_2; }
+
+ //model=[metamodel::Model]
+ public Assignment getModelAssignment_3() { return cModelAssignment_3; }
+
+ //[metamodel::Model]
+ public CrossReference getModelModelCrossReference_3_0() { return cModelModelCrossReference_3_0; }
+
+ //ID
+ public RuleCall getModelModelIDTerminalRuleCall_3_0_1() { return cModelModelIDTerminalRuleCall_3_0_1; }
+
+ //"transition "
+ public Keyword getTransitionKeyword_4() { return cTransitionKeyword_4; }
+
+ //transition=[metamodel::Transition]
+ public Assignment getTransitionAssignment_5() { return cTransitionAssignment_5; }
+
+ //[metamodel::Transition]
+ public CrossReference getTransitionTransitionCrossReference_5_0() { return cTransitionTransitionCrossReference_5_0; }
+
+ //ID
+ public RuleCall getTransitionTransitionIDTerminalRuleCall_5_0_1() { return cTransitionTransitionIDTerminalRuleCall_5_0_1; }
+ }
+
+ public class TransitionBlockElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TransitionBlock");
+ private final Assignment cBlockAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cBlockBlockParserRuleCall_0 = (RuleCall)cBlockAssignment.eContents().get(0);
+
+ //TransitionBlock: //'transition ' transition=[metamodel::Transition|TRANS_STMT]
+ // block=Block;
+ public ParserRule getRule() { return rule; }
+
+ ////'transition ' transition=[metamodel::Transition|TRANS_STMT]
+ //block=Block
+ public Assignment getBlockAssignment() { return cBlockAssignment; }
+
+ //Block
+ public RuleCall getBlockBlockParserRuleCall_0() { return cBlockBlockParserRuleCall_0; }
+ }
+
+ public class TransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Transition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Action cTransitionAction_0 = (Action)cGroup.eContents().get(0);
+ private final Assignment cSourceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cSourceCompartmentCrossReference_1_0 = (CrossReference)cSourceAssignment_1.eContents().get(0);
+ private final RuleCall cSourceCompartmentIDTerminalRuleCall_1_0_1 = (RuleCall)cSourceCompartmentCrossReference_1_0.eContents().get(1);
+ private final Keyword cHyphenMinusGreaterThanSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
+ private final Assignment cTargetAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final CrossReference cTargetCompartmentCrossReference_3_0 = (CrossReference)cTargetAssignment_3.eContents().get(0);
+ private final RuleCall cTargetCompartmentIDTerminalRuleCall_3_0_1 = (RuleCall)cTargetCompartmentCrossReference_3_0.eContents().get(1);
+
+ //Transition returns metamodel::Transition:
+ // {metamodel::Transition} source=[metamodel::Compartment] "->" target=[metamodel::Compartment];
+ public ParserRule getRule() { return rule; }
+
+ //{metamodel::Transition} source=[metamodel::Compartment] "->" target=[metamodel::Compartment]
+ public Group getGroup() { return cGroup; }
+
+ //{metamodel::Transition}
+ public Action getTransitionAction_0() { return cTransitionAction_0; }
+
+ //source=[metamodel::Compartment]
+ public Assignment getSourceAssignment_1() { return cSourceAssignment_1; }
+
+ //[metamodel::Compartment]
+ public CrossReference getSourceCompartmentCrossReference_1_0() { return cSourceCompartmentCrossReference_1_0; }
+
+ //ID
+ public RuleCall getSourceCompartmentIDTerminalRuleCall_1_0_1() { return cSourceCompartmentIDTerminalRuleCall_1_0_1; }
+
+ //"->"
+ public Keyword getHyphenMinusGreaterThanSignKeyword_2() { return cHyphenMinusGreaterThanSignKeyword_2; }
+
+ //target=[metamodel::Compartment]
+ public Assignment getTargetAssignment_3() { return cTargetAssignment_3; }
+
+ //[metamodel::Compartment]
+ public CrossReference getTargetCompartmentCrossReference_3_0() { return cTargetCompartmentCrossReference_3_0; }
+
+ //ID
+ public RuleCall getTargetCompartmentIDTerminalRuleCall_3_0_1() { return cTargetCompartmentIDTerminalRuleCall_3_0_1; }
+ }
+
+ public class CompartmentElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Compartment");
+ private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
+
+ //Compartment returns metamodel::Compartment:
+ // name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //name=ID
+ public Assignment getNameAssignment() { return cNameAssignment; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0() { return cNameIDTerminalRuleCall_0; }
+ }
+
+ public class BlockElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Block");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Action cBlockAction_0 = (Action)cGroup.eContents().get(0);
+ private final Assignment cStatementsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cStatementsDefStatementParserRuleCall_1_0 = (RuleCall)cStatementsAssignment_1.eContents().get(0);
+ private final Assignment cRetAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cRetReturnStatementParserRuleCall_2_0 = (RuleCall)cRetAssignment_2.eContents().get(0);
+
+ ////terminal STEM_TRANS_NAME : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')* '->' ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')*
+ //Block:
+ // {Block} statements+=DefStatement* ret=ReturnStatement;
+ public ParserRule getRule() { return rule; }
+
+ //{Block} statements+=DefStatement* ret=ReturnStatement
+ public Group getGroup() { return cGroup; }
+
+ //{Block}
+ public Action getBlockAction_0() { return cBlockAction_0; }
+
+ //statements+=DefStatement*
+ public Assignment getStatementsAssignment_1() { return cStatementsAssignment_1; }
+
+ //DefStatement
+ public RuleCall getStatementsDefStatementParserRuleCall_1_0() { return cStatementsDefStatementParserRuleCall_1_0; }
+
+ //ret=ReturnStatement
+ public Assignment getRetAssignment_2() { return cRetAssignment_2; }
+
+ //ReturnStatement
+ public RuleCall getRetReturnStatementParserRuleCall_2_0() { return cRetReturnStatementParserRuleCall_2_0; }
+ }
+
+ public class DefStatementElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DefStatement");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cVarnameAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cVarnameIDTerminalRuleCall_0_0 = (RuleCall)cVarnameAssignment_0.eContents().get(0);
+ private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+ private final Assignment cExprAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cExprEvaluationParserRuleCall_2_0 = (RuleCall)cExprAssignment_2.eContents().get(0);
+
+ //DefStatement:
+ // varname=ID "=" expr=Evaluation;
+ public ParserRule getRule() { return rule; }
+
+ //varname=ID "=" expr=Evaluation
+ public Group getGroup() { return cGroup; }
+
+ //varname=ID
+ public Assignment getVarnameAssignment_0() { return cVarnameAssignment_0; }
+
+ //ID
+ public RuleCall getVarnameIDTerminalRuleCall_0_0() { return cVarnameIDTerminalRuleCall_0_0; }
+
+ //"="
+ public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }
+
+ //expr=Evaluation
+ public Assignment getExprAssignment_2() { return cExprAssignment_2; }
+
+ //Evaluation
+ public RuleCall getExprEvaluationParserRuleCall_2_0() { return cExprEvaluationParserRuleCall_2_0; }
+ }
+
+ public class ReturnStatementElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReturnStatement");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cDeltaKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final RuleCall cEvaluationParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+
+ //ReturnStatement:
+ // "delta" Evaluation;
+ public ParserRule getRule() { return rule; }
+
+ //"delta" Evaluation
+ public Group getGroup() { return cGroup; }
+
+ //"delta"
+ public Keyword getDeltaKeyword_0() { return cDeltaKeyword_0; }
+
+ //Evaluation
+ public RuleCall getEvaluationParserRuleCall_1() { return cEvaluationParserRuleCall_1; }
+ }
+
+ public class EvaluationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Evaluation");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cExpressionAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cExpressionExpressionParserRuleCall_0_0 = (RuleCall)cExpressionAssignment_0.eContents().get(0);
+ private final Keyword cSemicolonKeyword_1 = (Keyword)cGroup.eContents().get(1);
+
+ //Evaluation:
+ // expression=Expression ";";
+ public ParserRule getRule() { return rule; }
+
+ //expression=Expression ";"
+ public Group getGroup() { return cGroup; }
+
+ //expression=Expression
+ public Assignment getExpressionAssignment_0() { return cExpressionAssignment_0; }
+
+ //Expression
+ public RuleCall getExpressionExpressionParserRuleCall_0_0() { return cExpressionExpressionParserRuleCall_0_0; }
+
+ //";"
+ public Keyword getSemicolonKeyword_1() { return cSemicolonKeyword_1; }
+ }
+
+ public class ExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
+ private final RuleCall cAdditionParserRuleCall = (RuleCall)rule.eContents().get(1);
+
+ //Expression:
+ // Addition;
+ public ParserRule getRule() { return rule; }
+
+ //Addition
+ public RuleCall getAdditionParserRuleCall() { return cAdditionParserRuleCall; }
+ }
+
+ public class AdditionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Addition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final RuleCall cMultiplicationParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+ private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0);
+ private final Action cPlusLeftAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
+ private final Keyword cPlusSignKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1);
+ private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1);
+ private final Action cMinusLeftAction_1_0_1_0 = (Action)cGroup_1_0_1.eContents().get(0);
+ private final Keyword cHyphenMinusKeyword_1_0_1_1 = (Keyword)cGroup_1_0_1.eContents().get(1);
+ private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cRightMultiplicationParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+
+ //Addition returns Expression:
+ // Multiplication (({Plus.left=current} "+" | {Minus.left=current} "-") right=Multiplication)*;
+ public ParserRule getRule() { return rule; }
+
+ //Multiplication (({Plus.left=current} "+" | {Minus.left=current} "-") right=Multiplication)*
+ public Group getGroup() { return cGroup; }
+
+ //Multiplication
+ public RuleCall getMultiplicationParserRuleCall_0() { return cMultiplicationParserRuleCall_0; }
+
+ //(({Plus.left=current} "+" | {Minus.left=current} "-") right=Multiplication)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //{Plus.left=current} "+" | {Minus.left=current} "-"
+ public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+ //{Plus.left=current} "+"
+ public Group getGroup_1_0_0() { return cGroup_1_0_0; }
+
+ //{Plus.left=current}
+ public Action getPlusLeftAction_1_0_0_0() { return cPlusLeftAction_1_0_0_0; }
+
+ //"+"
+ public Keyword getPlusSignKeyword_1_0_0_1() { return cPlusSignKeyword_1_0_0_1; }
+
+ //{Minus.left=current} "-"
+ public Group getGroup_1_0_1() { return cGroup_1_0_1; }
+
+ //{Minus.left=current}
+ public Action getMinusLeftAction_1_0_1_0() { return cMinusLeftAction_1_0_1_0; }
+
+ //"-"
+ public Keyword getHyphenMinusKeyword_1_0_1_1() { return cHyphenMinusKeyword_1_0_1_1; }
+
+ //right=Multiplication
+ public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+ //Multiplication
+ public RuleCall getRightMultiplicationParserRuleCall_1_1_0() { return cRightMultiplicationParserRuleCall_1_1_0; }
+ }
+
+ public class MultiplicationElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Multiplication");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final RuleCall cNegatedExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+ private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0);
+ private final Action cMultiLeftAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
+ private final Keyword cAsteriskKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1);
+ private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1);
+ private final Action cDivLeftAction_1_0_1_0 = (Action)cGroup_1_0_1.eContents().get(0);
+ private final Keyword cSolidusKeyword_1_0_1_1 = (Keyword)cGroup_1_0_1.eContents().get(1);
+ private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cRightNegatedExpressionParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+
+ //Multiplication returns Expression:
+ // NegatedExpression (({Multi.left=current} "*" | {Div.left=current} "/") right=NegatedExpression)*;
+ public ParserRule getRule() { return rule; }
+
+ //NegatedExpression (({Multi.left=current} "*" | {Div.left=current} "/") right=NegatedExpression)*
+ public Group getGroup() { return cGroup; }
+
+ //NegatedExpression
+ public RuleCall getNegatedExpressionParserRuleCall_0() { return cNegatedExpressionParserRuleCall_0; }
+
+ //(({Multi.left=current} "*" | {Div.left=current} "/") right=NegatedExpression)*
+ public Group getGroup_1() { return cGroup_1; }
+
+ //{Multi.left=current} "*" | {Div.left=current} "/"
+ public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+ //{Multi.left=current} "*"
+ public Group getGroup_1_0_0() { return cGroup_1_0_0; }
+
+ //{Multi.left=current}
+ public Action getMultiLeftAction_1_0_0_0() { return cMultiLeftAction_1_0_0_0; }
+
+ //"*"
+ public Keyword getAsteriskKeyword_1_0_0_1() { return cAsteriskKeyword_1_0_0_1; }
+
+ //{Div.left=current} "/"
+ public Group getGroup_1_0_1() { return cGroup_1_0_1; }
+
+ //{Div.left=current}
+ public Action getDivLeftAction_1_0_1_0() { return cDivLeftAction_1_0_1_0; }
+
+ //"/"
+ public Keyword getSolidusKeyword_1_0_1_1() { return cSolidusKeyword_1_0_1_1; }
+
+ //right=NegatedExpression
+ public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+ //NegatedExpression
+ public RuleCall getRightNegatedExpressionParserRuleCall_1_1_0() { return cRightNegatedExpressionParserRuleCall_1_1_0; }
+ }
+
+ public class NegatedExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NegatedExpression");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Action cPrimaryExpressionAction_0 = (Action)cGroup.eContents().get(0);
+ private final Assignment cNegateAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final Keyword cNegateHyphenMinusKeyword_1_0 = (Keyword)cNegateAssignment_1.eContents().get(0);
+ private final Assignment cExpAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cExpPrimaryExpressionParserRuleCall_2_0 = (RuleCall)cExpAssignment_2.eContents().get(0);
+
+ //NegatedExpression returns Expression:
+ // {PrimaryExpression} negate?="-"? exp=PrimaryExpression;
+ public ParserRule getRule() { return rule; }
+
+ //{PrimaryExpression} negate?="-"? exp=PrimaryExpression
+ public Group getGroup() { return cGroup; }
+
+ //{PrimaryExpression}
+ public Action getPrimaryExpressionAction_0() { return cPrimaryExpressionAction_0; }
+
+ //negate?="-"?
+ public Assignment getNegateAssignment_1() { return cNegateAssignment_1; }
+
+ //"-"
+ public Keyword getNegateHyphenMinusKeyword_1_0() { return cNegateHyphenMinusKeyword_1_0; }
+
+ //exp=PrimaryExpression
+ public Assignment getExpAssignment_2() { return cExpAssignment_2; }
+
+ //PrimaryExpression
+ public RuleCall getExpPrimaryExpressionParserRuleCall_2_0() { return cExpPrimaryExpressionParserRuleCall_2_0; }
+ }
+
+ public class PrimaryExpressionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrimaryExpression");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
+ private final Action cNumberLiteralAction_0_0 = (Action)cGroup_0.eContents().get(0);
+ private final Assignment cValueAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
+ private final RuleCall cValueNUMBERTerminalRuleCall_0_1_0 = (RuleCall)cValueAssignment_0_1.eContents().get(0);
+ private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
+ private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cExpAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cExpExpressionParserRuleCall_1_1_0 = (RuleCall)cExpAssignment_1_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
+ private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
+ private final Action cFunctionCallAction_2_0 = (Action)cGroup_2.eContents().get(0);
+ private final Assignment cRefAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+ private final CrossReference cRefFunctionReferenceCrossReference_2_1_0 = (CrossReference)cRefAssignment_2_1.eContents().get(0);
+ private final RuleCall cRefFunctionReferenceIDTerminalRuleCall_2_1_0_1 = (RuleCall)cRefFunctionReferenceCrossReference_2_1_0.eContents().get(1);
+ private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
+ private final Keyword cLeftParenthesisKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
+ private final Assignment cArgsAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
+ private final RuleCall cArgsFunctionArgumentParserRuleCall_2_2_1_0 = (RuleCall)cArgsAssignment_2_2_1.eContents().get(0);
+ private final Group cGroup_2_2_2 = (Group)cGroup_2_2.eContents().get(2);
+ private final Keyword cCommaKeyword_2_2_2_0 = (Keyword)cGroup_2_2_2.eContents().get(0);
+ private final Assignment cArgsAssignment_2_2_2_1 = (Assignment)cGroup_2_2_2.eContents().get(1);
+ private final RuleCall cArgsFunctionArgumentParserRuleCall_2_2_2_1_0 = (RuleCall)cArgsAssignment_2_2_2_1.eContents().get(0);
+ private final Keyword cRightParenthesisKeyword_2_2_3 = (Keyword)cGroup_2_2.eContents().get(3);
+ private final Group cGroup_3 = (Group)cAlternatives.eContents().get(3);
+ private final Action cVariableReferenceAction_3_0 = (Action)cGroup_3.eContents().get(0);
+ private final Assignment cRefAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+ private final CrossReference cRefScopedVariableReferenceCrossReference_3_1_0 = (CrossReference)cRefAssignment_3_1.eContents().get(0);
+ private final RuleCall cRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1 = (RuleCall)cRefScopedVariableReferenceCrossReference_3_1_0.eContents().get(1);
+
+ //PrimaryExpression returns Expression:
+ // {NumberLiteral} value=NUMBER | "(" exp=Expression ")" | {FunctionCall} ref=[FunctionReference] ("("
+ // args+=FunctionArgument? ("," args+=FunctionArgument)* ")") | {VariableReference} ref=[ScopedVariableReference];
+ public ParserRule getRule() { return rule; }
+
+ //{NumberLiteral} value=NUMBER | "(" exp=Expression ")" | {FunctionCall} ref=[FunctionReference] ("("
+ //args+=FunctionArgument? ("," args+=FunctionArgument)* ")") | {VariableReference} ref=[ScopedVariableReference]
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //{NumberLiteral} value=NUMBER
+ public Group getGroup_0() { return cGroup_0; }
+
+ //{NumberLiteral}
+ public Action getNumberLiteralAction_0_0() { return cNumberLiteralAction_0_0; }
+
+ //value=NUMBER
+ public Assignment getValueAssignment_0_1() { return cValueAssignment_0_1; }
+
+ //NUMBER
+ public RuleCall getValueNUMBERTerminalRuleCall_0_1_0() { return cValueNUMBERTerminalRuleCall_0_1_0; }
+
+ //"(" exp=Expression ")"
+ public Group getGroup_1() { return cGroup_1; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; }
+
+ //exp=Expression
+ public Assignment getExpAssignment_1_1() { return cExpAssignment_1_1; }
+
+ //Expression
+ public RuleCall getExpExpressionParserRuleCall_1_1_0() { return cExpExpressionParserRuleCall_1_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; }
+
+ //{FunctionCall} ref=[FunctionReference] ("(" args+=FunctionArgument? ("," args+=FunctionArgument)* ")")
+ public Group getGroup_2() { return cGroup_2; }
+
+ //{FunctionCall}
+ public Action getFunctionCallAction_2_0() { return cFunctionCallAction_2_0; }
+
+ //ref=[FunctionReference]
+ public Assignment getRefAssignment_2_1() { return cRefAssignment_2_1; }
+
+ //[FunctionReference]
+ public CrossReference getRefFunctionReferenceCrossReference_2_1_0() { return cRefFunctionReferenceCrossReference_2_1_0; }
+
+ //ID
+ public RuleCall getRefFunctionReferenceIDTerminalRuleCall_2_1_0_1() { return cRefFunctionReferenceIDTerminalRuleCall_2_1_0_1; }
+
+ //"(" args+=FunctionArgument? ("," args+=FunctionArgument)* ")"
+ public Group getGroup_2_2() { return cGroup_2_2; }
+
+ //"("
+ public Keyword getLeftParenthesisKeyword_2_2_0() { return cLeftParenthesisKeyword_2_2_0; }
+
+ //args+=FunctionArgument?
+ public Assignment getArgsAssignment_2_2_1() { return cArgsAssignment_2_2_1; }
+
+ //FunctionArgument
+ public RuleCall getArgsFunctionArgumentParserRuleCall_2_2_1_0() { return cArgsFunctionArgumentParserRuleCall_2_2_1_0; }
+
+ //("," args+=FunctionArgument)*
+ public Group getGroup_2_2_2() { return cGroup_2_2_2; }
+
+ //","
+ public Keyword getCommaKeyword_2_2_2_0() { return cCommaKeyword_2_2_2_0; }
+
+ //args+=FunctionArgument
+ public Assignment getArgsAssignment_2_2_2_1() { return cArgsAssignment_2_2_2_1; }
+
+ //FunctionArgument
+ public RuleCall getArgsFunctionArgumentParserRuleCall_2_2_2_1_0() { return cArgsFunctionArgumentParserRuleCall_2_2_2_1_0; }
+
+ //")"
+ public Keyword getRightParenthesisKeyword_2_2_3() { return cRightParenthesisKeyword_2_2_3; }
+
+ //{VariableReference} ref=[ScopedVariableReference]
+ public Group getGroup_3() { return cGroup_3; }
+
+ //{VariableReference}
+ public Action getVariableReferenceAction_3_0() { return cVariableReferenceAction_3_0; }
+
+ //ref=[ScopedVariableReference]
+ public Assignment getRefAssignment_3_1() { return cRefAssignment_3_1; }
+
+ //[ScopedVariableReference]
+ public CrossReference getRefScopedVariableReferenceCrossReference_3_1_0() { return cRefScopedVariableReferenceCrossReference_3_1_0; }
+
+ //ID
+ public RuleCall getRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1() { return cRefScopedVariableReferenceIDTerminalRuleCall_3_1_0_1; }
+ }
+
+ public class FunctionArgumentElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionArgument");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
+ private final Action cBooleanLiteralAction_0_0 = (Action)cGroup_0.eContents().get(0);
+ private final Assignment cValueAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
+ private final RuleCall cValueBOOLEANTerminalRuleCall_0_1_0 = (RuleCall)cValueAssignment_0_1.eContents().get(0);
+ private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
+ private final Action cStringLiteralAction_1_0 = (Action)cGroup_1.eContents().get(0);
+ private final Assignment cValueAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cValueSTRINGTerminalRuleCall_1_1_0 = (RuleCall)cValueAssignment_1_1.eContents().get(0);
+ private final RuleCall cExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+
+ //FunctionArgument returns Expression:
+ // {BooleanLiteral} value=BOOLEAN | {StringLiteral} value=STRING | Expression;
+ public ParserRule getRule() { return rule; }
+
+ //{BooleanLiteral} value=BOOLEAN | {StringLiteral} value=STRING | Expression
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //{BooleanLiteral} value=BOOLEAN
+ public Group getGroup_0() { return cGroup_0; }
+
+ //{BooleanLiteral}
+ public Action getBooleanLiteralAction_0_0() { return cBooleanLiteralAction_0_0; }
+
+ //value=BOOLEAN
+ public Assignment getValueAssignment_0_1() { return cValueAssignment_0_1; }
+
+ //BOOLEAN
+ public RuleCall getValueBOOLEANTerminalRuleCall_0_1_0() { return cValueBOOLEANTerminalRuleCall_0_1_0; }
+
+ //{StringLiteral} value=STRING
+ public Group getGroup_1() { return cGroup_1; }
+
+ //{StringLiteral}
+ public Action getStringLiteralAction_1_0() { return cStringLiteralAction_1_0; }
+
+ //value=STRING
+ public Assignment getValueAssignment_1_1() { return cValueAssignment_1_1; }
+
+ //STRING
+ public RuleCall getValueSTRINGTerminalRuleCall_1_1_0() { return cValueSTRINGTerminalRuleCall_1_1_0; }
+
+ //Expression
+ public RuleCall getExpressionParserRuleCall_2() { return cExpressionParserRuleCall_2; }
+ }
+
+ public class FunctionReferenceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionReference");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Assignment cNameAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+ private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+ private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
+ private final Action cExternalFunctionReferenceAction_1_0 = (Action)cGroup_1.eContents().get(0);
+ private final Assignment cFuncAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final CrossReference cFuncExternalFunctionDefinitionCrossReference_1_1_0 = (CrossReference)cFuncAssignment_1_1.eContents().get(0);
+ private final RuleCall cFuncExternalFunctionDefinitionIDTerminalRuleCall_1_1_0_1 = (RuleCall)cFuncExternalFunctionDefinitionCrossReference_1_1_0.eContents().get(1);
+
+ //FunctionReference:
+ // name=ID | {ExternalFunctionReference} func=[extFunc::ExternalFunctionDefinition];
+ public ParserRule getRule() { return rule; }
+
+ //name=ID | {ExternalFunctionReference} func=[extFunc::ExternalFunctionDefinition]
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //name=ID
+ public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+ //{ExternalFunctionReference} func=[extFunc::ExternalFunctionDefinition]
+ public Group getGroup_1() { return cGroup_1; }
+
+ //{ExternalFunctionReference}
+ public Action getExternalFunctionReferenceAction_1_0() { return cExternalFunctionReferenceAction_1_0; }
+
+ //func=[extFunc::ExternalFunctionDefinition]
+ public Assignment getFuncAssignment_1_1() { return cFuncAssignment_1_1; }
+
+ //[extFunc::ExternalFunctionDefinition]
+ public CrossReference getFuncExternalFunctionDefinitionCrossReference_1_1_0() { return cFuncExternalFunctionDefinitionCrossReference_1_1_0; }
+
+ //ID
+ public RuleCall getFuncExternalFunctionDefinitionIDTerminalRuleCall_1_1_0_1() { return cFuncExternalFunctionDefinitionIDTerminalRuleCall_1_1_0_1; }
+ }
+
+ public class ScopedVariableReferenceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ScopedVariableReference");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Assignment cNameAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+ private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+ private final Action cLocalVariableReferenceAction_1 = (Action)cAlternatives.eContents().get(1);
+ private final Action cGlobalVariableReferenceAction_2 = (Action)cAlternatives.eContents().get(2);
+ private final Action cCompartmentReferenceAction_3 = (Action)cAlternatives.eContents().get(3);
+ private final Action cModelParamReferenceAction_4 = (Action)cAlternatives.eContents().get(4);
+
+ //ScopedVariableReference:
+ // name=ID | {LocalVariableReference} | {GlobalVariableReference} | {CompartmentReference} | {ModelParamReference};
+ public ParserRule getRule() { return rule; }
+
+ //name=ID | {LocalVariableReference} | {GlobalVariableReference} | {CompartmentReference} | {ModelParamReference}
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //name=ID
+ public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+ //{LocalVariableReference}
+ public Action getLocalVariableReferenceAction_1() { return cLocalVariableReferenceAction_1; }
+
+ //{GlobalVariableReference}
+ public Action getGlobalVariableReferenceAction_2() { return cGlobalVariableReferenceAction_2; }
+
+ //{CompartmentReference}
+ public Action getCompartmentReferenceAction_3() { return cCompartmentReferenceAction_3; }
+
+ //{ModelParamReference}
+ public Action getModelParamReferenceAction_4() { return cModelParamReferenceAction_4; }
+ }
+
+ public class LocalVariableReferenceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LocalVariableReference");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Action cDefStatementReferenceAction_0 = (Action)cGroup.eContents().get(0);
+ private final Assignment cObjAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final CrossReference cObjDefStatementCrossReference_1_0 = (CrossReference)cObjAssignment_1.eContents().get(0);
+ private final RuleCall cObjDefStatementIDTerminalRuleCall_1_0_1 = (RuleCall)cObjDefStatementCrossReference_1_0.eContents().get(1);
+
+ //LocalVariableReference:
+ // {DefStatementReference} obj=[DefStatement];
+ public ParserRule getRule() { return rule; }
+
+ //{DefStatementReference} obj=[DefStatement]
+ public Group getGroup() { return cGroup; }
+
+ //{DefStatementReference}
+ public Action getDefStatementReferenceAction_0() { return cDefStatementReferenceAction_0; }
+
+ //obj=[DefStatement]
+ public Assignment getObjAssignment_1() { return cObjAssignment_1; }
+
+ //[DefStatement]
+ public CrossReference getObjDefStatementCrossReference_1_0() { return cObjDefStatementCrossReference_1_0; }
+
+ //ID
+ public RuleCall getObjDefStatementIDTerminalRuleCall_1_0_1() { return cObjDefStatementIDTerminalRuleCall_1_0_1; }
+ }
+
+ public class CompartmentReferenceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompartmentReference");
+ private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+ private final Assignment cObjAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+ private final CrossReference cObjCompartmentCrossReference_0_0 = (CrossReference)cObjAssignment_0.eContents().get(0);
+ private final RuleCall cObjCompartmentIDTerminalRuleCall_0_0_1 = (RuleCall)cObjCompartmentCrossReference_0_0.eContents().get(1);
+ private final Action cAbsoluteCompartmentValueReferenceAction_1 = (Action)cAlternatives.eContents().get(1);
+ private final Action cRelativeCompartmentValueReferenceAction_2 = (Action)cAlternatives.eContents().get(2);
+
+ //CompartmentReference:
+ // obj=[metamodel::Compartment] | {AbsoluteCompartmentValueReference} | {RelativeCompartmentValueReference};
+ public ParserRule getRule() { return rule; }
+
+ //obj=[metamodel::Compartment] | {AbsoluteCompartmentValueReference} | {RelativeCompartmentValueReference}
+ public Alternatives getAlternatives() { return cAlternatives; }
+
+ //obj=[metamodel::Compartment]
+ public Assignment getObjAssignment_0() { return cObjAssignment_0; }
+
+ //[metamodel::Compartment]
+ public CrossReference getObjCompartmentCrossReference_0_0() { return cObjCompartmentCrossReference_0_0; }
+
+ //ID
+ public RuleCall getObjCompartmentIDTerminalRuleCall_0_0_1() { return cObjCompartmentIDTerminalRuleCall_0_0_1; }
+
+ //{AbsoluteCompartmentValueReference}
+ public Action getAbsoluteCompartmentValueReferenceAction_1() { return cAbsoluteCompartmentValueReferenceAction_1; }
+
+ //{RelativeCompartmentValueReference}
+ public Action getRelativeCompartmentValueReferenceAction_2() { return cRelativeCompartmentValueReferenceAction_2; }
+ }
+
+ public class ModelParamReferenceElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ModelParamReference");
+ private final Assignment cObjAssignment = (Assignment)rule.eContents().get(1);
+ private final CrossReference cObjModelParamCrossReference_0 = (CrossReference)cObjAssignment.eContents().get(0);
+ private final RuleCall cObjModelParamIDTerminalRuleCall_0_1 = (RuleCall)cObjModelParamCrossReference_0.eContents().get(1);
+
+ //ModelParamReference:
+ // obj=[metamodel::ModelParam];
+ public ParserRule getRule() { return rule; }
+
+ //obj=[metamodel::ModelParam]
+ public Assignment getObjAssignment() { return cObjAssignment; }
+
+ //[metamodel::ModelParam]
+ public CrossReference getObjModelParamCrossReference_0() { return cObjModelParamCrossReference_0; }
+
+ //ID
+ public RuleCall getObjModelParamIDTerminalRuleCall_0_1() { return cObjModelParamIDTerminalRuleCall_0_1; }
+ }
+
+ public class GlobalVariableElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "GlobalVariable");
+ private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
+
+ //GlobalVariable:
+ // name=ID;
+ public ParserRule getRule() { return rule; }
+
+ //name=ID
+ public Assignment getNameAssignment() { return cNameAssignment; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0() { return cNameIDTerminalRuleCall_0; }
+ }
+
+
+ private CompartmentTransitionDefinitionsElements pCompartmentTransitionDefinitions;
+ private MetamodelResourceElements pMetamodelResource;
+ private TransitionBlockElements pTransitionBlock;
+ private TransitionElements pTransition;
+ private CompartmentElements pCompartment;
+ private BlockElements pBlock;
+ private DefStatementElements pDefStatement;
+ private ReturnStatementElements pReturnStatement;
+ private EvaluationElements pEvaluation;
+ private ExpressionElements pExpression;
+ private AdditionElements pAddition;
+ private MultiplicationElements pMultiplication;
+ private NegatedExpressionElements pNegatedExpression;
+ private PrimaryExpressionElements pPrimaryExpression;
+ private FunctionArgumentElements pFunctionArgument;
+ private FunctionReferenceElements pFunctionReference;
+ private ScopedVariableReferenceElements pScopedVariableReference;
+ private LocalVariableReferenceElements pLocalVariableReference;
+ private CompartmentReferenceElements pCompartmentReference;
+ private ModelParamReferenceElements pModelParamReference;
+ private GlobalVariableElements pGlobalVariable;
+ private TerminalRule tBOOLEAN;
+ private TerminalRule tNUMBER;
+ private TerminalRule tINT;
+
+ private final Grammar grammar;
+
+ private TerminalsGrammarAccess gaTerminals;
+
+ @Inject
+ public CTDLGrammarAccess(GrammarProvider grammarProvider,
+ TerminalsGrammarAccess gaTerminals) {
+ this.grammar = internalFindGrammar(grammarProvider);
+ this.gaTerminals = gaTerminals;
+ }
+
+ protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+ Grammar grammar = grammarProvider.getGrammar(this);
+ while (grammar != null) {
+ if ("org.eclipse.stem.model.ctdl.CTDL".equals(grammar.getName())) {
+ return grammar;
+ }
+ List<Grammar> grammars = grammar.getUsedGrammars();
+ if (!grammars.isEmpty()) {
+ grammar = grammars.iterator().next();
+ } else {
+ return null;
+ }
+ }
+ return grammar;
+ }
+
+
+ public Grammar getGrammar() {
+ return grammar;
+ }
+
+
+ public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+ return gaTerminals;
+ }
+
+
+ //CompartmentTransitionDefinitions:
+ // metamodel=[MetamodelResource]? expression=TransitionBlock;
+ public CompartmentTransitionDefinitionsElements getCompartmentTransitionDefinitionsAccess() {
+ return (pCompartmentTransitionDefinitions != null) ? pCompartmentTransitionDefinitions : (pCompartmentTransitionDefinitions = new CompartmentTransitionDefinitionsElements());
+ }
+
+ public ParserRule getCompartmentTransitionDefinitionsRule() {
+ return getCompartmentTransitionDefinitionsAccess().getRule();
+ }
+
+ //MetamodelResource:
+ // "metamodel " package=[metamodel::Package|STRING] "model " model=[metamodel::Model] "transition "
+ // transition=[metamodel::Transition];
+ public MetamodelResourceElements getMetamodelResourceAccess() {
+ return (pMetamodelResource != null) ? pMetamodelResource : (pMetamodelResource = new MetamodelResourceElements());
+ }
+
+ public ParserRule getMetamodelResourceRule() {
+ return getMetamodelResourceAccess().getRule();
+ }
+
+ //TransitionBlock: //'transition ' transition=[metamodel::Transition|TRANS_STMT]
+ // block=Block;
+ public TransitionBlockElements getTransitionBlockAccess() {
+ return (pTransitionBlock != null) ? pTransitionBlock : (pTransitionBlock = new TransitionBlockElements());
+ }
+
+ public ParserRule getTransitionBlockRule() {
+ return getTransitionBlockAccess().getRule();
+ }
+
+ //Transition returns metamodel::Transition:
+ // {metamodel::Transition} source=[metamodel::Compartment] "->" target=[metamodel::Compartment];
+ public TransitionElements getTransitionAccess() {
+ return (pTransition != null) ? pTransition : (pTransition = new TransitionElements());
+ }
+
+ public ParserRule getTransitionRule() {
+ return getTransitionAccess().getRule();
+ }
+
+ //Compartment returns metamodel::Compartment:
+ // name=ID;
+ public CompartmentElements getCompartmentAccess() {
+ return (pCompartment != null) ? pCompartment : (pCompartment = new CompartmentElements());
+ }
+
+ public ParserRule getCompartmentRule() {
+ return getCompartmentAccess().getRule();
+ }
+
+ ////terminal STEM_TRANS_NAME : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')* '->' ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')*
+ //Block:
+ // {Block} statements+=DefStatement* ret=ReturnStatement;
+ public BlockElements getBlockAccess() {
+ return (pBlock != null) ? pBlock : (pBlock = new BlockElements());
+ }
+
+ public ParserRule getBlockRule() {
+ return getBlockAccess().getRule();
+ }
+
+ //DefStatement:
+ // varname=ID "=" expr=Evaluation;
+ public DefStatementElements getDefStatementAccess() {
+ return (pDefStatement != null) ? pDefStatement : (pDefStatement = new DefStatementElements());
+ }
+
+ public ParserRule getDefStatementRule() {
+ return getDefStatementAccess().getRule();
+ }
+
+ //ReturnStatement:
+ // "delta" Evaluation;
+ public ReturnStatementElements getReturnStatementAccess() {
+ return (pReturnStatement != null) ? pReturnStatement : (pReturnStatement = new ReturnStatementElements());
+ }
+
+ public ParserRule getReturnStatementRule() {
+ return getReturnStatementAccess().getRule();
+ }
+
+ //Evaluation:
+ // expression=Expression ";";
+ public EvaluationElements getEvaluationAccess() {
+ return (pEvaluation != null) ? pEvaluation : (pEvaluation = new EvaluationElements());
+ }
+
+ public ParserRule getEvaluationRule() {
+ return getEvaluationAccess().getRule();
+ }
+
+ //Expression:
+ // Addition;
+ public ExpressionElements getExpressionAccess() {
+ return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
+ }
+
+ public ParserRule getExpressionRule() {
+ return getExpressionAccess().getRule();
+ }
+
+ //Addition returns Expression:
+ // Multiplication (({Plus.left=current} "+" | {Minus.left=current} "-") right=Multiplication)*;
+ public AdditionElements getAdditionAccess() {
+ return (pAddition != null) ? pAddition : (pAddition = new AdditionElements());
+ }
+
+ public ParserRule getAdditionRule() {
+ return getAdditionAccess().getRule();
+ }
+
+ //Multiplication returns Expression:
+ // NegatedExpression (({Multi.left=current} "*" | {Div.left=current} "/") right=NegatedExpression)*;
+ public MultiplicationElements getMultiplicationAccess() {
+ return (pMultiplication != null) ? pMultiplication : (pMultiplication = new MultiplicationElements());
+ }
+
+ public ParserRule getMultiplicationRule() {
+ return getMultiplicationAccess().getRule();
+ }
+
+ //NegatedExpression returns Expression:
+ // {PrimaryExpression} negate?="-"? exp=PrimaryExpression;
+ public NegatedExpressionElements getNegatedExpressionAccess() {
+ return (pNegatedExpression != null) ? pNegatedExpression : (pNegatedExpression = new NegatedExpressionElements());
+ }
+
+ public ParserRule getNegatedExpressionRule() {
+ return getNegatedExpressionAccess().getRule();
+ }
+
+ //PrimaryExpression returns Expression:
+ // {NumberLiteral} value=NUMBER | "(" exp=Expression ")" | {FunctionCall} ref=[FunctionReference] ("("
+ // args+=FunctionArgument? ("," args+=FunctionArgument)* ")") | {VariableReference} ref=[ScopedVariableReference];
+ public PrimaryExpressionElements getPrimaryExpressionAccess() {
+ return (pPrimaryExpression != null) ? pPrimaryExpression : (pPrimaryExpression = new PrimaryExpressionElements());
+ }
+
+ public ParserRule getPrimaryExpressionRule() {
+ return getPrimaryExpressionAccess().getRule();
+ }
+
+ //FunctionArgument returns Expression:
+ // {BooleanLiteral} value=BOOLEAN | {StringLiteral} value=STRING | Expression;
+ public FunctionArgumentElements getFunctionArgumentAccess() {
+ return (pFunctionArgument != null) ? pFunctionArgument : (pFunctionArgument = new FunctionArgumentElements());
+ }
+
+ public ParserRule getFunctionArgumentRule() {
+ return getFunctionArgumentAccess().getRule();
+ }
+
+ //FunctionReference:
+ // name=ID | {ExternalFunctionReference} func=[extFunc::ExternalFunctionDefinition];
+ public FunctionReferenceElements getFunctionReferenceAccess() {
+ return (pFunctionReference != null) ? pFunctionReference : (pFunctionReference = new FunctionReferenceElements());
+ }
+
+ public ParserRule getFunctionReferenceRule() {
+ return getFunctionReferenceAccess().getRule();
+ }
+
+ //ScopedVariableReference:
+ // name=ID | {LocalVariableReference} | {GlobalVariableReference} | {CompartmentReference} | {ModelParamReference};
+ public ScopedVariableReferenceElements getScopedVariableReferenceAccess() {
+ return (pScopedVariableReference != null) ? pScopedVariableReference : (pScopedVariableReference = new ScopedVariableReferenceElements());
+ }
+
+ public ParserRule getScopedVariableReferenceRule() {
+ return getScopedVariableReferenceAccess().getRule();
+ }
+
+ //LocalVariableReference:
+ // {DefStatementReference} obj=[DefStatement];
+ public LocalVariableReferenceElements getLocalVariableReferenceAccess() {
+ return (pLocalVariableReference != null) ? pLocalVariableReference : (pLocalVariableReference = new LocalVariableReferenceElements());
+ }
+
+ public ParserRule getLocalVariableReferenceRule() {
+ return getLocalVariableReferenceAccess().getRule();
+ }
+
+ //CompartmentReference:
+ // obj=[metamodel::Compartment] | {AbsoluteCompartmentValueReference} | {RelativeCompartmentValueReference};
+ public CompartmentReferenceElements getCompartmentReferenceAccess() {
+ return (pCompartmentReference != null) ? pCompartmentReference : (pCompartmentReference = new CompartmentReferenceElements());
+ }
+
+ public ParserRule getCompartmentReferenceRule() {
+ return getCompartmentReferenceAccess().getRule();
+ }
+
+ //ModelParamReference:
+ // obj=[metamodel::ModelParam];
+ public ModelParamReferenceElements getModelParamReferenceAccess() {
+ return (pModelParamReference != null) ? pModelParamReference : (pModelParamReference = new ModelParamReferenceElements());
+ }
+
+ public ParserRule getModelParamReferenceRule() {
+ return getModelParamReferenceAccess().getRule();
+ }
+
+ //GlobalVariable:
+ // name=ID;
+ public GlobalVariableElements getGlobalVariableAccess() {
+ return (pGlobalVariable != null) ? pGlobalVariable : (pGlobalVariable = new GlobalVariableElements());
+ }
+
+ public ParserRule getGlobalVariableRule() {
+ return getGlobalVariableAccess().getRule();
+ }
+
+ //// Commented out since it breaks expressions with '-' sign.
+ ////terminal TRANS_STMT returns ecore::EString:
+ //// ID '->' ID
+ ////;
+ //terminal BOOLEAN returns ecore::EBoolean:
+ // "true" | "false";
+ public TerminalRule getBOOLEANRule() {
+ return (tBOOLEAN != null) ? tBOOLEAN : (tBOOLEAN = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BOOLEAN"));
+ }
+
+ //terminal NUMBER returns ecore::EDouble:
+ // ("0".."9"+ ("." "0".."9"*)? | "." "0".."9"+) (("e" | "E") ("+" | "-")? "0".."9"+)?;
+ public TerminalRule getNUMBERRule() {
+ return (tNUMBER != null) ? tNUMBER : (tNUMBER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "NUMBER"));
+ }
+
+ //terminal INT returns ecore::EInt:
+ // "this one has been deactivated";
+ public TerminalRule getINTRule() {
+ return (tINT != null) ? tINT : (tINT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "INT"));
+ }
+
+ //terminal ID:
+ // "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+ public TerminalRule getIDRule() {
+ return gaTerminals.getIDRule();
+ }
+
+ //terminal STRING:
+ // "\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
+ // "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+ public TerminalRule getSTRINGRule() {
+ return gaTerminals.getSTRINGRule();
+ }
+
+ //terminal ML_COMMENT:
+ // "/ *"->"* /";
+ public TerminalRule getML_COMMENTRule() {
+ return gaTerminals.getML_COMMENTRule();
+ }
+
+ //terminal SL_COMMENT:
+ // "//" !("\n" | "\r")* ("\r"? "\n")?;
+ public TerminalRule getSL_COMMENTRule() {
+ return gaTerminals.getSL_COMMENTRule();
+ }
+
+ //terminal WS:
+ // (" " | "\t" | "\r" | "\n")+;
+ public TerminalRule getWSRule() {
+ return gaTerminals.getWSRule();
+ }
+
+ //terminal ANY_OTHER:
+ // .;
+ public TerminalRule getANY_OTHERRule() {
+ return gaTerminals.getANY_OTHERRule();
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/validation/AbstractCTDLJavaValidator.java b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/validation/AbstractCTDLJavaValidator.java
new file mode 100644
index 000000000..7518dfffa
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src-gen/org/eclipse/stem/model/ctdl/validation/AbstractCTDLJavaValidator.java
@@ -0,0 +1,19 @@
+package org.eclipse.stem.model.ctdl.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+
+public class AbstractCTDLJavaValidator extends AbstractDeclarativeValidator {
+
+ @Override
+ protected List<EPackage> getEPackages() {
+ List<EPackage> result = new ArrayList<EPackage>();
+ result.add(org.eclipse.stem.model.ctdl.ctdl.CtdlPackage.eINSTANCE);
+ result.add(EPackage.Registry.INSTANCE.getEPackage("http:///org/eclipse/stem/model/metamodel.ecore"));
+ return result;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDL.xtext b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDL.xtext
new file mode 100644
index 000000000..d267b78e8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDL.xtext
@@ -0,0 +1,119 @@
+grammar org.eclipse.stem.model.ctdl.CTDL with org.eclipse.xtext.common.Terminals
+
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+import "http:///org/eclipse/stem/model/metamodel.ecore" as metamodel
+import "http:///org/eclipse/stem/model/ctdl/functions.ecore" as extFunc
+
+generate ctdl "http:///org/eclipse/stem/model/ctdl.ecore"
+
+CompartmentTransitionDefinitions:
+ (metamodel = [MetamodelResource])?
+ (expression = TransitionBlock)
+;
+
+MetamodelResource:
+ 'metamodel ' package=[metamodel::Package|STRING]
+ 'model ' model=[metamodel::Model]
+ 'transition ' transition=[metamodel::Transition]
+;
+
+TransitionBlock:
+ //'transition ' transition=[metamodel::Transition|TRANS_STMT]
+ block = Block
+;
+
+Transition returns metamodel::Transition:
+ {metamodel::Transition} source=[metamodel::Compartment] '->' target=[metamodel::Compartment]
+;
+
+Compartment returns metamodel::Compartment:
+ name = ID
+;
+
+//terminal STEM_TRANS_NAME : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')* '->' ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_')*
+
+Block :
+ {Block} (statements+=DefStatement)* ret=ReturnStatement
+;
+
+DefStatement:
+ varname=ID '=' expr=Evaluation
+;
+
+ReturnStatement:
+ 'delta' Evaluation
+;
+
+Evaluation:
+ expression=Expression ';';
+
+Expression:
+ Addition;
+
+Addition returns Expression:
+ Multiplication (({Plus.left=current} '+' | {Minus.left=current} '-') right=Multiplication)*;
+
+Multiplication returns Expression:
+ NegatedExpression (({Multi.left=current} '*' | {Div.left=current} '/') right=NegatedExpression)*;
+
+NegatedExpression returns Expression:
+ {PrimaryExpression} negate?='-'? exp=PrimaryExpression
+;
+
+PrimaryExpression returns Expression:
+ {NumberLiteral} value=NUMBER |
+ '(' exp=Expression ')' |
+ {FunctionCall} ref=[FunctionReference|ID] ('(' (args+=FunctionArgument)? (',' args+=FunctionArgument)* ')') |
+ {VariableReference} ref=[ScopedVariableReference|ID]
+;
+
+FunctionArgument returns Expression:
+ {BooleanLiteral} value=BOOLEAN |
+ {StringLiteral} value=STRING |
+ Expression
+;
+
+FunctionReference:
+ name=ID | {ExternalFunctionReference} func=[extFunc::ExternalFunctionDefinition]
+;
+
+ScopedVariableReference:
+ name=ID |
+ {LocalVariableReference} |
+ {GlobalVariableReference} |
+ {CompartmentReference} |
+ {ModelParamReference}
+;
+
+LocalVariableReference:
+ {DefStatementReference} obj=[DefStatement]
+;
+
+CompartmentReference:
+ obj=[metamodel::Compartment] | {AbsoluteCompartmentValueReference} | {RelativeCompartmentValueReference}
+;
+
+ModelParamReference:
+ obj=[metamodel::ModelParam]
+;
+
+
+GlobalVariable:
+ name=ID
+;
+
+// Commented out since it breaks expressions with '-' sign.
+//terminal TRANS_STMT returns ecore::EString:
+// ID '->' ID
+//;
+
+terminal BOOLEAN returns ecore::EBoolean:
+ ("true")|("false")
+;
+
+terminal NUMBER returns ecore::EDouble:
+ (('0'..'9')+ ('.' ('0'..'9')*)? | '.' ('0'..'9')+)
+ (('e' | 'E') ('+' | '-')? ('0'..'9')+)?;
+
+terminal INT returns ecore::EInt:
+ 'this one has been deactivated'; \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLRuntimeModule.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLRuntimeModule.java
new file mode 100644
index 000000000..9dc0b86b5
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLRuntimeModule.java
@@ -0,0 +1,31 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl;
+
+import org.eclipse.stem.model.ctdl.scoping.MetamodelContextLinker;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.resource.XtextResource;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class CTDLRuntimeModule extends org.eclipse.stem.model.ctdl.AbstractCTDLRuntimeModule {
+
+ // contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+ @Override
+ public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+ return org.eclipse.xtext.resource.impl.SimpleResourceDescriptionsBasedContainerManager.class;
+ }
+
+
+ @Override
+ public Class<? extends ILinkingService> bindILinkingService() {
+ return MetamodelContextLinker.class;
+ }
+
+ @Override
+ public Class<? extends XtextResource> bindXtextResource() {
+ return ContextSensitiveResourceWrapper.class;
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLStandaloneSetup.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLStandaloneSetup.java
new file mode 100644
index 000000000..7d6513ca8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLStandaloneSetup.java
@@ -0,0 +1,14 @@
+
+package org.eclipse.stem.model.ctdl;
+
+/**
+ * Initialization support for running Xtext languages
+ * without equinox extension registry
+ */
+public class CTDLStandaloneSetup extends CTDLStandaloneSetupGenerated{
+
+ public static void doSetup() {
+ new CTDLStandaloneSetup().createInjectorAndDoEMFRegistration();
+ }
+}
+
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLUtils.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLUtils.java
new file mode 100644
index 000000000..31aa14798
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/CTDLUtils.java
@@ -0,0 +1,151 @@
+package org.eclipse.stem.model.ctdl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.CompartmentGroup;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.ModelParam;
+
+public class CTDLUtils
+{
+ private static final Map<String, Class<?>> GLOBAL_USER_VARS = new HashMap<String, Class<?>>();
+ private static final Map<String, Class<?>> GLOBAL_SYSTEM_VARS = new HashMap<String, Class<?>>();
+ static
+ {
+ GLOBAL_USER_VARS.put("timeDelta", long.class);
+ GLOBAL_USER_VARS.put("t", double.class);
+
+ GLOBAL_SYSTEM_VARS
+ .put("time", org.eclipse.stem.core.model.STEMTime.class);
+ GLOBAL_SYSTEM_VARS.put("labelValue",
+ org.eclipse.stem.core.graph.LabelValue.class);
+ GLOBAL_SYSTEM_VARS.put("node",
+ org.eclipse.stem.core.graph.Node.class);
+
+ }
+
+ public static Class<?> getTypeForGlobalVariable(String name)
+ {
+ Class<?> type = GLOBAL_USER_VARS.get(name);
+ if (type == null) {
+ type = GLOBAL_SYSTEM_VARS.get(name);
+ }
+ return type;
+ }
+
+ public static Map<String, Class<?>> getGlobalUserVariables()
+ {
+ return Collections.unmodifiableMap(GLOBAL_USER_VARS);
+ }
+
+ public static Map<String, Class<?>> getGlobalSystemVariables()
+ {
+ return Collections.unmodifiableMap(GLOBAL_SYSTEM_VARS);
+ }
+
+ public static String getNormalizedTypeNameForClass(Class<?> clazz)
+ {
+ if (clazz == null) {
+ return null;
+ }
+
+ if (isNumber(clazz)) {
+ return "number";
+ } else if (clazz == String.class) {
+ return "string";
+ } else {
+ return clazz.getName();
+ }
+ }
+
+ public static String getNormalizedTypeNameForClass(String className)
+ {
+ if (className == null) {
+ return null;
+ }
+
+ if (isNumber(className)) {
+ return "number";
+ } else if (String.class.getName().equals(className)) {
+ return "string";
+ } else {
+ return className;
+ }
+ }
+
+ public static List<String> classTypeNames = Arrays.asList(new String[] {
+ "double", "int", "float", "long", "short",
+ "java.lang.Double", "java.lang.Integer", "java.lang.Float", "java.lang.Long",
+ "java.lang.Short"
+ });
+
+ public static boolean isNumber(String className)
+ {
+ return classTypeNames.contains(className);
+ }
+
+ public static boolean isNumber(Class<?> clazz)
+ {
+ return (clazz == double.class || clazz == Double.class ||
+ clazz == int.class || clazz == Integer.class ||
+ clazz == float.class || clazz == Float.class ||
+ clazz == long.class || clazz == Long.class ||
+ clazz == short.class || clazz == Short.class);
+
+ }
+
+ public static List<Compartment> getAllCompartmentsForGroup(
+ CompartmentGroup cg) {
+ List<Compartment> compartments = new ArrayList<Compartment>();
+ if (cg != null) {
+ compartments.addAll(getAllCompartmentsForGroup(cg.getParentGroup()));
+ compartments.addAll(cg.getCompartments());
+
+ }
+ return compartments;
+ }
+
+ public static List<Compartment> getAllCompartmentsForModel(Model model) {
+ return getAllCompartmentsForGroup(model.getCompartments());
+ }
+
+ public static List<ModelParam> getAllParametersForModel(Model model) {
+ List<ModelParam> params = new ArrayList<ModelParam>();
+ if (model != null) {
+ params.addAll(getAllParametersForModel(model.getParentModel()));
+ params.addAll(model.getParameters());
+ }
+ return params;
+ }
+
+ public static String ucfirst(String str)
+ {
+ if (str.length() > 0 && Character.isLowerCase(str.codePointAt(0))) {
+ StringBuilder sb = new StringBuilder();
+ sb.appendCodePoint(Character.toUpperCase(str.codePointAt(0)));
+ sb.append(str.substring(1));
+ return sb.toString();
+ }
+
+ return str;
+ }
+
+ public static String lcfirst(String str)
+ {
+ if (str.length() > 0 && Character.isUpperCase(str.codePointAt(0))) {
+ StringBuilder sb = new StringBuilder();
+ sb.appendCodePoint(Character.toLowerCase(str.codePointAt(0)));
+ sb.append(str.substring(1));
+ return sb.toString();
+ }
+
+ return str;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/ContextSensitiveResourceWrapper.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/ContextSensitiveResourceWrapper.java
new file mode 100644
index 000000000..90778707e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/ContextSensitiveResourceWrapper.java
@@ -0,0 +1,39 @@
+package org.eclipse.stem.model.ctdl;
+
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.linking.lazy.LazyLinkingResource;
+
+public class ContextSensitiveResourceWrapper extends LazyLinkingResource
+{
+ protected Model model;
+ protected Transition transition;
+
+ public ContextSensitiveResourceWrapper()
+ {
+ }
+
+ public Model getModel()
+ {
+ return model;
+ }
+
+ public Transition getTransition()
+ {
+ return transition;
+ }
+
+
+ public void setTransition(Transition transition)
+ {
+ this.transition = transition;
+
+ if (transition != null) {
+ model = transition.getContainerModel();
+ } else {
+ model = null;
+ }
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2 b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2
new file mode 100644
index 000000000..1174498bf
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/GenerateCTDL.mwe2
@@ -0,0 +1,157 @@
+module org.eclipse.stem.model.ctdl.GenerateCTDL
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/eclipse/stem/model/ctdl/CTDL.xtext"
+var file.extensions = "sctd"
+var projectName = "org.eclipse.stem.model.ctdl"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+ bean = StandaloneSetup {
+ uriMap = { from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"
+ to = "classpath:/model/Ecore.ecore"
+ }
+ uriMap = { from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel"
+ to = "classpath:/model/Ecore.genmodel"
+ }
+ scanClassPath = true
+ platformUri = "${runtimeProject}/.."
+ // The following two lines can be removed, if Xbase is not used.
+ //registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
+ //registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+
+ // Includes the STEM Metamodel Ecore definition
+ registerGeneratedEPackage = "org.eclipse.stem.model.metamodel.MetamodelPackage"
+ registerGenModelFile = "platform:/resource/org.eclipse.stem.model/model/metamodel.genmodel"
+
+ // Include the External Functions Ecore definition
+ registerGeneratedEPackage = "org.eclipse.stem.model.ctdl.functions.ExternalFunctionsPackage"
+ registerGenModelFile = "platform:/resource/org.eclipse.stem.model.ctdl.functions/model/ExternalFunctions.genmodel"
+
+ // Uncomment to restore Xbase support
+ //registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
+ //registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}/src-gen"
+ }
+
+ component = DirectoryCleaner {
+ directory = "${runtimeProject}.ui/src-gen"
+ }
+
+ component = Generator {
+ pathRtProject = runtimeProject
+ pathUiProject = "${runtimeProject}.ui"
+ //pathTestProject = "${runtimeProject}.tests"
+ projectNameRt = projectName
+ projectNameUi = "${projectName}.ui"
+ language = {
+ uri = grammarURI
+ fileExtensions = file.extensions
+
+ // Java API to access grammar elements (required by several other fragments)
+ fragment = grammarAccess.GrammarAccessFragment {}
+
+ // generates Java API for the generated EPackages
+ fragment = ecore.EcoreGeneratorFragment {
+ // referencedGenModels = "
+ // platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel,
+ // platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel
+ // "
+ }
+
+ // Serializer 2.0
+ fragment = serializer.SerializerFragment {
+ generateStub = false
+ }
+
+ // the serialization component (1.0)
+ // fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+
+ // a custom ResourceFactory for use with EMF
+ fragment = resourceFactory.ResourceFactoryFragment {
+ fileExtensions = file.extensions
+ }
+
+ // The antlr parser generator fragment.
+ fragment = parser.antlr.XtextAntlrGeneratorFragment {
+ // options = {
+ // backtrack = true
+ // }
+ }
+
+ // java-based API for validation
+ fragment = validation.JavaValidatorFragment {
+ // composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+ // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+ }
+
+ // scoping and exporting API
+ // fragment = scoping.ImportURIScopingFragment {}
+ // fragment = exporting.SimpleNamesFragment {}
+
+ // scoping and exporting API
+ fragment = scoping.ImportNamespacesScopingFragment {}
+ fragment = exporting.QualifiedNamesFragment {}
+ fragment = builder.BuilderIntegrationFragment {}
+
+ // generator API
+ fragment = generator.GeneratorFragment {
+ generateMwe = false
+ generateJavaMain = false
+ }
+
+ // formatter API
+ fragment = formatting.FormatterFragment {}
+
+ // labeling API
+ fragment = labeling.LabelProviderFragment {}
+
+ // outline API
+ fragment = outline.OutlineTreeProviderFragment {}
+ fragment = outline.QuickOutlineFragment {}
+
+ // quickfix API
+ fragment = quickfix.QuickfixProviderFragment {}
+
+ // content assist API
+ fragment = contentAssist.JavaBasedContentAssistFragment {}
+
+ // generates a more lightweight Antlr parser and lexer tailored for content assist
+ fragment = parser.antlr.XtextAntlrUiGeneratorFragment {}
+
+ // generates junit test support classes into Generator#pathTestProject
+ //fragment = junit.Junit4Fragment {}
+
+ // project wizard (optional)
+ // fragment = projectWizard.SimpleProjectWizardFragment {
+ // generatorProjectName = "${projectName}"
+ // modelFileExtension = file.extensions
+ // }
+
+ // rename refactoring
+ fragment = refactoring.RefactorElementNameFragment {}
+
+ // provides the necessary bindings for java types integration
+ fragment = types.TypesGeneratorFragment {}
+
+ // generates the required bindings only if the grammar inherits from Xbase
+ fragment = xbase.XbaseGeneratorFragment {}
+
+ // provides a preference page for template proposals
+ fragment = templates.CodetemplatesGeneratorFragment {}
+
+ // provides a compare view
+ fragment = compare.CompareFragment {
+ fileExtensions = file.extensions
+ }
+
+ }
+ }
+}
+
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/formatting/CTDLFormatter.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/formatting/CTDLFormatter.java
new file mode 100644
index 000000000..323fc9931
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/formatting/CTDLFormatter.java
@@ -0,0 +1,27 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+
+/**
+ * This class contains custom formatting description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ *
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class CTDLFormatter extends AbstractDeclarativeFormatter {
+
+ @Override
+ protected void configureFormatting(FormattingConfig c) {
+// It's usually a good idea to activate the following three statements.
+// They will add and preserve newlines around comments
+// c.setLinewrap(0, 1, 2).before(getGrammarAccess().getSL_COMMENTRule());
+// c.setLinewrap(0, 1, 2).before(getGrammarAccess().getML_COMMENTRule());
+// c.setLinewrap(0, 1, 1).after(getGrammarAccess().getML_COMMENTRule());
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.xtend b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.xtend
new file mode 100644
index 000000000..59c406d1e
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.xtend
@@ -0,0 +1,175 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.generator
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement
+import org.eclipse.stem.model.ctdl.ctdl.Div
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference
+import org.eclipse.stem.model.ctdl.ctdl.Minus
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference
+import org.eclipse.stem.model.ctdl.ctdl.Multi
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral
+import org.eclipse.stem.model.ctdl.ctdl.Plus
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference
+import org.eclipse.xtend.lib.Property
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.generator.IGenerator
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression
+
+class CTDLGenerator implements IGenerator {
+
+ @Property GenModel genModel;
+
+ def String addImport(String fqn)
+ {
+ if (genModel != null) {
+ return genModel.getImportedName(fqn);
+ } else {
+ return fqn;
+ }
+ }
+
+ override void doGenerate(Resource resource, IFileSystemAccess fsa) {
+
+ var ctd = resource.allContents.toIterable.filter(typeof(CompartmentTransitionDefinitions)).head;
+ var mm = ctd.metamodel
+ var trans = mm.transition
+
+ var fname = trans.source.name +"_"+ trans.target.name;
+
+ fsa.generateFile(fname, resource.compile());
+ }
+
+ def dispatch compile(Resource r) '''«r.allContents.toIterable.filter(typeof(TransitionBlock)).head.compile()»'''
+// var ret = ""; //"public class "+name+ "{"+"\n";
+// return ;
+
+
+ def dispatch compile(TransitionBlock t) {
+ var ctd = t.eContainer as CompartmentTransitionDefinitions
+// var modelClass = ctd.metamodel.model.class_.instanceTypeName
+// if (modelClass == null) {
+// modelClass = ctd.metamodel.model.class_.name
+// }
+ var labelValueClass = ctd.metamodel.model.compartments.valueClass.instanceTypeName
+ if (labelValueClass == null) {
+ labelValueClass = ctd.metamodel.model.compartments.valueClass.name
+ } else {
+ labelValueClass = addImport(labelValueClass);
+ }
+ var transition = ctd.metamodel.transition
+
+ //var Model m = (CompartmentTransitionDefinitions::)t.eContainer;
+ return '''
+ protected double «transition.source.name+"_"+transition.target.name» (
+ double t,
+ long timeDelta,
+ «addImport("org.eclipse.stem.core.model.STEMTime")» time,
+ «labelValueClass» labelValue,
+ «addImport("org.eclipse.stem.core.graph.Node")» node) {
+ «FOR s:t.block.statements»«compile(s)»«ENDFOR»
+ return «compile(t.block.ret)»;
+ }
+ ''' as CharSequence
+
+ }
+
+ def dispatch compile(DefStatement d)'''double «d.varname»=«compile(d.expr)»;'''
+
+ def dispatch compile(Evaluation e) '''«compile(e.expression)»'''
+
+ def dispatch compile(PrimaryExpression pe) {
+ var neg = ""
+ if (pe.negate) neg = "-"
+ return '''
+ («neg»«compile(pe.exp)»)
+ ''' as CharSequence
+ }
+
+ def dispatch compile(Plus p) '''(«compile(p.left)»+«compile(p.right)»)'''
+
+ def dispatch compile(Minus m) '''(«compile(m.left)»-«compile(m.right)»)'''
+
+ def dispatch compile(Multi m) '''«compile(m.left)»*«compile(m.right)»'''
+
+ def dispatch compile(Div d) '''«compile(d.left)»/«compile(d.right)»'''
+
+ def dispatch compile(GlobalVariableReference rf) '''«rf.name»'''
+
+ def dispatch compile(LocalVariableReference rf) '''«rf.name»'''
+
+ def dispatch compile(AbsoluteCompartmentValueReference rf) '''labelValue.get«rf.obj.name.toFirstUpper»()'''
+
+ def dispatch compile(RelativeCompartmentValueReference rf) '''labelValue.get«rf.obj.name.toFirstUpper»()/labelValue.getPopulationCount()'''
+
+ def dispatch compile(ModelParamReference rf) '''get«rf.obj.name.toFirstUpper»()'''
+
+ def dispatch compile(VariableReference rf) '''«compile(rf.ref)»'''
+
+ def dispatch compile(NumberLiteral nl) '''«nl.value»'''
+
+ def dispatch compile(StringLiteral sl) '''"«sl.value»"'''
+
+ def dispatch compile(BooleanLiteral bl) '''«bl.value»'''
+
+
+// def dispatch compile(FunctionCall fc) ''' java.lang.Math.«fc.func»(
+// �FOR e:fc.args�
+// �IF e==fc.args.head�
+// �compile(e)�
+// �ELSE�
+// ,�compile(e)�
+// �ENDIF�
+// �ENDFOR�)'''
+
+ def dispatch compileArgument( SystemArgumentReference arg, FunctionCall fc) '''«arg.mapsFrom»'''
+
+ def dispatch compileArgument(FunctionArgumentReference arg, FunctionCall fc) '''«compile(fc.args.get(arg.argIndex))»'''
+
+ def dispatch compileFunction(ExternalFunctionReference fcr, FunctionCall fc)
+ '''«addImport(fcr.func.className)».«fcr.func.methodName»(
+ «FOR arg:fcr.func.javaMethodArguments»
+ «IF arg!=fcr.func.javaMethodArguments.head»,«ENDIF»
+ «compileArgument(arg,fc)»
+ «ENDFOR»)'''
+
+
+
+ def dispatch compileFunction(FunctionReference fcr, FunctionCall fc)
+ '''«fcr.name»(«FOR e:fc.args»
+ «IF e==fc.args.head»
+ «compile(e)»
+ «ELSE»
+ ,«compile(e)»
+ «ENDIF»
+ «ENDFOR»)'''
+
+
+
+ def dispatch compile(FunctionCall fc) {
+ '''«compileFunction(fc.ref, fc)»'''
+// if (fc.ref instanceof ExternalFunctionReference) {
+// '''«compile(fc.ref as ExternalFunctionReference, fc)»'''
+// } else {
+// '''«compile(fc.ref, fc)»'''
+// }
+ }
+
+ //def dispatch compile(ExternalFunctionDefinition extFunc) '''«addImport(extFunc.className)».«extFunc.methodName»'''
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/CTDLScopeProvider.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/CTDLScopeProvider.java
new file mode 100644
index 000000000..e05e23320
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/CTDLScopeProvider.java
@@ -0,0 +1,241 @@
+/*
+ * generated by Xtext
+ */
+package org.eclipse.stem.model.ctdl.scoping;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.stem.model.ctdl.CTDLUtils;
+import org.eclipse.stem.model.ctdl.ContextSensitiveResourceWrapper;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatementReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.ModelParam;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.scoping.impl.FilteringScope;
+import org.eclipse.xtext.scoping.impl.MultimapBasedScope;
+
+import com.google.common.base.Predicate;
+
+/**
+ * This class contains custom scoping description.
+ *
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it
+ *
+ */
+public class CTDLScopeProvider extends AbstractDeclarativeScopeProvider {
+
+
+// private Package metamodel;
+ private Model model;
+ //private Transition transition;
+
+ public void setTransition(Transition transition)
+ {
+ //this.transition = transition;
+
+ if (transition != null) {
+ model = transition.getContainerModel();
+ } else {
+ model = null;
+ }
+
+// if (model != null) {
+// metamodel = model.getContainerPackage();
+// } else {
+// metamodel = null;
+// }
+ }
+
+
+ @Override
+ public IScope getScope(final EObject context, final EReference reference) {
+ IScope scope = super.getScope(context, reference);
+ return scope;
+
+ }
+
+
+ IScope scope_ScopedVariableReference(final Block context, final EReference reference)
+ {
+ ResourceSet rs = new ResourceSetImpl();
+ Resource resource = rs.createResource(URI.createURI("empty.sctd"));
+
+ List<IEObjectDescription> objs = new ArrayList<IEObjectDescription>();
+
+ for (DefStatement s : context.getStatements()) {
+ DefStatementReference ref = CtdlFactory.eINSTANCE.createDefStatementReference();
+ ref.setName(s.getVarname());
+ ref.setObj(s);
+ objs.add(new EObjectDescription(QualifiedName.create(s.getVarname()), ref, Collections.<String,String>emptyMap()));
+ resource.getContents().add(ref);
+ }
+
+ for (Map.Entry<String, Class<?>> param : CTDLUtils.getGlobalUserVariables().entrySet()) {
+ GlobalVariableReference ref = CtdlFactory.eINSTANCE.createGlobalVariableReference();
+ ref.setName(param.getKey());
+ objs.add(new EObjectDescription(QualifiedName.create(param.getKey()), ref, Collections.<String,String>emptyMap()));
+ resource.getContents().add(ref);
+ }
+
+ Model model = getModelForContext(context);
+ if (model == null) {
+ model = this.model;
+ }
+
+ if (model != null) {
+ for (ModelParam param : CTDLUtils.getAllParametersForModel(model)) {
+ ModelParamReference ref = CtdlFactory.eINSTANCE.createModelParamReference();
+ ref.setObj(param);
+ ref.setName(param.getName());
+ objs.add(new EObjectDescription(QualifiedName.create(param.getName()), ref, Collections.<String,String>emptyMap()));
+ resource.getContents().add(ref);
+ }
+
+ for (Compartment compartment : CTDLUtils.getAllCompartmentsForModel(model)) {
+ CompartmentReference rcvRef = CtdlFactory.eINSTANCE.createRelativeCompartmentValueReference();
+ rcvRef.setObj(compartment);
+ rcvRef.setName(CTDLUtils.lcfirst(compartment.getName()));
+ objs.add(new EObjectDescription(QualifiedName.create(rcvRef.getName()), rcvRef, Collections.<String,String>emptyMap()));
+ resource.getContents().add(rcvRef);
+
+ CompartmentReference avcRef = CtdlFactory.eINSTANCE.createAbsoluteCompartmentValueReference();
+ avcRef.setObj(compartment);
+ avcRef.setName(CTDLUtils.ucfirst(compartment.getName()));
+ objs.add(new EObjectDescription(QualifiedName.create(avcRef.getName()), avcRef, Collections.<String,String>emptyMap()));
+ resource.getContents().add(avcRef);
+ }
+ }
+
+
+
+ //System.out.println(context.getClass() +"/"+ reference);
+
+ return new FilteringScope(MultimapBasedScope.createScope(getDelegate().getScope(context, reference), objs, false),
+ new Predicate<IEObjectDescription>() {
+ public boolean apply(IEObjectDescription input) {
+ return true;
+ };
+ });
+ }
+
+ IScope scope_FunctionReference(final Block context, final EReference reference) {
+
+ IScope parent = getDelegate().getScope(context, reference);
+
+ return new FilteringScope(new ExtensionAwareScope(parent, context),
+ new Predicate<IEObjectDescription>() {
+ public boolean apply(IEObjectDescription input) {
+ return input!=null && input.getName()!=null && input.getName().getSegmentCount()==1;
+ };
+ });
+ }
+
+ private Model getModelForContext(EObject context) {
+ EObject root = context;
+ while (root.eContainer() != null) {
+ root = root.eContainer();
+ }
+
+ CompartmentTransitionDefinitions def = null;
+ if (root instanceof CompartmentTransitionDefinitions) {
+ def = (CompartmentTransitionDefinitions)root;
+ } else {
+ TreeIterator<EObject> te = root.eAllContents();
+ while (te.hasNext()) {
+ EObject obj = te.next();
+ if (obj instanceof CompartmentTransitionDefinitions) {
+ return ((CompartmentTransitionDefinitions)obj).getMetamodel().getModel();
+ }
+ }
+ }
+
+ Model model = null;
+ if (def != null && def.getMetamodel() != null) {
+ model = def.getMetamodel().getModel();
+ }
+ if (model == null && context.eResource() instanceof ContextSensitiveResourceWrapper) {
+ model = ((ContextSensitiveResourceWrapper)context.eResource()).getModel();
+ }
+ return model;
+ }
+
+ IScope scope_Transition(final TransitionBlock context, final EReference reference)
+ {
+ Model model = ((CompartmentTransitionDefinitions)context.eContainer()).getMetamodel().getModel();
+
+ List<IEObjectDescription> objs = new ArrayList<IEObjectDescription>();
+ if (model != null) {
+ for (Transition t : model.getTransitions()) {
+ objs.add(new EObjectDescription(QualifiedName.create(t.getSource().getName() +"->"+ t.getTarget().getName()), t, Collections.<String,String>emptyMap()));
+
+ }
+ }
+ return MultimapBasedScope.createScope(IScope.NULLSCOPE, objs, true);
+ }
+
+ /*IScope scope_Compartment(final Transition context, final EReference reference) {
+
+ // TODO Evil. There has to be a better way.
+ Model model = ((CompartmentTransitionDefinitions)((TransitionBlock)context.eContainer()).eContainer()).getMetamodel().getModel();
+
+ List<IEObjectDescription> objs = new ArrayList<IEObjectDescription>();
+ if (model != null) {
+ for (Compartment c : STEMDSLUtils.getAllCompartmentsForModel(model)) {
+ objs.add(new EObjectDescription(QualifiedName.create(c.getName()), c, Collections.<String,String>emptyMap()));
+ }
+ }
+
+ return MultimapBasedScope.createScope(IScope.NULLSCOPE, objs, true);
+ //return getScope(context,reference);
+ }*/
+
+ IScope scope_Package(final MetamodelResource context, final EReference reference) {
+
+ //EObject obj = ((InternalEObject)MetamodelFactory.eINSTANCE.createPackage()).eSetProxyURI(uri);
+ List<IEObjectDescription> objs = new ArrayList<IEObjectDescription>();
+
+ return MultimapBasedScope.createScope(IScope.NULLSCOPE, objs, true);
+ }
+
+
+ IScope scope_Model(final MetamodelResource context, final EReference reference) {
+
+ List<IEObjectDescription> objs = new ArrayList<IEObjectDescription>();
+
+ if (context.getPackage() != null) {
+ for (Model model : context.getPackage().getModels()) {
+ objs.add(new EObjectDescription(QualifiedName.create(model.getName()), model, Collections.<String,String>emptyMap()));
+ }
+ }
+
+ return MultimapBasedScope.createScope(IScope.NULLSCOPE, objs, true);
+
+ //return getScope(context,reference);
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/ExtensionAwareScope.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/ExtensionAwareScope.java
new file mode 100644
index 000000000..81816db2a
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/ExtensionAwareScope.java
@@ -0,0 +1,130 @@
+package org.eclipse.stem.model.ctdl.scoping;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.stem.model.ctdl.CTDLUtils;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgument;
+import org.eclipse.stem.model.ctdl.functions.FunctionDefinitionLoader;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.AbstractScope;
+
+public class ExtensionAwareScope extends AbstractScope
+{
+ final List<IEObjectDescription> addedOn;
+
+ public ExtensionAwareScope(IScope delegate, EObject ctx) {
+ super(delegate, true);
+ ResourceSet rs = new ResourceSetImpl();
+ Resource resource = rs.createResource(URI.createURI("empty.sctd"));
+
+ addedOn = new ArrayList<IEObjectDescription>();
+ for (ExternalFunctionDefinition def : FunctionDefinitionLoader.getInstance().getDefinitions()) {
+ ExternalFunctionReference ref = CtdlFactory.eINSTANCE.createExternalFunctionReference();
+ ref.setFunc(def);
+ ref.setName(def.getName());
+ resource.getContents().add(ref);
+ addedOn.add(EObjectDescription.create(QualifiedName.create(getSignatureForFunctionDefinition(def)), ref));
+ }
+ }
+
+ private String getSignatureForFunctionDefinition(ExternalFunctionDefinition def)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(def.getName());
+ sb.append("(");
+ EList<FunctionArgument> args = def.getFunctionArguments();
+ int paramCount = args.size();
+ for (int idx=0; idx<args.size(); idx++) {
+ sb.append(CTDLUtils.getNormalizedTypeNameForClass(args.get(idx).getType()));
+ if (idx < paramCount-1) {
+ sb.append(",");
+ }
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ protected Iterable<IEObjectDescription> getAllLocalElements() {
+ return addedOn;
+ }
+
+ @Override
+ protected Iterable<IEObjectDescription> getLocalElementsByEObject(
+ EObject object, URI uri) {
+ return super.getLocalElementsByEObject(object, uri);
+ }
+
+
+
+// private Collection<IEObjectDescription> addToIterable(final Iterable<IEObjectDescription> list, final Collection<IEObjectDescription> toAdd) {
+//
+// Collection<IEObjectDescription> retVal = null;
+// if (list instanceof Collection) {
+// retVal = (Collection<IEObjectDescription>)list;
+// } else {
+// retVal = new ArrayList<IEObjectDescription>();
+// for (IEObjectDescription desc : list) {
+// retVal.add(desc);
+// }
+// }
+//
+// retVal.addAll(toAdd);
+// return retVal;
+// }
+//
+// @Override
+// public Iterable<IEObjectDescription> getAllElements() {
+// return addToIterable(super.getAllElements(), addedOn);
+// }
+//
+// @Override
+// public Iterable<IEObjectDescription> getElements(EObject object) {
+// List<IEObjectDescription> toAdd = new ArrayList<IEObjectDescription>();
+// for (IEObjectDescription obj : addedOn) {
+// if (obj.getEObjectOrProxy() != null && obj.getEObjectOrProxy().equals(object)) {
+// toAdd.add(obj);
+// }
+// }
+// return addToIterable(super.getElements(object), toAdd);
+// }
+//
+// @Override
+// public Iterable<IEObjectDescription> getElements(QualifiedName name) {
+// List<IEObjectDescription> toAdd = new ArrayList<IEObjectDescription>();
+// for (IEObjectDescription obj : addedOn) {
+// if (obj.getQualifiedName() != null && obj.getQualifiedName().equals(name)) {
+// toAdd.add(obj);
+// }
+// }
+//
+// return addToIterable(super.getElements(name), toAdd);
+// }
+//
+// @Override
+// public IEObjectDescription getSingleElement(EObject object) {
+// return super.getSingleElement(object);
+// }
+//
+// @Override
+// public IEObjectDescription getSingleElement(QualifiedName name) {
+// return super.getSingleElement(name);
+// }
+
+
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/MetamodelContextLinker.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/MetamodelContextLinker.java
new file mode 100644
index 000000000..daa3418b0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/scoping/MetamodelContextLinker.java
@@ -0,0 +1,166 @@
+package org.eclipse.stem.model.ctdl.scoping;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.model.ctdl.CTDLUtils;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentReference;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlFactory;
+import org.eclipse.stem.model.ctdl.ctdl.CtdlPackage;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+import org.eclipse.stem.model.ctdl.functions.STEMDSLUtils;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Package;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtext.linking.impl.DefaultLinkingService;
+import org.eclipse.xtext.linking.impl.IllegalNodeException;
+import org.eclipse.xtext.nodemodel.INode;
+
+
+public class MetamodelContextLinker extends DefaultLinkingService {
+
+ private Package metamodel;
+ private Model model;
+ private Transition transition;
+
+ public void setTransition(Transition transition)
+ {
+ this.transition = transition;
+
+ if (transition != null) {
+ model = transition.getContainerModel();
+ } else {
+ model = null;
+ }
+
+ if (model != null) {
+ metamodel = model.getContainerPackage();
+ } else {
+ metamodel = null;
+ }
+ }
+
+
+ @Override
+ public List<EObject> getLinkedObjects(EObject context, EReference ref,
+ INode node) throws IllegalNodeException {
+ if (context instanceof CompartmentTransitionDefinitions && ref.getEReferenceType() == CtdlPackage.Literals.METAMODEL_RESOURCE) {
+
+ MetamodelResource mmrs = CtdlFactory.eINSTANCE.createMetamodelResource();
+
+ mmrs.setModel(model);
+ mmrs.setPackage(metamodel);
+ mmrs.setTransition(transition);
+
+ return Collections.singletonList((EObject)mmrs);
+
+// if (ref.getEReferenceType() == MetamodelPackage.Literals.PACKAGE) {
+// if (metamodel != null) {
+// return Collections.singletonList((EObject)metamodel);
+// } else {
+// // if we're loading a metamodel package, skip scoping and load it directly
+// String path = getCrossRefNodeAsString(node);
+//
+// try {
+// ResourceSet rs = new ResourceSetImpl();
+// Resource r = rs.createResource(URI.createURI(path));
+// r.load(Collections.emptyMap());
+// EcoreUtil.resolveAll(r);
+// return Collections.singletonList(r.getContents().get(0));
+// } catch (IOException ioe) {
+// ioe.printStackTrace();
+// }
+// }
+// } else if (ref.getEReferenceType() == MetamodelPackage.Literals.MODEL
+// && model != null) {
+// return Collections.singletonList((EObject)model);
+// } else if (ref.getEReferenceType() == MetamodelPackage.Literals.TRANSITION
+// && transition != null) {
+// return Collections.singletonList((EObject)transition);
+// }
+ }
+
+ return super.getLinkedObjects(context, ref, node);
+
+ }
+
+ @Override
+ public String getCrossRefNodeAsString(INode node) throws IllegalNodeException {
+ String result = super.getCrossRefNodeAsString(node);
+ EObject element = node.getSemanticElement();
+// if (element instanceof TransitionBlock) {
+// result = result.replace("->", ",");
+// }
+ if (element instanceof FunctionCall) {
+ FunctionCall fc = (FunctionCall) element;
+
+ StringBuilder sb = new StringBuilder(result);
+ sb.append("(");
+ boolean first = true;
+ for(Expression expr : fc.getArgs()) {
+ if (!first) {
+ sb.append(",");
+ }
+ if (expr instanceof StringLiteral) {
+ sb.append("string");
+ } else if (expr instanceof BooleanLiteral) {
+ sb.append("boolean");
+ } else if (expr instanceof VariableReference) {
+ sb.append(getTypeForVariableReference((VariableReference)expr));
+ } else if (expr instanceof FunctionCall) {
+ sb.append(getTypeForFunctionReference(((FunctionCall) expr).getRef()));
+ } else {
+ sb.append("number");
+ }
+ first = false;
+ }
+ sb.append(")");
+
+ result = sb.toString();
+ }
+ return result;
+ }
+
+ private String getTypeForFunctionReference(FunctionReference var) {
+ Class<?> refType = null;
+ if (var instanceof ExternalFunctionReference) {
+ refType = ((ExternalFunctionReference) var).getFunc().getReturnType();
+ } else {
+ refType = double.class;
+ }
+ return CTDLUtils.getNormalizedTypeNameForClass(refType);
+ }
+
+ private String getTypeForVariableReference(VariableReference var) {
+
+ ScopedVariableReference ref = var.getRef();
+ Class<?> refType = double.class;
+ if (ref != null) {
+ if (ref instanceof CompartmentReference) {
+ refType = ((CompartmentReference) ref).getObj().getDataType().getInstanceClass();
+ } else if (ref instanceof ModelParamReference) {
+ refType = ((ModelParamReference) ref).getObj().getDataType().getInstanceClass();
+ } else if (ref instanceof LocalVariableReference) {
+ // TODO handle non-double local vars
+ } else if (ref instanceof GlobalVariableReference) {
+ refType = STEMDSLUtils.getTypeForGlobalVariable(ref.getName());
+ }
+ }
+
+ return CTDLUtils.getNormalizedTypeNameForClass(refType);
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/validation/CTDLJavaValidator.java b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/validation/CTDLJavaValidator.java
new file mode 100644
index 000000000..597e772e1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/src/org/eclipse/stem/model/ctdl/validation/CTDLJavaValidator.java
@@ -0,0 +1,13 @@
+package org.eclipse.stem.model.ctdl.validation;
+
+
+public class CTDLJavaValidator extends AbstractCTDLJavaValidator {
+
+// @Check
+// public void checkGreetingStartsWithCapital(Greeting greeting) {
+// if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+// warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
+// }
+// }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/.CTDLGenerator.java._trace b/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/.CTDLGenerator.java._trace
new file mode 100644
index 000000000..2fc383903
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/.CTDLGenerator.java._trace
Binary files differ
diff --git a/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.java b/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.java
new file mode 100644
index 000000000..717ee37f5
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ctdl/xtend-gen/org/eclipse/stem/model/ctdl/generator/CTDLGenerator.java
@@ -0,0 +1,506 @@
+package org.eclipse.stem.model.ctdl.generator;
+
+import com.google.common.base.Objects;
+import com.google.common.collect.Iterables;
+import java.util.Arrays;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.stem.model.ctdl.ctdl.AbsoluteCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.Block;
+import org.eclipse.stem.model.ctdl.ctdl.BooleanLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.CompartmentTransitionDefinitions;
+import org.eclipse.stem.model.ctdl.ctdl.DefStatement;
+import org.eclipse.stem.model.ctdl.ctdl.Div;
+import org.eclipse.stem.model.ctdl.ctdl.Evaluation;
+import org.eclipse.stem.model.ctdl.ctdl.Expression;
+import org.eclipse.stem.model.ctdl.ctdl.ExternalFunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionCall;
+import org.eclipse.stem.model.ctdl.ctdl.FunctionReference;
+import org.eclipse.stem.model.ctdl.ctdl.GlobalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.LocalVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.MetamodelResource;
+import org.eclipse.stem.model.ctdl.ctdl.Minus;
+import org.eclipse.stem.model.ctdl.ctdl.ModelParamReference;
+import org.eclipse.stem.model.ctdl.ctdl.Multi;
+import org.eclipse.stem.model.ctdl.ctdl.NumberLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.Plus;
+import org.eclipse.stem.model.ctdl.ctdl.PrimaryExpression;
+import org.eclipse.stem.model.ctdl.ctdl.RelativeCompartmentValueReference;
+import org.eclipse.stem.model.ctdl.ctdl.ReturnStatement;
+import org.eclipse.stem.model.ctdl.ctdl.ScopedVariableReference;
+import org.eclipse.stem.model.ctdl.ctdl.StringLiteral;
+import org.eclipse.stem.model.ctdl.ctdl.TransitionBlock;
+import org.eclipse.stem.model.ctdl.ctdl.VariableReference;
+import org.eclipse.stem.model.ctdl.functions.ExternalFunctionDefinition;
+import org.eclipse.stem.model.ctdl.functions.FunctionArgumentReference;
+import org.eclipse.stem.model.ctdl.functions.JavaMethodArgument;
+import org.eclipse.stem.model.ctdl.functions.SystemArgumentReference;
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.CompartmentGroup;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.ModelParam;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.IteratorExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+public class CTDLGenerator implements IGenerator {
+ private GenModel _genModel;
+
+ public GenModel getGenModel() {
+ return this._genModel;
+ }
+
+ public void setGenModel(final GenModel genModel) {
+ this._genModel = genModel;
+ }
+
+ public String addImport(final String fqn) {
+ GenModel _genModel = this.getGenModel();
+ boolean _notEquals = (!Objects.equal(_genModel, null));
+ if (_notEquals) {
+ GenModel _genModel_1 = this.getGenModel();
+ return _genModel_1.getImportedName(fqn);
+ } else {
+ return fqn;
+ }
+ }
+
+ public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
+ TreeIterator<EObject> _allContents = resource.getAllContents();
+ Iterable<EObject> _iterable = IteratorExtensions.<EObject>toIterable(_allContents);
+ Iterable<CompartmentTransitionDefinitions> _filter = Iterables.<CompartmentTransitionDefinitions>filter(_iterable, CompartmentTransitionDefinitions.class);
+ CompartmentTransitionDefinitions ctd = IterableExtensions.<CompartmentTransitionDefinitions>head(_filter);
+ MetamodelResource mm = ctd.getMetamodel();
+ Transition trans = mm.getTransition();
+ Compartment _source = trans.getSource();
+ String _name = _source.getName();
+ String _plus = (_name + "_");
+ Compartment _target = trans.getTarget();
+ String _name_1 = _target.getName();
+ String fname = (_plus + _name_1);
+ CharSequence _compile = this.compile(resource);
+ fsa.generateFile(fname, _compile);
+ }
+
+ protected CharSequence _compile(final Resource r) {
+ StringConcatenation _builder = new StringConcatenation();
+ TreeIterator<EObject> _allContents = r.getAllContents();
+ Iterable<EObject> _iterable = IteratorExtensions.<EObject>toIterable(_allContents);
+ Iterable<TransitionBlock> _filter = Iterables.<TransitionBlock>filter(_iterable, TransitionBlock.class);
+ TransitionBlock _head = IterableExtensions.<TransitionBlock>head(_filter);
+ CharSequence _compile = this.compile(_head);
+ _builder.append(_compile, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final TransitionBlock t) {
+ EObject _eContainer = t.eContainer();
+ CompartmentTransitionDefinitions ctd = ((CompartmentTransitionDefinitions) _eContainer);
+ MetamodelResource _metamodel = ctd.getMetamodel();
+ Model _model = _metamodel.getModel();
+ CompartmentGroup _compartments = _model.getCompartments();
+ EClass _valueClass = _compartments.getValueClass();
+ String labelValueClass = _valueClass.getInstanceTypeName();
+ boolean _equals = Objects.equal(labelValueClass, null);
+ if (_equals) {
+ MetamodelResource _metamodel_1 = ctd.getMetamodel();
+ Model _model_1 = _metamodel_1.getModel();
+ CompartmentGroup _compartments_1 = _model_1.getCompartments();
+ EClass _valueClass_1 = _compartments_1.getValueClass();
+ String _name = _valueClass_1.getName();
+ labelValueClass = _name;
+ } else {
+ String _addImport = this.addImport(labelValueClass);
+ labelValueClass = _addImport;
+ }
+ MetamodelResource _metamodel_2 = ctd.getMetamodel();
+ Transition transition = _metamodel_2.getTransition();
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("protected double ");
+ Compartment _source = transition.getSource();
+ String _name_1 = _source.getName();
+ String _plus = (_name_1 + "_");
+ Compartment _target = transition.getTarget();
+ String _name_2 = _target.getName();
+ String _plus_1 = (_plus + _name_2);
+ _builder.append(_plus_1, "");
+ _builder.append(" (");
+ _builder.newLineIfNotEmpty();
+ _builder.append("double t, ");
+ _builder.newLine();
+ _builder.append("long timeDelta, ");
+ _builder.newLine();
+ String _addImport_1 = this.addImport("org.eclipse.stem.core.model.STEMTime");
+ _builder.append(_addImport_1, "");
+ _builder.append(" time,");
+ _builder.newLineIfNotEmpty();
+ _builder.append(labelValueClass, "");
+ _builder.append(" labelValue,");
+ _builder.newLineIfNotEmpty();
+ String _addImport_2 = this.addImport("org.eclipse.stem.core.graph.Node");
+ _builder.append(_addImport_2, "");
+ _builder.append(" node) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ {
+ Block _block = t.getBlock();
+ EList<DefStatement> _statements = _block.getStatements();
+ for(final DefStatement s : _statements) {
+ CharSequence _compile = this.compile(s);
+ _builder.append(_compile, " ");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("return ");
+ Block _block_1 = t.getBlock();
+ ReturnStatement _ret = _block_1.getRet();
+ CharSequence _compile_1 = this.compile(_ret);
+ _builder.append(_compile_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ return ((CharSequence) _builder);
+ }
+
+ protected CharSequence _compile(final DefStatement d) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("double ");
+ String _varname = d.getVarname();
+ _builder.append(_varname, "");
+ _builder.append("=");
+ Evaluation _expr = d.getExpr();
+ CharSequence _compile = this.compile(_expr);
+ _builder.append(_compile, "");
+ _builder.append(";");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final Evaluation e) {
+ StringConcatenation _builder = new StringConcatenation();
+ Expression _expression = e.getExpression();
+ CharSequence _compile = this.compile(_expression);
+ _builder.append(_compile, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final PrimaryExpression pe) {
+ String neg = "";
+ boolean _isNegate = pe.isNegate();
+ if (_isNegate) {
+ neg = "-";
+ }
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("(");
+ _builder.append(neg, "");
+ Expression _exp = pe.getExp();
+ CharSequence _compile = this.compile(_exp);
+ _builder.append(_compile, "");
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ return ((CharSequence) _builder);
+ }
+
+ protected CharSequence _compile(final Plus p) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("(");
+ Expression _left = p.getLeft();
+ CharSequence _compile = this.compile(_left);
+ _builder.append(_compile, "");
+ _builder.append("+");
+ Expression _right = p.getRight();
+ CharSequence _compile_1 = this.compile(_right);
+ _builder.append(_compile_1, "");
+ _builder.append(")");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final Minus m) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("(");
+ Expression _left = m.getLeft();
+ CharSequence _compile = this.compile(_left);
+ _builder.append(_compile, "");
+ _builder.append("-");
+ Expression _right = m.getRight();
+ CharSequence _compile_1 = this.compile(_right);
+ _builder.append(_compile_1, "");
+ _builder.append(")");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final Multi m) {
+ StringConcatenation _builder = new StringConcatenation();
+ Expression _left = m.getLeft();
+ CharSequence _compile = this.compile(_left);
+ _builder.append(_compile, "");
+ _builder.append("*");
+ Expression _right = m.getRight();
+ CharSequence _compile_1 = this.compile(_right);
+ _builder.append(_compile_1, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final Div d) {
+ StringConcatenation _builder = new StringConcatenation();
+ Expression _left = d.getLeft();
+ CharSequence _compile = this.compile(_left);
+ _builder.append(_compile, "");
+ _builder.append("/");
+ Expression _right = d.getRight();
+ CharSequence _compile_1 = this.compile(_right);
+ _builder.append(_compile_1, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final GlobalVariableReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _name = rf.getName();
+ _builder.append(_name, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final LocalVariableReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _name = rf.getName();
+ _builder.append(_name, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final AbsoluteCompartmentValueReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("labelValue.get");
+ Compartment _obj = rf.getObj();
+ String _name = _obj.getName();
+ String _firstUpper = StringExtensions.toFirstUpper(_name);
+ _builder.append(_firstUpper, "");
+ _builder.append("()");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final RelativeCompartmentValueReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("labelValue.get");
+ Compartment _obj = rf.getObj();
+ String _name = _obj.getName();
+ String _firstUpper = StringExtensions.toFirstUpper(_name);
+ _builder.append(_firstUpper, "");
+ _builder.append("()/labelValue.getPopulationCount()");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final ModelParamReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("get");
+ ModelParam _obj = rf.getObj();
+ String _name = _obj.getName();
+ String _firstUpper = StringExtensions.toFirstUpper(_name);
+ _builder.append(_firstUpper, "");
+ _builder.append("()");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final VariableReference rf) {
+ StringConcatenation _builder = new StringConcatenation();
+ ScopedVariableReference _ref = rf.getRef();
+ CharSequence _compile = this.compile(_ref);
+ _builder.append(_compile, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final NumberLiteral nl) {
+ StringConcatenation _builder = new StringConcatenation();
+ double _value = nl.getValue();
+ _builder.append(_value, "");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final StringLiteral sl) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("\"");
+ String _value = sl.getValue();
+ _builder.append(_value, "");
+ _builder.append("\"");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final BooleanLiteral bl) {
+ StringConcatenation _builder = new StringConcatenation();
+ boolean _isValue = bl.isValue();
+ _builder.append(_isValue, "");
+ return _builder;
+ }
+
+ protected CharSequence _compileArgument(final SystemArgumentReference arg, final FunctionCall fc) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _mapsFrom = arg.getMapsFrom();
+ _builder.append(_mapsFrom, "");
+ return _builder;
+ }
+
+ protected CharSequence _compileArgument(final FunctionArgumentReference arg, final FunctionCall fc) {
+ StringConcatenation _builder = new StringConcatenation();
+ EList<Expression> _args = fc.getArgs();
+ int _argIndex = arg.getArgIndex();
+ Expression _get = _args.get(_argIndex);
+ CharSequence _compile = this.compile(_get);
+ _builder.append(_compile, "");
+ return _builder;
+ }
+
+ protected CharSequence _compileFunction(final ExternalFunctionReference fcr, final FunctionCall fc) {
+ StringConcatenation _builder = new StringConcatenation();
+ ExternalFunctionDefinition _func = fcr.getFunc();
+ String _className = _func.getClassName();
+ String _addImport = this.addImport(_className);
+ _builder.append(_addImport, "");
+ _builder.append(".");
+ ExternalFunctionDefinition _func_1 = fcr.getFunc();
+ String _methodName = _func_1.getMethodName();
+ _builder.append(_methodName, "");
+ _builder.append("(");
+ _builder.newLineIfNotEmpty();
+ {
+ ExternalFunctionDefinition _func_2 = fcr.getFunc();
+ EList<JavaMethodArgument> _javaMethodArguments = _func_2.getJavaMethodArguments();
+ for(final JavaMethodArgument arg : _javaMethodArguments) {
+ _builder.append("\t\t");
+ {
+ ExternalFunctionDefinition _func_3 = fcr.getFunc();
+ EList<JavaMethodArgument> _javaMethodArguments_1 = _func_3.getJavaMethodArguments();
+ JavaMethodArgument _head = IterableExtensions.<JavaMethodArgument>head(_javaMethodArguments_1);
+ boolean _notEquals = (!Objects.equal(arg, _head));
+ if (_notEquals) {
+ _builder.append(",");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ CharSequence _compileArgument = this.compileArgument(arg, fc);
+ _builder.append(_compileArgument, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ }
+ }
+ _builder.append(")");
+ return _builder;
+ }
+
+ protected CharSequence _compileFunction(final FunctionReference fcr, final FunctionCall fc) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _name = fcr.getName();
+ _builder.append(_name, "");
+ _builder.append("(");
+ {
+ EList<Expression> _args = fc.getArgs();
+ for(final Expression e : _args) {
+ _builder.append(" ");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<Expression> _args_1 = fc.getArgs();
+ Expression _head = IterableExtensions.<Expression>head(_args_1);
+ boolean _equals = Objects.equal(e, _head);
+ if (_equals) {
+ CharSequence _compile = this.compile(e);
+ _builder.append(_compile, "");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append(",");
+ CharSequence _compile_1 = this.compile(e);
+ _builder.append(_compile_1, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t");
+ }
+ }
+ _builder.append(")");
+ return _builder;
+ }
+
+ protected CharSequence _compile(final FunctionCall fc) {
+ StringConcatenation _builder = new StringConcatenation();
+ FunctionReference _ref = fc.getRef();
+ CharSequence _compileFunction = this.compileFunction(_ref, fc);
+ _builder.append(_compileFunction, "");
+ return _builder;
+ }
+
+ public CharSequence compile(final Notifier rf) {
+ if (rf instanceof AbsoluteCompartmentValueReference) {
+ return _compile((AbsoluteCompartmentValueReference)rf);
+ } else if (rf instanceof RelativeCompartmentValueReference) {
+ return _compile((RelativeCompartmentValueReference)rf);
+ } else if (rf instanceof BooleanLiteral) {
+ return _compile((BooleanLiteral)rf);
+ } else if (rf instanceof Div) {
+ return _compile((Div)rf);
+ } else if (rf instanceof Evaluation) {
+ return _compile((Evaluation)rf);
+ } else if (rf instanceof FunctionCall) {
+ return _compile((FunctionCall)rf);
+ } else if (rf instanceof GlobalVariableReference) {
+ return _compile((GlobalVariableReference)rf);
+ } else if (rf instanceof LocalVariableReference) {
+ return _compile((LocalVariableReference)rf);
+ } else if (rf instanceof Minus) {
+ return _compile((Minus)rf);
+ } else if (rf instanceof ModelParamReference) {
+ return _compile((ModelParamReference)rf);
+ } else if (rf instanceof Multi) {
+ return _compile((Multi)rf);
+ } else if (rf instanceof NumberLiteral) {
+ return _compile((NumberLiteral)rf);
+ } else if (rf instanceof Plus) {
+ return _compile((Plus)rf);
+ } else if (rf instanceof PrimaryExpression) {
+ return _compile((PrimaryExpression)rf);
+ } else if (rf instanceof StringLiteral) {
+ return _compile((StringLiteral)rf);
+ } else if (rf instanceof VariableReference) {
+ return _compile((VariableReference)rf);
+ } else if (rf instanceof DefStatement) {
+ return _compile((DefStatement)rf);
+ } else if (rf instanceof TransitionBlock) {
+ return _compile((TransitionBlock)rf);
+ } else if (rf instanceof Resource) {
+ return _compile((Resource)rf);
+ } else {
+ throw new IllegalArgumentException("Unhandled parameter types: " +
+ Arrays.<Object>asList(rf).toString());
+ }
+ }
+
+ public CharSequence compileArgument(final JavaMethodArgument arg, final FunctionCall fc) {
+ if (arg instanceof FunctionArgumentReference) {
+ return _compileArgument((FunctionArgumentReference)arg, fc);
+ } else if (arg instanceof SystemArgumentReference) {
+ return _compileArgument((SystemArgumentReference)arg, fc);
+ } else {
+ throw new IllegalArgumentException("Unhandled parameter types: " +
+ Arrays.<Object>asList(arg, fc).toString());
+ }
+ }
+
+ public CharSequence compileFunction(final FunctionReference fcr, final FunctionCall fc) {
+ if (fcr instanceof ExternalFunctionReference) {
+ return _compileFunction((ExternalFunctionReference)fcr, fc);
+ } else if (fcr != null) {
+ return _compileFunction(fcr, fc);
+ } else {
+ throw new IllegalArgumentException("Unhandled parameter types: " +
+ Arrays.<Object>asList(fcr, fc).toString());
+ }
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.transform/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.transform/META-INF/MANIFEST.MF
index e573d8689..da4dbc651 100644
--- a/modelgen/org.eclipse.stem.model.transform/META-INF/MANIFEST.MF
+++ b/modelgen/org.eclipse.stem.model.transform/META-INF/MANIFEST.MF
@@ -15,7 +15,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.importer.ecore,
org.eclipse.emf.ecore.xmi,
org.eclipse.jdt.core,
- org.eclipse.jface
+ org.eclipse.jface,
+ org.eclipse.stem.model.common
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.stem.model.transform,org.eclipse.stem.model.transform.util
diff --git a/modelgen/org.eclipse.stem.model.transform/TransformApp-3.7.launch b/modelgen/org.eclipse.stem.model.transform/TransformApp-3.7.launch
index fa38e1530..578cc5982 100644
--- a/modelgen/org.eclipse.stem.model.transform/TransformApp-3.7.launch
+++ b/modelgen/org.eclipse.stem.model.transform/TransformApp-3.7.launch
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
<booleanAttribute key="append.args" value="true"/>
-<stringAttribute key="application" value="org.eclipse.stem.model.transform.util.TransformerApplication"/>
<booleanAttribute key="askclear" value="true"/>
<booleanAttribute key="automaticAdd" value="false"/>
<booleanAttribute key="automaticValidate" value="false"/>
@@ -20,7 +19,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.birt.report.engine.ReportEngineSDK"/>
<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.ant@default:default,org.apache.commons.io@default:default,org.apache.commons.logging@default:default,org.apache.commons.math@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.macosx@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d@default:default,org.eclipse.emf.ant@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.macosx@default:false,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.launching.macosx@default:default,org.eclipse.jdt.launching.ui.macosx@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.search@default:default,org.eclipse.swt.cocoa.macosx.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.cocoa@default:false,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.eclipse.update.core@default:default,org.hamcrest.core@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.stem.analysis@default:default,org.eclipse.stem.core@default:default,org.eclipse.stem.data.geography@default:default,org.eclipse.stem.definitions@default:default,org.eclipse.stem.diseasemodels.multipopulation@default:default,org.eclipse.stem.diseasemodels.swinesalmonella@default:default,org.eclipse.stem.diseasemodels@default:default,org.eclipse.stem.gis@default:default,org.eclipse.stem.graphgenerators@default:default,org.eclipse.stem.interventions@default:default,org.eclipse.stem.jobs@default:default,org.eclipse.stem.model.codegen@default:default,org.eclipse.stem.model.transform@default:default,org.eclipse.stem.model@default:default,org.eclipse.stem.populationmodels@default:default,org.eclipse.stem.transport@default:default,org.eclipse.stem.ui.diseasemodels@default:default,org.eclipse.stem.ui.populationmodels@default:default,org.eclipse.stem.ui@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.stem.analysis@default:default,org.eclipse.stem.core@default:default,org.eclipse.stem.definitions@default:default,org.eclipse.stem.diseasemodels.multipopulation@default:default,org.eclipse.stem.diseasemodels@default:default,org.eclipse.stem.gis@default:default,org.eclipse.stem.graphgenerators@default:default,org.eclipse.stem.interventions@default:default,org.eclipse.stem.jobs@default:default,org.eclipse.stem.model.codegen@default:default,org.eclipse.stem.model.transform@default:default,org.eclipse.stem.model@default:default,org.eclipse.stem.populationmodels@default:default,org.eclipse.stem.transport@default:default,org.eclipse.stem.ui.diseasemodels@default:default,org.eclipse.stem.ui.populationmodels@default:default,org.eclipse.stem.ui@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/Activator.java b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/Activator.java
index 39c458c2e..cf0f7ed33 100644
--- a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/Activator.java
+++ b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/Activator.java
@@ -10,18 +10,33 @@
*******************************************************************************/
package org.eclipse.stem.model.transform;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
import org.eclipse.emf.ecore.resource.Resource;
-import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
-public class Activator implements BundleActivator
+public class Activator extends Plugin
{
+ public static final String PLUGIN_ID = "org.eclipse.stem.model.transform";
+
private static BundleContext context;
+ private static Activator plugin;
+
static BundleContext getContext()
{
return context;
}
+
+ public static Activator getPlugin()
+ {
+ return plugin;
+ }
+
+ public static void log(IStatus status)
+ {
+ getPlugin().getLog().log(status);
+ }
/*
* (non-Javadoc)
@@ -29,6 +44,7 @@ public class Activator implements BundleActivator
*/
public void start(BundleContext bundleContext) throws Exception
{
+ Activator.plugin = this;
Activator.context = bundleContext;
Resource.Factory.Registry.INSTANCE.getProtocolToFactoryMap().put("platform", new MetamodelResourceFactory());
}
@@ -40,6 +56,7 @@ public class Activator implements BundleActivator
public void stop(BundleContext bundleContext) throws Exception
{
Activator.context = null;
+ Activator.plugin = null;
}
}
diff --git a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/EcoreTransformSwitch.java b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/EcoreTransformSwitch.java
index 5ca57b674..7e250b8b0 100644
--- a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/EcoreTransformSwitch.java
+++ b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/EcoreTransformSwitch.java
@@ -13,6 +13,8 @@ package org.eclipse.stem.model.transform;
import java.util.Arrays;
import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EAttribute;
@@ -36,6 +38,7 @@ import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
import org.eclipse.stem.model.metamodel.Package;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
+import org.eclipse.stem.model.metamodel.Transition;
import org.eclipse.stem.model.metamodel.util.MetamodelSwitch;
/**
@@ -109,6 +112,9 @@ public class EcoreTransformSwitch extends MetamodelSwitch<Object> {
modelClass.getEStructuralFeatures().add(caseModelParam(param));
}
+ modelClass.getEAnnotations().
+ add(getTransitionEAnnotations(object.getTransitions()));
+
if (object.getAuthor() != null) {
modelClass.getEAnnotations().add(
caseAuthorDetails(object.getAuthor()));
@@ -506,6 +512,35 @@ public class EcoreTransformSwitch extends MetamodelSwitch<Object> {
return annotation;
}
+
+
+
+ @Override
+ public EAnnotation caseTransition(Transition object)
+ {
+ Compartment source = object.getSource();
+ Compartment target = object.getTarget();
+ EAnnotation annotation = FACTORY.createEAnnotation();
+ annotation.setSource(source.getName() +"/"+ target.getName());
+ annotation.getDetails().put("expression", object.getExpression());
+ annotation.getDetails().put("source", object.getSource().getName());
+ annotation.getDetails().put("target", object.getTarget().getName());
+ return annotation;
+ }
+
+ private EAnnotation getTransitionEAnnotations(EList<Transition> transitions)
+ {
+ EAnnotation base = FACTORY.createEAnnotation();
+ base.setSource(CodeGenConstants.TRANSITIONS_ANNOTATION_SOURCE);
+ EMap<String,String> map = base.getDetails();
+ for (Transition t : transitions) {
+ map.put(t.getSource().getName() +"/"+ t.getTarget().getName(), t.getExpression());
+
+
+// base.getEAnnotations().add(caseTransition(t));
+ }
+ return base;
+ }
/**
* Adds a code generator marker annotation to the given Ecore model object
diff --git a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/ModelGenerator.java b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/ModelGenerator.java
index 8ab3c2abc..b01562275 100644
--- a/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/ModelGenerator.java
+++ b/modelgen/org.eclipse.stem.model.transform/src/org/eclipse/stem/model/transform/ModelGenerator.java
@@ -24,6 +24,7 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.emf.codegen.ecore.generator.Generator;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
@@ -34,9 +35,11 @@ import org.eclipse.emf.common.util.BasicMonitor;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.plugin.EcorePlugin;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -45,6 +48,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.importer.util.ImporterUtil;
import org.eclipse.stem.model.codegen.CodeGenConstants;
+import org.eclipse.stem.model.common.ModelProjectNature;
import org.eclipse.stem.model.metamodel.Package;
import org.eclipse.stem.model.metamodel.util.MetamodelSwitch;
import org.eclipse.stem.model.transform.MetamodelResourceFactory.MetamodelURIHandler;
@@ -114,6 +118,14 @@ public class ModelGenerator {
ecoreTransformer = transformer;
}
+ public String getGeneratedModelPluginID()
+ {
+ if (genModel != null) {
+ return genModel.getModelPluginID();
+ }
+ return null;
+ }
+
private void applyGenModelSettings() {
String project = ecore.getNsPrefix();
String projectSource = "/" + project + "/src";
@@ -133,7 +145,9 @@ public class ModelGenerator {
genModel.setTemplateDirectory(CodeGenConstants.CODEGEN_TEMPLATES_PATH);
genModel.getTemplatePluginVariables().add(
"STEM_CODEGEN=org.eclipse.stem.model.codegen");
-
+ genModel.getTemplatePluginVariables().add(
+ "STEM_METAMODEL=org.eclipse.stem.model");
+
genModel.setDynamicTemplates(true);
genModel.setForceOverwrite(true);
genModel.setPublicConstructors(true);
@@ -208,6 +222,8 @@ public class ModelGenerator {
//System.err.println("No GM for " + pkgRef.getName());
}
}
+
+ System.out.println(genModel.getUsedGenPackages());
}
private void findAndReplaceSuperType(EClass eClass, String packageUri,
@@ -304,11 +320,19 @@ public class ModelGenerator {
private void serializeModels(String projectName) throws IOException {
String modelName = ecore.getName();
+
saveResource(ecore, getEcoreUri(projectName, modelName), resourceSet);
saveResource(genModel, getGenModelUri(projectName, modelName),
resourceSet);
saveResource(metamodel, getMetamodelUri(projectName, modelName),
resourceSet);
+
+ EAnnotation metamodelPath = EcoreFactory.eINSTANCE.createEAnnotation();
+ metamodelPath.setSource(CodeGenConstants.METAMODEL_URI_ANNOTATION_SOURCE);
+ metamodelPath.getDetails().put("uri", metamodel.eResource().getURI().toString());
+ ecore.getEAnnotations().add(metamodelPath);
+
+ saveResource(ecore, getEcoreUri(projectName, modelName), resourceSet);
}
private static final String JET_PROJECT_NAME = ".JETEmitters";
@@ -394,6 +418,14 @@ public class ModelGenerator {
monitor.subTask("Saving Models and Cleanup");
serializeModels(genModel.getModelPluginID());
+
+ try {
+ addModelNature(genModel.getModelPluginID());
+ } catch (CoreException ce) {
+ Activator.log(new Status(
+ Status.WARNING, Activator.PLUGIN_ID, "Unable to add model project nature to generated project.", ce));
+ }
+
cleanupWorkspace();
monitor.worked(1);
} finally {
@@ -403,6 +435,10 @@ public class ModelGenerator {
return diagnosticResponse;
}
+ private void addModelNature(String projectId) throws CoreException {
+ ModelProjectNature.addNature(ResourcesPlugin.getWorkspace().getRoot().getProject(projectId));
+ }
+
private void cleanupWorkspace() throws CoreException {
IWorkspaceRoot wsr = ResourcesPlugin.getWorkspace().getRoot();
diff --git a/modelgen/org.eclipse.stem.model.ui/META-INF/MANIFEST.MF b/modelgen/org.eclipse.stem.model.ui/META-INF/MANIFEST.MF
index 7c7e0fb40..dbdf7b664 100644
--- a/modelgen/org.eclipse.stem.model.ui/META-INF/MANIFEST.MF
+++ b/modelgen/org.eclipse.stem.model.ui/META-INF/MANIFEST.MF
@@ -11,6 +11,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.stem.model.metamodel.presentation,
org.eclipse.stem.model.ui
Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.expressions,
org.eclipse.core.resources;visibility:=reexport,
org.eclipse.stem.model;visibility:=reexport,
org.eclipse.stem.model.transform;visibility:=reexport,
@@ -22,5 +23,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.jdt.core,
org.eclipse.jdt.ui,
org.eclipse.jface.text,
- org.eclipse.stem.core
+ org.eclipse.stem.core,
+ org.eclipse.stem.model.common,
+ org.eclipse.stem.model.ctdl,
+ org.eclipse.stem.model.ctdl.ui
Bundle-ActivationPolicy: lazy
diff --git a/modelgen/org.eclipse.stem.model.ui/plugin.xml b/modelgen/org.eclipse.stem.model.ui/plugin.xml
index e92be95b9..4dffb316b 100644
--- a/modelgen/org.eclipse.stem.model.ui/plugin.xml
+++ b/modelgen/org.eclipse.stem.model.ui/plugin.xml
@@ -14,6 +14,7 @@
-->
<plugin>
+
<extension point="org.eclipse.ui.editors">
<editor
id="org.eclipse.stem.model.metamodel.presentation.MetamodelEditorID"
@@ -50,20 +51,154 @@
<selection class="org.eclipse.core.resources.IResource" />
</wizard>
</extension>
+
+ <extension
+ point="org.eclipse.ui.popupMenus">
+
+
+
+ <objectContribution
+ adaptable="true"
+ id="org.eclipse.stem.model.ui.actions.loadBundle"
+ objectClass="org.eclipse.core.resources.IProject">
+ <action
+ class="org.eclipse.stem.model.ui.actions.LoadBundleAction"
+ id="org.eclipse.stem.model.ui.actions.LoadBundleAction"
+ label="Load into current OSGi Container"
+ >
+ </action>
+ <visibility>
+ <objectState
+ name="nature"
+ value="org.eclipse.pde.PluginNature">
+ </objectState>
+ </visibility>
+ </objectContribution>
+
+ <objectContribution
+ adaptable="true"
+ id="org.eclipse.stem.model.ui.actions.unloadBundle"
+ objectClass="org.eclipse.core.resources.IProject">
+ <action
+ class="org.eclipse.stem.model.ui.actions.UnloadBundleAction"
+ id="org.eclipse.stem.model.ui.actions.UnloadBundleAction"
+ label="Unload from current OSGi Container"
+ >
+ </action>
+ <visibility>
+
+ <objectState
+ name="nature"
+ value="org.eclipse.pde.PluginNature">
+ </objectState>
+
+ </visibility>
+ </objectContribution>
+
+ <objectContribution
+ adaptable="true"
+ id="org.eclipse.stem.model.ui.actions.addModelNature"
+ objectClass="org.eclipse.core.resources.IProject">
+ <action
+ class="org.eclipse.stem.model.ui.actions.ToggleNatureAction"
+ id="org.eclipse.stem.model.ui.actions.AddNatureAction"
+ label="Add STEM Model Project Nature"
+ >
+ </action>
+ <visibility>
+ <and>
+ <objectState
+ name="nature"
+ value="org.eclipse.pde.PluginNature">
+ </objectState>
+ <not>
+ <objectState
+ name="nature"
+ value="org.eclipse.stem.model.common.ModelProjectNature">
+ </objectState>
+ </not>
+ </and>
+ </visibility>
+ </objectContribution>
+
+ <objectContribution
+ adaptable="true"
+ id="org.eclipse.stem.model.ui.actions.removeModelNature"
+ objectClass="org.eclipse.core.resources.IProject">
+ <action
+ class="org.eclipse.stem.model.ui.actions.ToggleNatureAction"
+ id="org.eclipse.stem.model.ui.actions.RemoveNatureAction"
+ label="Remove STEM Model Project Nature"
+ >
+ </action>
+ <visibility>
+ <and>
+ <objectState
+ name="nature"
+ value="org.eclipse.pde.PluginNature">
+ </objectState>
+ <objectState
+ name="nature"
+ value="org.eclipse.stem.model.common.ModelProjectNature">
+ </objectState>
+ </and>
+ </visibility>
+ </objectContribution>
+
+ </extension>
+
+<!--
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+ <command
+ commandId="org.eclipse.stem.model.ui.loadBundle"
+ label="Load bundle command"
+ style="push"
+ tooltip="Load Bundle Command">
+
+ <visibleWhen
+ checkEnabled="true">
+ <test
+ property="org.eclipse.stem.model.ui.isBundleInstalled">
+ </test>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.stem.model.ui.actions.BundleInstallTester"
+ id="org.eclipse.stem.model.ui.actions.bundleInstallTester"
+ namespace="org.eclipse.stem.model.ui"
+ properties="isBundleInstalled"
+ type="java.lang.Object">
+ </propertyTester>
+ </extension>
+
<extension
- point="org.eclipse.ui.menus">
- <menuContribution
- locationURI="menu:org.eclipse.ui.main.menu">
- <menu
- label="File">
- <command
- commandId="org.eclipse.ui.file.exit"
- label="Exit">
- </command>
- </menu>
- </menuContribution>
+ point="org.eclipse.ui.commands">
+
+ <command
+ defaultHandler="org.eclipse.stem.model.ui.actions.LoadBundleHandler"
+ id="org.eclipse.stem.model.ui.loadBundle"
+ name="Load Bundle">
+
+ </command>
</extension>
-
-
+
+ <extension
+ point="org.eclipse.core.expressions.definitions">
+ <definition
+ id="org.eclipse.stem.model.ui.isBundleLoaded">
+ <test
+ property="org.eclipse.stem.model.ui.isBundleInstalled">
+ </test>
+ </definition>
+ </extension>
+-->
</plugin>
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelActionBarContributor.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelActionBarContributor.java
index 46695be68..5e5339f21 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelActionBarContributor.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelActionBarContributor.java
@@ -5,7 +5,6 @@ package org.eclipse.stem.model.metamodel.presentation;
import java.util.ArrayList;
import java.util.Collection;
-import org.eclipse.stem.model.metamodel.Package;
import org.eclipse.emf.common.ui.viewer.IViewerProvider;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
@@ -35,6 +34,7 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.stem.model.metamodel.Package;
import org.eclipse.stem.model.ui.MetamodelEditorPlugin;
import org.eclipse.stem.model.ui.wizards.ModelGeneratorWizard;
import org.eclipse.ui.IEditorPart;
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelEditor.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelEditor.java
index 3ae0cd20e..659088a4b 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelEditor.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/metamodel/presentation/MetamodelEditor.java
@@ -5,7 +5,6 @@ package org.eclipse.stem.model.metamodel.presentation;
import java.io.IOException;
import java.io.InputStream;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -24,22 +23,55 @@ import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
-
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
-
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
-
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
@@ -49,23 +81,18 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
-
+import org.eclipse.stem.model.metamodel.provider.MetamodelItemProviderAdapterFactory;
+import org.eclipse.stem.model.ui.MetamodelEditorPlugin;
import org.eclipse.swt.SWT;
-
import org.eclipse.swt.custom.CTabFolder;
-
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.Transfer;
-
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
-
import org.eclipse.swt.graphics.Point;
-
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
-
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
@@ -73,84 +100,18 @@ import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
-
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.dialogs.SaveAsDialog;
-
import org.eclipse.ui.ide.IGotoMarker;
-
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.part.MultiPageEditorPart;
-
import org.eclipse.ui.views.contentoutline.ContentOutline;
import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-
import org.eclipse.ui.views.properties.IPropertySheetPage;
import org.eclipse.ui.views.properties.PropertySheet;
import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStack;
-import org.eclipse.emf.common.command.CommandStackListener;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.ui.MarkerHelper;
-
-import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
-
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-
-import org.eclipse.emf.common.util.BasicDiagnostic;
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.URI;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EValidator;
-
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-import org.eclipse.emf.ecore.util.EContentAdapter;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-
-import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
-
-import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
-
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-
-import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
-
-import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
-import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
-import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
-
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
-
-import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
-import org.eclipse.emf.edit.ui.util.EditUIUtil;
-
-import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
-
-import org.eclipse.stem.model.metamodel.provider.MetamodelItemProviderAdapterFactory;
-
-import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
-
-import org.eclipse.stem.model.ui.MetamodelEditorPlugin;
-
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
/**
* This is an example of a Metamodel model editor.
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/Constants.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/Constants.java
index 30dcbb5e2..8ce339ca3 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/Constants.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/Constants.java
@@ -19,6 +19,8 @@ public interface Constants
{
public static final String EMPTY_STRING = "";
+ public static final String MODEL_NATURE_ID = "org.eclipse.stem.model.ui.ModelProjectNature";
+
public static final EClassifier[] DEFAULT_PARAM_DATA_TYPES = new EClassifier[] {
EcorePackage.Literals.EDOUBLE,
EcorePackage.Literals.EINT,
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/MetamodelEditorPlugin.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/MetamodelEditorPlugin.java
index ab5752ac8..76eb127aa 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/MetamodelEditorPlugin.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/MetamodelEditorPlugin.java
@@ -15,6 +15,7 @@ import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.ui.EclipseUIPlugin;
import org.eclipse.emf.common.util.ResourceLocator;
import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.osgi.framework.BundleContext;
/**
* This is the central singleton for the Metamodel editor plugin.
@@ -105,9 +106,21 @@ public final class MetamodelEditorPlugin extends EMFPlugin {
public Implementation() {
super();
+
// Remember the static instance.
//
plugin = this;
+
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
}
}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/BundleInstallTester.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/BundleInstallTester.java
new file mode 100644
index 000000000..729547273
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/BundleInstallTester.java
@@ -0,0 +1,14 @@
+package org.eclipse.stem.model.ui.actions;
+
+import org.eclipse.core.expressions.PropertyTester;
+
+public class BundleInstallTester extends PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args,
+ Object expectedValue) {
+ System.out.println("in bundle install property tester");
+ return false;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/LoadBundleAction.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/LoadBundleAction.java
new file mode 100644
index 000000000..9a441b074
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/LoadBundleAction.java
@@ -0,0 +1,85 @@
+package org.eclipse.stem.model.ui.actions;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.stem.model.ui.MetamodelEditorPlugin;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+
+public class LoadBundleAction implements IObjectActionDelegate {
+
+
+ private ISelection selection;
+
+ public void run(IAction action) {
+ if (selection instanceof IStructuredSelection) {
+ for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it.hasNext();) {
+ Object element = it.next();
+ IProject project = null;
+ if (element instanceof IProject) {
+ project = (IProject) element;
+ } else if (element instanceof IAdaptable) {
+ project = (IProject) ((IAdaptable) element).getAdapter(IProject.class);
+ }
+ if (project != null) {
+ installBundle(project);
+ }
+ }
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.selection = selection;
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ protected void installBundle(IProject project)
+ {
+ System.out.println("Installing bundle from project "+ project.getName());
+
+ BundleContext ctx = MetamodelEditorPlugin.getPlugin().getBundle().getBundleContext();
+
+ Bundle b = Platform.getBundle(project.getName());
+ if (b == null) {
+ Bundle newBundle = null;
+ try {
+ newBundle = ctx.installBundle(project.getLocationURI().toString());
+ newBundle.start();
+ } catch (BundleException e) {
+
+ if (newBundle != null) {
+ try {
+ System.err.println("Install and/or start failed, trying to uninstall.");
+ newBundle.uninstall();
+ } catch (BundleException e2) {
+
+ }
+ }
+ IStatus status = new Status(Status.ERROR, project.getName(), "Error installing into OSGi container", e);
+
+ ErrorDialog.openError(Display.getDefault().getActiveShell(), "Error",
+ "Error installing the project "+project.getName()+" into the OSGi constainer", status);
+
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/ToggleNatureAction.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/ToggleNatureAction.java
new file mode 100644
index 000000000..c6eb6f92f
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/ToggleNatureAction.java
@@ -0,0 +1,61 @@
+package org.eclipse.stem.model.ui.actions;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.stem.model.common.ModelProjectNature;
+import org.eclipse.stem.model.ui.MetamodelEditorPlugin;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class ToggleNatureAction implements IObjectActionDelegate {
+ private ISelection selection;
+
+ public void run(IAction action) {
+ if (selection instanceof IStructuredSelection) {
+ for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it
+ .hasNext();) {
+ Object element = it.next();
+ IProject project = null;
+ if (element instanceof IProject) {
+ project = (IProject) element;
+ } else if (element instanceof IAdaptable) {
+ project = (IProject) ((IAdaptable) element)
+ .getAdapter(IProject.class);
+ }
+ if (project != null) {
+ toggleNature(project);
+ }
+ }
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.selection = selection;
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ public static void toggleNature(IProject project) {
+ try {
+ if (ModelProjectNature.hasNature(project)) {
+ ModelProjectNature.removeNature(project);
+ } else {
+ ModelProjectNature.addNature(project);
+ }
+
+ } catch (CoreException ce) {
+ MetamodelEditorPlugin
+ .log(new Status(Status.ERROR,
+ MetamodelEditorPlugin.PLUGIN_ID,
+ "Error toggling nature", ce));
+ }
+ }
+} \ No newline at end of file
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/UnloadBundleAction.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/UnloadBundleAction.java
new file mode 100644
index 000000000..89dc86652
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/actions/UnloadBundleAction.java
@@ -0,0 +1,63 @@
+package org.eclipse.stem.model.ui.actions;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+public class UnloadBundleAction implements IObjectActionDelegate {
+
+
+ private ISelection selection;
+
+ public void run(IAction action) {
+ if (selection instanceof IStructuredSelection) {
+ for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it.hasNext();) {
+ Object element = it.next();
+ IProject project = null;
+ if (element instanceof IProject) {
+ project = (IProject) element;
+ } else if (element instanceof IAdaptable) {
+ project = (IProject) ((IAdaptable) element).getAdapter(IProject.class);
+ }
+ if (project != null) {
+ uninstallBundle(project);
+ }
+ }
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.selection = selection;
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ protected void uninstallBundle(IProject project)
+ {
+ Bundle b = Platform.getBundle(project.getName());
+ if (b != null) {
+
+ try {
+ b.stop();
+ } catch (BundleException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ b.uninstall();
+ } catch (BundleException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelGeneratorWizard.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelGeneratorWizard.java
index 3fc0bfb86..911fd7807 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelGeneratorWizard.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelGeneratorWizard.java
@@ -76,10 +76,11 @@ public class ModelGeneratorWizard extends Wizard {
ModelGenerator generator = new ModelGenerator(modelPackage);
generator.transform(new SubProgressMonitor(monitor, 10));
generator.generate(new SubProgressMonitor(monitor, 90));
-
-
-
+// String pluginName = generator.getGeneratedModelPluginID();
+
+
+// MetamodelEditorPlugin.getPlugin().getBundle().getBundleContext().
// IWorkbenchWindow window = PlatformUI.getWorkbench().getWorkbenchWindows()[0];
// //IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelTransitionsPage.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelTransitionsPage.java
new file mode 100644
index 000000000..10099aff8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/ModelTransitionsPage.java
@@ -0,0 +1,215 @@
+package org.eclipse.stem.model.ui.wizards;
+
+import java.util.Collections;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.stem.model.ctdl.ui.embed.EmbeddedExpressionEditorComposite;
+import org.eclipse.stem.model.metamodel.MetamodelFactory;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.stem.model.ui.Constants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class ModelTransitionsPage extends WizardPage
+{
+ protected EmbeddedExpressionEditorComposite editor;
+ protected Composite container;
+ protected ComboViewer transitionsComboViewer;
+ protected Button addTransitionButton, editTransitionButton, removeTransitionButton;
+ protected Label transitionsInformationLabel;
+ protected Model model;
+
+ public ModelTransitionsPage(Model model) {
+ super("Model Transitions");
+ setTitle("Model Compartment Transitions");
+ setDescription("Define the transitions between compartments for your model");
+
+ this.model = model;
+ }
+
+ @Override
+ public void createControl(Composite parent)
+ {
+ container = new Composite(parent, SWT.NULL);
+ container.setLayout(new GridLayout(3, false));
+
+ transitionsInformationLabel = new Label(container, SWT.NONE);
+ transitionsInformationLabel.setText("Define the transitions and expressions for the model compartments");
+
+ GridData labelGridData = new GridData(GridData.FILL);
+ labelGridData.horizontalSpan = 3;
+ transitionsInformationLabel.setLayoutData(labelGridData);
+
+
+ createTransitionViewer(container);
+ createExpressionEditor(container);
+
+ setControl(container);
+ }
+
+ protected void createTransitionViewer(Composite parent)
+ {
+ Label dataTypeLabel = new Label(parent, SWT.NONE);
+ dataTypeLabel.setText("Transition");
+
+ transitionsComboViewer = new ComboViewer(parent, SWT.READ_ONLY);
+ transitionsComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ transitionsComboViewer.setContentProvider(ArrayContentProvider.getInstance());
+ transitionsComboViewer.setLabelProvider(new TransitionsNameLabelProvider());
+ transitionsComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Change what's displayed in editor
+ selectTransition();
+ }
+ });
+
+ transitionsComboViewer.setInput(model.getTransitions());
+
+ Composite transitionsButtonComposite = new Composite(parent, SWT.NONE);
+ GridLayout transitionButtonCompositeLayout = new GridLayout(3,false);
+ transitionButtonCompositeLayout.horizontalSpacing = 2;
+ transitionsButtonComposite.setLayout(transitionButtonCompositeLayout);
+ addTransitionButton = new Button(transitionsButtonComposite, SWT.PUSH);
+ addTransitionButton.setText("Add");
+ addTransitionButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ addTransition();
+ }
+
+ });
+
+ editTransitionButton = new Button(transitionsButtonComposite, SWT.PUSH);
+ editTransitionButton.setText("Edit");
+ editTransitionButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ editTransition();
+ }
+
+ });
+
+ removeTransitionButton = new Button(transitionsButtonComposite, SWT.PUSH);
+ removeTransitionButton.setText("Remove");
+ removeTransitionButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ removeTransition();
+ }
+
+ });
+
+ transitionsButtonComposite.pack();
+ }
+
+ private Transition openTransitionEditorDialog(final Transition previousTransition)
+ {
+ Transition transitionToUse = null;
+ if (previousTransition == null) {
+ transitionToUse = MetamodelFactory.eINSTANCE.createTransition();
+ } else {
+ transitionToUse = EcoreUtil.copy(previousTransition);
+ }
+ TransitionEditorDialog editorDialog = new TransitionEditorDialog(
+ getShell(), SWT.NONE,
+ model, transitionToUse, previousTransition);
+
+ if (editorDialog.open() == Window.OK) {
+ return transitionToUse;
+ }
+
+ return null;
+ }
+
+ private void addTransition()
+ {
+ Transition transition = openTransitionEditorDialog(null);
+ if (transition != null) {
+ model.getTransitions().add(transition);
+ transitionsComboViewer.refresh();
+ setSelectedTransition(transition);
+ }
+ }
+
+ private void editTransition()
+ {
+ Transition selected = getSelectedTransition();
+ if (selected != null) {
+ Transition previous = selected;
+ Transition edited = openTransitionEditorDialog(previous);
+ if (edited != null) {
+ Collections.replaceAll(model.getTransitions(), previous, edited);
+ transitionsComboViewer.refresh();
+ setSelectedTransition(edited);
+ }
+
+ }
+ }
+
+ private void removeTransition()
+ {
+ Transition selected = getSelectedTransition();
+ if (selected != null) {
+ model.getTransitions().remove(selected);
+ transitionsComboViewer.refresh();
+ }
+ }
+
+ protected void selectTransition()
+ {
+ editor.setTransition(getSelectedTransition());
+ }
+
+ private void setSelectedTransition(Transition transition)
+ {
+ transitionsComboViewer.setSelection(new StructuredSelection(transition));
+ }
+
+ private Transition getSelectedTransition()
+ {
+ return (Transition) ((StructuredSelection)transitionsComboViewer.getSelection()).getFirstElement();
+ }
+
+ protected void createExpressionEditor(Composite parent)
+ {
+ editor = new EmbeddedExpressionEditorComposite(parent, SWT.NONE);
+ GridData editorData = new GridData(GridData.FILL_BOTH);
+ editorData.horizontalSpan = 3;
+ editor.setLayoutData(editorData);
+ //editor.setEnabled(false);
+ }
+
+ private static class TransitionsNameLabelProvider extends LabelProvider
+ {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof Transition) {
+ Transition t = (Transition)element;
+ return t.getSource().getName() + " -> " + t.getTarget().getName();
+ }
+
+ return Constants.EMPTY_STRING;
+ }
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/NewModelWizard.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/NewModelWizard.java
index 2f1c2a1de..74172b590 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/NewModelWizard.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/NewModelWizard.java
@@ -20,6 +20,7 @@ public class NewModelWizard extends Wizard
protected ModelPropertiesPage propertiesPage;
protected ModelParametersPage parametersPage;
protected ModelCompartmentsPage compartmentsPage;
+ protected ModelTransitionsPage transitionsPage;
protected Model newModel;
@@ -40,9 +41,11 @@ public class NewModelWizard extends Wizard
propertiesPage = new ModelPropertiesPage(newModel);
parametersPage = new ModelParametersPage(newModel);
compartmentsPage = new ModelCompartmentsPage(newModel);
+ transitionsPage = new ModelTransitionsPage(newModel);
addPage(propertiesPage);
addPage(parametersPage);
addPage(compartmentsPage);
+ addPage(transitionsPage);
}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/PackagePropertiesPage.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/PackagePropertiesPage.java
index f414076aa..df60102ce 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/PackagePropertiesPage.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/PackagePropertiesPage.java
@@ -289,24 +289,32 @@ public class PackagePropertiesPage extends WizardPage {
modelToUse = EcoreUtil.copy(existingModel);
}
- NewModelWizard wizard = new NewModelWizard(modelToUse);
- WizardDialog wizardDialog = new WizardDialog(getShell(), wizard);
- if (wizardDialog.open() == Window.OK) {
- return modelToUse;
-
+ try {
+ NewModelWizard wizard = new NewModelWizard(modelToUse);
+ WizardDialog wizardDialog = new WizardDialog(getShell(), wizard);
+ if (wizardDialog.open() == Window.OK) {
+ return modelToUse;
+
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
}
return null;
}
private void addModel() {
- Model newModel = openModelEditorDialog(null);
- if (newModel != null) {
- modelPackage.getModels().add(newModel);
- modelPackage.getCompartmentGroups().add(newModel.getCompartments());
- pkgModelsViewer.refresh();
+ try {
+ Model newModel = openModelEditorDialog(null);
+ if (newModel != null) {
+ modelPackage.getModels().add(newModel);
+ modelPackage.getCompartmentGroups().add(newModel.getCompartments());
+ pkgModelsViewer.refresh();
+ }
+ validatePage();
+ } catch (Throwable t) {
+ t.printStackTrace();
}
- validatePage();
}
private void editModel() {
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/TransitionEditorDialog.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/TransitionEditorDialog.java
new file mode 100644
index 000000000..b5a1dc4f0
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/TransitionEditorDialog.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.stem.model.ui.wizards;
+
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+import org.eclipse.stem.model.ui.Constants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class TransitionEditorDialog extends Dialog
+{
+ protected ComboViewer sourceCompartmentComboViewer, targetCompartmentComboViewer, incidenceCompartmentComboViewer;
+
+ protected Transition transition, originalTransition;
+ protected Model parentModel;
+
+ protected String errorMessage = null;
+
+ public TransitionEditorDialog(Shell parentShell, int style, Model model, Transition transition, Transition originalTransition)
+ {
+ super(parentShell);
+ this.transition = transition;
+ this.originalTransition = originalTransition;
+ this.parentModel = model;
+ }
+
+ public void create()
+ {
+ super.create();
+
+ if (transition.getSource() != null) {
+ sourceCompartmentComboViewer.setSelection(new StructuredSelection(transition.getSource()));
+ }
+
+ if (transition.getTarget() != null) {
+ targetCompartmentComboViewer.setSelection(new StructuredSelection(transition.getTarget()));
+ }
+
+ if (transition.getForIncidence() != null) {
+ incidenceCompartmentComboViewer.setSelection(new StructuredSelection(transition.getForIncidence()));
+ }
+ }
+
+ protected Control createDialogArea(Composite parent)
+ {
+ Composite container = new Composite(parent, SWT.NONE);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalSpan = 1;
+ container.setLayoutData(data);
+ container.setLayout(new GridLayout(2, false));
+
+// Label descriptionLabel = new Label(container, SWT.NONE);
+// GridData descriptionData = new GridData();
+// descriptionData.horizontalSpan = 3;
+// descriptionLabel.setData(descriptionData);
+// descriptionLabel.setText("Select a source and target compartment to create a transition");
+
+ createCompartmentViewers(container);
+
+ return parent;
+ }
+
+ private void createCompartmentViewers(Composite container)
+ {
+ Label sourceCompartmentLabel = new Label(container, SWT.NONE);
+ sourceCompartmentLabel.setText("Source Compartment");
+
+ sourceCompartmentComboViewer = new ComboViewer(container, SWT.READ_ONLY);
+ sourceCompartmentComboViewer.setContentProvider(ArrayContentProvider.getInstance());
+ sourceCompartmentComboViewer.setLabelProvider(new CompartmentNameLabelProvider());
+ sourceCompartmentComboViewer.setInput(WizardHelper.getAllCompartmentsForModel(parentModel));
+
+ Label targetCompartmentLabel = new Label(container, SWT.NONE);
+ targetCompartmentLabel.setText("Target Compartment");
+
+ targetCompartmentComboViewer = new ComboViewer(container, SWT.READ_ONLY);
+ targetCompartmentComboViewer.setContentProvider(ArrayContentProvider.getInstance());
+ targetCompartmentComboViewer.setLabelProvider(new CompartmentNameLabelProvider());
+ targetCompartmentComboViewer.setInput(WizardHelper.getAllCompartmentsForModel(parentModel));
+
+ Label incidenceForLabel = new Label(container, SWT.NONE);
+ incidenceForLabel.setText("For Incidence");
+
+ List<Compartment> incidenceCompartments = WizardHelper.getAllIncidenceCompartmentsForModel(parentModel);
+ //incidenceCompartments.add(0, null);
+
+ incidenceCompartmentComboViewer = new ComboViewer(container, SWT.READ_ONLY);
+ incidenceCompartmentComboViewer.setContentProvider(ArrayContentProvider.getInstance());
+ incidenceCompartmentComboViewer.setLabelProvider(new CompartmentNameLabelProvider(false));
+ incidenceCompartmentComboViewer.setInput(incidenceCompartments);
+ incidenceCompartmentComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ }
+
+ protected boolean validate()
+ {
+ if (getSelectedSourceCompartment() == null || getSelectedTargetCompartment() == null) {
+ errorMessage = "Please select a source and target compartment for this transition";
+ return false;
+ }
+
+ if (hasSourceTargetConflict()) {
+ errorMessage = "A transition already exists for the selected source-target pair.";
+ return false;
+ }
+
+ return true;
+ }
+
+ protected Compartment getSelectedSourceCompartment()
+ {
+ return (Compartment)((StructuredSelection)sourceCompartmentComboViewer.getSelection()).getFirstElement();
+ }
+
+ protected Compartment getSelectedTargetCompartment()
+ {
+ return (Compartment)((StructuredSelection)targetCompartmentComboViewer.getSelection()).getFirstElement();
+ }
+
+ protected Compartment getSelectedIncidenceCompartment()
+ {
+ Object obj = ((StructuredSelection)incidenceCompartmentComboViewer.getSelection()).getFirstElement();
+ if (obj == null) {
+ return null;
+ }
+ return (Compartment)obj;
+ }
+
+ private boolean hasSourceTargetConflict()
+ {
+ if (originalTransition != null &&
+ originalTransition.getSource() == getSelectedSourceCompartment() &&
+ originalTransition.getTarget() == getSelectedTargetCompartment()) {
+ return false;
+ }
+
+ for (Transition existingTransition : parentModel.getTransitions()) {
+ if (existingTransition.getSource() == getSelectedSourceCompartment() &&
+ existingTransition.getTarget() == getSelectedTargetCompartment()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected void okPressed()
+ {
+ if (validate()) {
+ Compartment source = getSelectedSourceCompartment();
+ Compartment target = getSelectedTargetCompartment();
+ transition.setName(source.getName() + " -> "+ target.getName());
+ transition.setSource(source);
+ transition.setTarget(target);
+ transition.setForIncidence(getSelectedIncidenceCompartment());
+ super.okPressed();
+ } else {
+ MessageDialog.openError(getShell(), "Error", errorMessage);
+ }
+ }
+
+ @Override
+ protected boolean isResizable() {
+ return true;
+ }
+
+ private static class CompartmentNameLabelProvider extends LabelProvider
+ {
+ boolean showType = true;
+ CompartmentNameLabelProvider()
+ {
+
+ }
+
+ CompartmentNameLabelProvider(boolean showType)
+ {
+ this.showType = showType;
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof Compartment) {
+ Compartment c = (Compartment)element;
+ String s = c.getName();
+ if (showType) {
+ s = s + " ("+ c.getType() +")";
+ }
+ return s;
+ }
+
+ return Constants.EMPTY_STRING;
+ }
+
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/WizardHelper.java b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/WizardHelper.java
index 3b59953df..845b9af10 100644
--- a/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/WizardHelper.java
+++ b/modelgen/org.eclipse.stem.model.ui/src/org/eclipse/stem/model/ui/wizards/WizardHelper.java
@@ -18,6 +18,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -46,6 +47,7 @@ import org.eclipse.stem.model.codegen.ModelGeneratorDescriptors;
import org.eclipse.stem.model.codegen.descriptor.ModelGeneratorDescriptor;
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
+import org.eclipse.stem.model.metamodel.CompartmentType;
import org.eclipse.stem.model.metamodel.Model;
import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
@@ -584,6 +586,18 @@ public class WizardHelper {
return getAllCompartmentsForGroup(model.getCompartments());
}
+ public static List<Compartment> getAllIncidenceCompartmentsForModel(Model model) {
+ List<Compartment> allCompartments =
+ new ArrayList<Compartment>(getAllCompartmentsForModel(model));
+ for (Iterator<Compartment> iter= allCompartments.iterator(); iter.hasNext();) {
+ Compartment c = iter.next();
+ if (c.getType() != CompartmentType.INCIDENCE) {
+ iter.remove();
+ }
+ }
+ return allCompartments;
+ }
+
public static String getFirstMatchingModelName(Package pkg)
{
List<String> modelNames = new ArrayList<String>();
diff --git a/modelgen/org.eclipse.stem.model/.classpath b/modelgen/org.eclipse.stem.model/.classpath
index 121e527a9..885a21ead 100644
--- a/modelgen/org.eclipse.stem.model/.classpath
+++ b/modelgen/org.eclipse.stem.model/.classpath
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="model"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
diff --git a/modelgen/org.eclipse.stem.model/.project b/modelgen/org.eclipse.stem.model/.project
index 2a7feaac9..f91b9755d 100644
--- a/modelgen/org.eclipse.stem.model/.project
+++ b/modelgen/org.eclipse.stem.model/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
diff --git a/modelgen/org.eclipse.stem.model/build.properties b/modelgen/org.eclipse.stem.model/build.properties
index 352305273..8050898b2 100644
--- a/modelgen/org.eclipse.stem.model/build.properties
+++ b/modelgen/org.eclipse.stem.model/build.properties
@@ -17,5 +17,5 @@ bin.includes = .,\
schema/,\
model/
jars.compile.order = .
-source.. = src/
+source.. = src/,model/
output.. = bin/
diff --git a/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateModel_transitions_Transition.gif b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateModel_transitions_Transition.gif
new file mode 100644
index 000000000..11152e9a1
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateModel_transitions_Transition.gif
Binary files differ
diff --git a/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_source_Compartment.gif b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_source_Compartment.gif
new file mode 100644
index 000000000..97d3985db
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_source_Compartment.gif
Binary files differ
diff --git a/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_target_Compartment.gif b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_target_Compartment.gif
new file mode 100644
index 000000000..97d3985db
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/icons/full/ctool16/CreateTransition_target_Compartment.gif
Binary files differ
diff --git a/modelgen/org.eclipse.stem.model/icons/full/obj16/Transition.gif b/modelgen/org.eclipse.stem.model/icons/full/obj16/Transition.gif
new file mode 100644
index 000000000..7bac4fd38
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/icons/full/obj16/Transition.gif
Binary files differ
diff --git a/modelgen/org.eclipse.stem.model/model/metamodel.ecore b/modelgen/org.eclipse.stem.model/model/metamodel.ecore
index 7602468fc..2b711843c 100644
--- a/modelgen/org.eclipse.stem.model/model/metamodel.ecore
+++ b/modelgen/org.eclipse.stem.model/model/metamodel.ecore
@@ -1,16 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*******************************************************************************
- * Copyright (c) 2012 Bundesinstitut für Risikobewertung 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:
- * Bundesinstitut für Risikobewertung - initial API and implementation
- *******************************************************************************/
--->
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="metamodel" nsURI="http:///org/eclipse/stem/model/metamodel.ecore"
nsPrefix="org.eclipse.stem.model">
@@ -43,6 +31,8 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="parentModel" eType="#//Model"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//ModelParam" containment="true" eOpposite="#//ModelParam/containerModel"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transitions" upperBound="-1"
+ eType="#//Transition" containment="true" eOpposite="#//Transition/containerModel"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="compartments" eType="#//CompartmentGroup"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//AuthorDetails"
containment="true"/>
@@ -80,9 +70,8 @@
eType="#//Compartment" containment="true" eOpposite="#//Compartment/containerGroup"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Compartment">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
- eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//CompartmentType"
defaultValueLiteral="Standard"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="containerGroup" eType="#//CompartmentGroup"
@@ -117,4 +106,15 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="labelValueRelativeValueProviderAdapterParentClass"
eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Transition">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Compartment"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//Compartment"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="forIncidence" eType="#//Compartment"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="expression" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="compiledExpression" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containerModel" eType="#//Model"
+ changeable="false" transient="true" eOpposite="#//Model/transitions"/>
+ </eClassifiers>
</ecore:EPackage>
diff --git a/modelgen/org.eclipse.stem.model/model/metamodel.genmodel b/modelgen/org.eclipse.stem.model/model/metamodel.genmodel
index ac63f4782..e8ed0aa81 100644
--- a/modelgen/org.eclipse.stem.model/model/metamodel.genmodel
+++ b/modelgen/org.eclipse.stem.model/model/metamodel.genmodel
@@ -1,16 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*******************************************************************************
- * Copyright (c) 2012 Bundesinstitut für Risikobewertung 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:
- * Bundesinstitut für Risikobewertung - initial API and implementation
- *******************************************************************************/
--->
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="&#xA;Copyright (c) 2012 Bundesinstitut für Risikobewertung and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA; Bundesinstitut für Risikobewertung - initial API and implementation"
modelDirectory="/org.eclipse.stem.model/src" editDirectory="/org.eclipse.stem.model/src"
@@ -45,6 +33,8 @@
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference metamodel.ecore#//Model/class"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference metamodel.ecore#//Model/parentModel"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference metamodel.ecore#//Model/parameters"/>
+ <genFeatures property="None" children="true" createChild="true" propertySortChoices="true"
+ ecoreFeature="ecore:EReference metamodel.ecore#//Model/transitions"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference metamodel.ecore#//Model/compartments"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference metamodel.ecore#//Model/author"/>
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference metamodel.ecore#//Model/containerPackage"/>
@@ -101,5 +91,14 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute metamodel.ecore#//ModelGenSettings/labelValueRelativeValueProviderAdapterClass"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute metamodel.ecore#//ModelGenSettings/labelValueRelativeValueProviderAdapterParentClass"/>
</genClasses>
+ <genClasses ecoreClass="metamodel.ecore#//Transition">
+ <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference metamodel.ecore#//Transition/source"/>
+ <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference metamodel.ecore#//Transition/target"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference metamodel.ecore#//Transition/forIncidence"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute metamodel.ecore#//Transition/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute metamodel.ecore#//Transition/expression"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference metamodel.ecore#//Transition/compiledExpression"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference metamodel.ecore#//Transition/containerModel"/>
+ </genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/modelgen/org.eclipse.stem.model/plugin.properties b/modelgen/org.eclipse.stem.model/plugin.properties
index 087cce108..78d12fe40 100644
--- a/modelgen/org.eclipse.stem.model/plugin.properties
+++ b/modelgen/org.eclipse.stem.model/plugin.properties
@@ -88,3 +88,12 @@ _UI_ModelGenSettings_labelValueRelativeValueProviderAdapterClass_feature = Label
_UI_ModelGenSettings_labelValueRelativeValueProviderAdapterParentClass_feature = Label Value Relative Value Provider Adapter Parent Class
_UI_PackageGenSettings_modelPluginId_feature = Model Plugin Id
_UI_PackageGenSettings_editorPluginId_feature = Editor Plugin Id
+_UI_Transition_type = Transition
+_UI_Transition_source_feature = Source
+_UI_Transition_target_feature = Target
+_UI_Model_transitions_feature = Transitions
+_UI_Transition_containerModel_feature = Container Model
+_UI_Transition_name_feature = Name
+_UI_Transition_expression_feature = Expression
+_UI_Transition_compiledExpression_feature = Compiled Expression
+_UI_Transition_forIncidence_feature = For Incidence
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Compartment.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Compartment.java
index 8fe4ada48..7008169cd 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Compartment.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Compartment.java
@@ -44,7 +44,7 @@ public interface Compartment extends EObject {
* @return the value of the '<em>Name</em>' attribute.
* @see #setName(String)
* @see org.eclipse.stem.model.metamodel.MetamodelPackage#getCompartment_Name()
- * @model required="true"
+ * @model
* @generated
*/
String getName();
@@ -70,7 +70,7 @@ public interface Compartment extends EObject {
* @return the value of the '<em>Data Type</em>' reference.
* @see #setDataType(EDataType)
* @see org.eclipse.stem.model.metamodel.MetamodelPackage#getCompartment_DataType()
- * @model required="true"
+ * @model
* @generated
*/
EDataType getDataType();
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/CompartmentGroup.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/CompartmentGroup.java
index 88b8c8ca1..7a30b5500 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/CompartmentGroup.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/CompartmentGroup.java
@@ -11,7 +11,6 @@
package org.eclipse.stem.model.metamodel;
import org.eclipse.emf.common.util.EList;
-
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelFactory.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelFactory.java
index 69648c692..763b52d53 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelFactory.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelFactory.java
@@ -102,6 +102,15 @@ public interface MetamodelFactory extends EFactory {
ModelGenSettings createModelGenSettings();
/**
+ * Returns a new object of class '<em>Transition</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Transition</em>'.
+ * @generated
+ */
+ Transition createTransition();
+
+ /**
* Returns a new object of class '<em>Package Gen Settings</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelPackage.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelPackage.java
index ea34b52b9..1e4cb4a15 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelPackage.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/MetamodelPackage.java
@@ -184,13 +184,22 @@ public interface MetamodelPackage extends EPackage {
int MODEL__PARAMETERS = 4;
/**
+ * The feature id for the '<em><b>Transitions</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__TRANSITIONS = 5;
+
+ /**
* The feature id for the '<em><b>Compartments</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int MODEL__COMPARTMENTS = 5;
+ int MODEL__COMPARTMENTS = 6;
/**
* The feature id for the '<em><b>Author</b></em>' containment reference.
@@ -199,7 +208,7 @@ public interface MetamodelPackage extends EPackage {
* @generated
* @ordered
*/
- int MODEL__AUTHOR = 6;
+ int MODEL__AUTHOR = 7;
/**
* The feature id for the '<em><b>Container Package</b></em>' container reference.
@@ -208,7 +217,7 @@ public interface MetamodelPackage extends EPackage {
* @generated
* @ordered
*/
- int MODEL__CONTAINER_PACKAGE = 7;
+ int MODEL__CONTAINER_PACKAGE = 8;
/**
* The feature id for the '<em><b>Generator Settings</b></em>' containment reference.
@@ -217,7 +226,7 @@ public interface MetamodelPackage extends EPackage {
* @generated
* @ordered
*/
- int MODEL__GENERATOR_SETTINGS = 8;
+ int MODEL__GENERATOR_SETTINGS = 9;
/**
* The number of structural features of the '<em>Model</em>' class.
@@ -226,7 +235,7 @@ public interface MetamodelPackage extends EPackage {
* @generated
* @ordered
*/
- int MODEL_FEATURE_COUNT = 9;
+ int MODEL_FEATURE_COUNT = 10;
/**
* The meta object id for the '{@link org.eclipse.stem.model.metamodel.impl.ModelParamImpl <em>Model Param</em>}' class.
@@ -695,6 +704,88 @@ public interface MetamodelPackage extends EPackage {
int MODEL_GEN_SETTINGS_FEATURE_COUNT = 8;
/**
+ * The meta object id for the '{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl <em>Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.metamodel.impl.TransitionImpl
+ * @see org.eclipse.stem.model.metamodel.impl.MetamodelPackageImpl#getTransition()
+ * @generated
+ */
+ int TRANSITION = 9;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__SOURCE = 0;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__TARGET = 1;
+
+ /**
+ * The feature id for the '<em><b>For Incidence</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__FOR_INCIDENCE = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__NAME = 3;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__EXPRESSION = 4;
+
+ /**
+ * The feature id for the '<em><b>Compiled Expression</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__COMPILED_EXPRESSION = 5;
+
+ /**
+ * The feature id for the '<em><b>Container Model</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__CONTAINER_MODEL = 6;
+
+ /**
+ * The number of structural features of the '<em>Transition</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_FEATURE_COUNT = 7;
+
+ /**
* The meta object id for the '{@link org.eclipse.stem.model.metamodel.ModelType <em>Model Type</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -702,7 +793,7 @@ public interface MetamodelPackage extends EPackage {
* @see org.eclipse.stem.model.metamodel.impl.MetamodelPackageImpl#getModelType()
* @generated
*/
- int MODEL_TYPE = 9;
+ int MODEL_TYPE = 10;
/**
* The meta object id for the '{@link org.eclipse.stem.model.metamodel.CompartmentType <em>Compartment Type</em>}' enum.
@@ -712,7 +803,7 @@ public interface MetamodelPackage extends EPackage {
* @see org.eclipse.stem.model.metamodel.impl.MetamodelPackageImpl#getCompartmentType()
* @generated
*/
- int COMPARTMENT_TYPE = 10;
+ int COMPARTMENT_TYPE = 11;
/**
@@ -846,6 +937,17 @@ public interface MetamodelPackage extends EPackage {
EReference getModel_Parameters();
/**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.model.metamodel.Model#getTransitions <em>Transitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Transitions</em>'.
+ * @see org.eclipse.stem.model.metamodel.Model#getTransitions()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Transitions();
+
+ /**
* Returns the meta object for the reference '{@link org.eclipse.stem.model.metamodel.Model#getCompartments <em>Compartments</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1335,6 +1437,93 @@ public interface MetamodelPackage extends EPackage {
EAttribute getModelGenSettings_LabelValueRelativeValueProviderAdapterParentClass();
/**
+ * Returns the meta object for class '{@link org.eclipse.stem.model.metamodel.Transition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Transition</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition
+ * @generated
+ */
+ EClass getTransition();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.metamodel.Transition#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getSource()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_Source();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.metamodel.Transition#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getTarget()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_Target();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.metamodel.Transition#getForIncidence <em>For Incidence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>For Incidence</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getForIncidence()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_ForIncidence();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.metamodel.Transition#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getName()
+ * @see #getTransition()
+ * @generated
+ */
+ EAttribute getTransition_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.model.metamodel.Transition#getExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Expression</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getExpression()
+ * @see #getTransition()
+ * @generated
+ */
+ EAttribute getTransition_Expression();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.model.metamodel.Transition#getCompiledExpression <em>Compiled Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Compiled Expression</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getCompiledExpression()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_CompiledExpression();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.stem.model.metamodel.Transition#getContainerModel <em>Container Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Container Model</em>'.
+ * @see org.eclipse.stem.model.metamodel.Transition#getContainerModel()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_ContainerModel();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.stem.model.metamodel.PackageGenSettings <em>Package Gen Settings</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1509,6 +1698,14 @@ public interface MetamodelPackage extends EPackage {
EReference MODEL__PARAMETERS = eINSTANCE.getModel_Parameters();
/**
+ * The meta object literal for the '<em><b>Transitions</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__TRANSITIONS = eINSTANCE.getModel_Transitions();
+
+ /**
* The meta object literal for the '<em><b>Compartments</b></em>' reference feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1881,6 +2078,72 @@ public interface MetamodelPackage extends EPackage {
EAttribute MODEL_GEN_SETTINGS__LABEL_VALUE_RELATIVE_VALUE_PROVIDER_ADAPTER_PARENT_CLASS = eINSTANCE.getModelGenSettings_LabelValueRelativeValueProviderAdapterParentClass();
/**
+ * The meta object literal for the '{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl <em>Transition</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.model.metamodel.impl.TransitionImpl
+ * @see org.eclipse.stem.model.metamodel.impl.MetamodelPackageImpl#getTransition()
+ * @generated
+ */
+ EClass TRANSITION = eINSTANCE.getTransition();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target();
+
+ /**
+ * The meta object literal for the '<em><b>For Incidence</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__FOR_INCIDENCE = eINSTANCE.getTransition_ForIncidence();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TRANSITION__NAME = eINSTANCE.getTransition_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TRANSITION__EXPRESSION = eINSTANCE.getTransition_Expression();
+
+ /**
+ * The meta object literal for the '<em><b>Compiled Expression</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__COMPILED_EXPRESSION = eINSTANCE.getTransition_CompiledExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Container Model</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRANSITION__CONTAINER_MODEL = eINSTANCE.getTransition_ContainerModel();
+
+ /**
* The meta object literal for the '{@link org.eclipse.stem.model.metamodel.impl.PackageGenSettingsImpl <em>Package Gen Settings</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Model.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Model.java
index c17081fbe..d0b05b028 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Model.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Model.java
@@ -11,7 +11,6 @@
package org.eclipse.stem.model.metamodel;
import org.eclipse.emf.common.util.EList;
-
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
@@ -28,6 +27,7 @@ import org.eclipse.emf.ecore.EObject;
* <li>{@link org.eclipse.stem.model.metamodel.Model#getClass_ <em>Class</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.Model#getParentModel <em>Parent Model</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.Model#getParameters <em>Parameters</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Model#getTransitions <em>Transitions</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.Model#getCompartments <em>Compartments</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.Model#getAuthor <em>Author</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.Model#getContainerPackage <em>Container Package</em>}</li>
@@ -166,6 +166,24 @@ public interface Model extends EObject {
EList<ModelParam> getParameters();
/**
+ * Returns the value of the '<em><b>Transitions</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.model.metamodel.Transition}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.stem.model.metamodel.Transition#getContainerModel <em>Container Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transitions</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transitions</em>' containment reference list.
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getModel_Transitions()
+ * @see org.eclipse.stem.model.metamodel.Transition#getContainerModel
+ * @model opposite="containerModel" containment="true"
+ * @generated
+ */
+ EList<Transition> getTransitions();
+
+ /**
* Returns the value of the '<em><b>Compartments</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Package.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Package.java
index 454313adb..4dbe0da9c 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Package.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Package.java
@@ -11,7 +11,6 @@
package org.eclipse.stem.model.metamodel;
import org.eclipse.emf.common.util.EList;
-
import org.eclipse.emf.ecore.EObject;
/**
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Transition.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Transition.java
new file mode 100644
index 000000000..4aafc45b8
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/Transition.java
@@ -0,0 +1,212 @@
+/**
+ *
+ * Copyright (c) 2012 Bundesinstitut für Risikobewertung 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:
+ * Bundesinstitut für Risikobewertung - initial API and implementation
+ */
+package org.eclipse.stem.model.metamodel;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getForIncidence <em>For Incidence</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getExpression <em>Expression</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getCompiledExpression <em>Compiled Expression</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.Transition#getContainerModel <em>Container Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition()
+ * @model
+ * @generated
+ */
+public interface Transition extends EObject {
+ /**
+ * Returns the value of the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source</em>' reference.
+ * @see #setSource(Compartment)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_Source()
+ * @model
+ * @generated
+ */
+ Compartment getSource();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getSource <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source</em>' reference.
+ * @see #getSource()
+ * @generated
+ */
+ void setSource(Compartment value);
+
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target</em>' reference.
+ * @see #setTarget(Compartment)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_Target()
+ * @model
+ * @generated
+ */
+ Compartment getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getTarget <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(Compartment value);
+
+ /**
+ * Returns the value of the '<em><b>For Incidence</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>For Incidence</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>For Incidence</em>' reference.
+ * @see #setForIncidence(Compartment)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_ForIncidence()
+ * @model
+ * @generated
+ */
+ Compartment getForIncidence();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getForIncidence <em>For Incidence</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>For Incidence</em>' reference.
+ * @see #getForIncidence()
+ * @generated
+ */
+ void setForIncidence(Compartment value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Expression</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expression</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expression</em>' attribute.
+ * @see #setExpression(String)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_Expression()
+ * @model
+ * @generated
+ */
+ String getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getExpression <em>Expression</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expression</em>' attribute.
+ * @see #getExpression()
+ * @generated
+ */
+ void setExpression(String value);
+
+ /**
+ * Returns the value of the '<em><b>Compiled Expression</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Compiled Expression</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Compiled Expression</em>' reference.
+ * @see #setCompiledExpression(EObject)
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_CompiledExpression()
+ * @model transient="true"
+ * @generated
+ */
+ EObject getCompiledExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.model.metamodel.Transition#getCompiledExpression <em>Compiled Expression</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Compiled Expression</em>' reference.
+ * @see #getCompiledExpression()
+ * @generated
+ */
+ void setCompiledExpression(EObject value);
+
+ /**
+ * Returns the value of the '<em><b>Container Model</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.stem.model.metamodel.Model#getTransitions <em>Transitions</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Container Model</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Container Model</em>' container reference.
+ * @see org.eclipse.stem.model.metamodel.MetamodelPackage#getTransition_ContainerModel()
+ * @see org.eclipse.stem.model.metamodel.Model#getTransitions
+ * @model opposite="transitions" changeable="false"
+ * @generated
+ */
+ Model getContainerModel();
+
+} // Transition
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/AuthorDetailsImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/AuthorDetailsImpl.java
index 54052a89b..84349693c 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/AuthorDetailsImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/AuthorDetailsImpl.java
@@ -11,12 +11,9 @@
package org.eclipse.stem.model.metamodel.impl;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.ecore.EClass;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/CompartmentImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/CompartmentImpl.java
index 5d305b7bc..a171701cd 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/CompartmentImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/CompartmentImpl.java
@@ -12,14 +12,11 @@ package org.eclipse.stem.model.metamodel.impl;
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.EDataType;
import org.eclipse.emf.ecore.InternalEObject;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
-
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
import org.eclipse.stem.model.metamodel.CompartmentType;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelFactoryImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelFactoryImpl.java
index 9134fd61a..ebcb62b6a 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelFactoryImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelFactoryImpl.java
@@ -14,11 +14,8 @@ import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
-
import org.eclipse.emf.ecore.impl.EFactoryImpl;
-
import org.eclipse.emf.ecore.plugin.EcorePlugin;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
@@ -31,6 +28,7 @@ import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
import org.eclipse.stem.model.metamodel.ModelType;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
+import org.eclipse.stem.model.metamodel.Transition;
/**
* <!-- begin-user-doc -->
@@ -85,6 +83,7 @@ public class MetamodelFactoryImpl extends EFactoryImpl implements MetamodelFacto
case MetamodelPackage.AUTHOR_DETAILS: return createAuthorDetails();
case MetamodelPackage.PACKAGE_GEN_SETTINGS: return createPackageGenSettings();
case MetamodelPackage.MODEL_GEN_SETTINGS: return createModelGenSettings();
+ case MetamodelPackage.TRANSITION: return createTransition();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
@@ -209,6 +208,16 @@ public class MetamodelFactoryImpl extends EFactoryImpl implements MetamodelFacto
* <!-- end-user-doc -->
* @generated
*/
+ public Transition createTransition() {
+ TransitionImpl transition = new TransitionImpl();
+ return transition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public PackageGenSettings createPackageGenSettings() {
PackageGenSettingsImpl packageGenSettings = new PackageGenSettingsImpl();
return packageGenSettings;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelPackageImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelPackageImpl.java
index 527f9e0a5..b731d74bd 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelPackageImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/MetamodelPackageImpl.java
@@ -29,6 +29,7 @@ import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
import org.eclipse.stem.model.metamodel.ModelType;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
+import org.eclipse.stem.model.metamodel.Transition;
/**
* <!-- begin-user-doc -->
@@ -98,6 +99,13 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
+ private EClass transitionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EClass packageGenSettingsEClass = null;
/**
@@ -291,7 +299,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
- public EReference getModel_Compartments() {
+ public EReference getModel_Transitions() {
return (EReference)modelEClass.getEStructuralFeatures().get(5);
}
@@ -300,7 +308,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
- public EReference getModel_Author() {
+ public EReference getModel_Compartments() {
return (EReference)modelEClass.getEStructuralFeatures().get(6);
}
@@ -309,7 +317,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
- public EReference getModel_ContainerPackage() {
+ public EReference getModel_Author() {
return (EReference)modelEClass.getEStructuralFeatures().get(7);
}
@@ -318,7 +326,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
- public EReference getModel_GeneratorSettings() {
+ public EReference getModel_ContainerPackage() {
return (EReference)modelEClass.getEStructuralFeatures().get(8);
}
@@ -327,6 +335,15 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getModel_GeneratorSettings() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getModelParam() {
return modelParamEClass;
}
@@ -696,6 +713,78 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
* <!-- end-user-doc -->
* @generated
*/
+ public EClass getTransition() {
+ return transitionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_Source() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_Target() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_ForIncidence() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTransition_Name() {
+ return (EAttribute)transitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTransition_Expression() {
+ return (EAttribute)transitionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_CompiledExpression() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTransition_ContainerModel() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getPackageGenSettings() {
return packageGenSettingsEClass;
}
@@ -777,6 +866,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
createEReference(modelEClass, MODEL__CLASS);
createEReference(modelEClass, MODEL__PARENT_MODEL);
createEReference(modelEClass, MODEL__PARAMETERS);
+ createEReference(modelEClass, MODEL__TRANSITIONS);
createEReference(modelEClass, MODEL__COMPARTMENTS);
createEReference(modelEClass, MODEL__AUTHOR);
createEReference(modelEClass, MODEL__CONTAINER_PACKAGE);
@@ -833,6 +923,15 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
createEAttribute(modelGenSettingsEClass, MODEL_GEN_SETTINGS__LABEL_VALUE_RELATIVE_VALUE_PROVIDER_ADAPTER_CLASS);
createEAttribute(modelGenSettingsEClass, MODEL_GEN_SETTINGS__LABEL_VALUE_RELATIVE_VALUE_PROVIDER_ADAPTER_PARENT_CLASS);
+ transitionEClass = createEClass(TRANSITION);
+ createEReference(transitionEClass, TRANSITION__SOURCE);
+ createEReference(transitionEClass, TRANSITION__TARGET);
+ createEReference(transitionEClass, TRANSITION__FOR_INCIDENCE);
+ createEAttribute(transitionEClass, TRANSITION__NAME);
+ createEAttribute(transitionEClass, TRANSITION__EXPRESSION);
+ createEReference(transitionEClass, TRANSITION__COMPILED_EXPRESSION);
+ createEReference(transitionEClass, TRANSITION__CONTAINER_MODEL);
+
// Create enums
modelTypeEEnum = createEEnum(MODEL_TYPE);
compartmentTypeEEnum = createEEnum(COMPARTMENT_TYPE);
@@ -884,6 +983,7 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
initEReference(getModel_Class(), theEcorePackage.getEClass(), null, "class", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getModel_ParentModel(), this.getModel(), null, "parentModel", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getModel_Parameters(), this.getModelParam(), this.getModelParam_ContainerModel(), "parameters", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModel_Transitions(), this.getTransition(), this.getTransition_ContainerModel(), "transitions", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getModel_Compartments(), this.getCompartmentGroup(), null, "compartments", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getModel_Author(), this.getAuthorDetails(), null, "author", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getModel_ContainerPackage(), this.getPackage(), this.getPackage_Models(), "containerPackage", null, 0, 1, Model.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -913,8 +1013,8 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
initEReference(getCompartmentGroup_Compartments(), this.getCompartment(), this.getCompartment_ContainerGroup(), "compartments", null, 0, -1, CompartmentGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(compartmentEClass, Compartment.class, "Compartment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getCompartment_Name(), theEcorePackage.getEString(), "name", null, 1, 1, Compartment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEReference(getCompartment_DataType(), theEcorePackage.getEDataType(), null, "dataType", null, 1, 1, Compartment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCompartment_Name(), theEcorePackage.getEString(), "name", null, 0, 1, Compartment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCompartment_DataType(), theEcorePackage.getEDataType(), null, "dataType", null, 0, 1, Compartment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCompartment_Type(), this.getCompartmentType(), "type", "Standard", 0, 1, Compartment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getCompartment_ContainerGroup(), this.getCompartmentGroup(), this.getCompartmentGroup_Compartments(), "containerGroup", null, 0, 1, Compartment.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -940,6 +1040,15 @@ public class MetamodelPackageImpl extends EPackageImpl implements MetamodelPacka
initEAttribute(getModelGenSettings_LabelValueRelativeValueProviderAdapterClass(), theEcorePackage.getEString(), "labelValueRelativeValueProviderAdapterClass", null, 0, 1, ModelGenSettings.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getModelGenSettings_LabelValueRelativeValueProviderAdapterParentClass(), theEcorePackage.getEString(), "labelValueRelativeValueProviderAdapterParentClass", null, 0, 1, ModelGenSettings.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTransition_Source(), this.getCompartment(), null, "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_Target(), this.getCompartment(), null, "target", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_ForIncidence(), this.getCompartment(), null, "forIncidence", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getTransition_Name(), theEcorePackage.getEString(), "name", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getTransition_Expression(), theEcorePackage.getEString(), "expression", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_CompiledExpression(), theEcorePackage.getEObject(), null, "compiledExpression", null, 0, 1, Transition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_ContainerModel(), this.getModel(), this.getModel_Transitions(), "containerModel", null, 0, 1, Transition.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
// Initialize enums and add enum literals
initEEnum(modelTypeEEnum, ModelType.class, "ModelType");
addEEnumLiteral(modelTypeEEnum, ModelType.DISEASE_MODEL);
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelGenSettingsImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelGenSettingsImpl.java
index 5345c28a4..b18b9f5f0 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelGenSettingsImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelGenSettingsImpl.java
@@ -12,12 +12,9 @@
package org.eclipse.stem.model.metamodel.impl;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.ecore.EClass;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.ModelGenSettings;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelImpl.java
index 15de02fa8..5fa941ce2 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelImpl.java
@@ -14,18 +14,13 @@ import java.util.Collection;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
-
import org.eclipse.emf.common.util.EList;
-
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.emf.ecore.util.EObjectContainmentWithInverseEList;
import org.eclipse.emf.ecore.util.InternalEList;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
@@ -33,6 +28,7 @@ import org.eclipse.stem.model.metamodel.Model;
import org.eclipse.stem.model.metamodel.ModelGenSettings;
import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelType;
+import org.eclipse.stem.model.metamodel.Transition;
/**
* <!-- begin-user-doc -->
@@ -46,6 +42,7 @@ import org.eclipse.stem.model.metamodel.ModelType;
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getClass_ <em>Class</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getParentModel <em>Parent Model</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getParameters <em>Parameters</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getTransitions <em>Transitions</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getCompartments <em>Compartments</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getAuthor <em>Author</em>}</li>
* <li>{@link org.eclipse.stem.model.metamodel.impl.ModelImpl#getContainerPackage <em>Container Package</em>}</li>
@@ -127,6 +124,16 @@ public class ModelImpl extends EObjectImpl implements Model {
protected EList<ModelParam> parameters;
/**
+ * The cached value of the '{@link #getTransitions() <em>Transitions</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransitions()
+ * @generated
+ * @ordered
+ */
+ protected EList<Transition> transitions;
+
+ /**
* The cached value of the '{@link #getCompartments() <em>Compartments</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -310,6 +317,18 @@ public class ModelImpl extends EObjectImpl implements Model {
* <!-- end-user-doc -->
* @generated
*/
+ public EList<Transition> getTransitions() {
+ if (transitions == null) {
+ transitions = new EObjectContainmentWithInverseEList<Transition>(Transition.class, this, MetamodelPackage.MODEL__TRANSITIONS, MetamodelPackage.TRANSITION__CONTAINER_MODEL);
+ }
+ return transitions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public CompartmentGroup getCompartments() {
if (compartments != null && compartments.eIsProxy()) {
InternalEObject oldCompartments = (InternalEObject)compartments;
@@ -450,6 +469,8 @@ public class ModelImpl extends EObjectImpl implements Model {
switch (featureID) {
case MetamodelPackage.MODEL__PARAMETERS:
return ((InternalEList<InternalEObject>)(InternalEList<?>)getParameters()).basicAdd(otherEnd, msgs);
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getTransitions()).basicAdd(otherEnd, msgs);
case MetamodelPackage.MODEL__CONTAINER_PACKAGE:
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
@@ -468,6 +489,8 @@ public class ModelImpl extends EObjectImpl implements Model {
switch (featureID) {
case MetamodelPackage.MODEL__PARAMETERS:
return ((InternalEList<?>)getParameters()).basicRemove(otherEnd, msgs);
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ return ((InternalEList<?>)getTransitions()).basicRemove(otherEnd, msgs);
case MetamodelPackage.MODEL__AUTHOR:
return basicSetAuthor(null, msgs);
case MetamodelPackage.MODEL__CONTAINER_PACKAGE:
@@ -512,6 +535,8 @@ public class ModelImpl extends EObjectImpl implements Model {
return basicGetParentModel();
case MetamodelPackage.MODEL__PARAMETERS:
return getParameters();
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ return getTransitions();
case MetamodelPackage.MODEL__COMPARTMENTS:
if (resolve) return getCompartments();
return basicGetCompartments();
@@ -550,6 +575,10 @@ public class ModelImpl extends EObjectImpl implements Model {
getParameters().clear();
getParameters().addAll((Collection<? extends ModelParam>)newValue);
return;
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ getTransitions().clear();
+ getTransitions().addAll((Collection<? extends Transition>)newValue);
+ return;
case MetamodelPackage.MODEL__COMPARTMENTS:
setCompartments((CompartmentGroup)newValue);
return;
@@ -586,6 +615,9 @@ public class ModelImpl extends EObjectImpl implements Model {
case MetamodelPackage.MODEL__PARAMETERS:
getParameters().clear();
return;
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ getTransitions().clear();
+ return;
case MetamodelPackage.MODEL__COMPARTMENTS:
setCompartments((CompartmentGroup)null);
return;
@@ -617,6 +649,8 @@ public class ModelImpl extends EObjectImpl implements Model {
return parentModel != null;
case MetamodelPackage.MODEL__PARAMETERS:
return parameters != null && !parameters.isEmpty();
+ case MetamodelPackage.MODEL__TRANSITIONS:
+ return transitions != null && !transitions.isEmpty();
case MetamodelPackage.MODEL__COMPARTMENTS:
return compartments != null;
case MetamodelPackage.MODEL__AUTHOR:
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelParamConstraintImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelParamConstraintImpl.java
index 4bd1fc515..92e203416 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelParamConstraintImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/ModelParamConstraintImpl.java
@@ -11,12 +11,9 @@
package org.eclipse.stem.model.metamodel.impl;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.ecore.EClass;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageGenSettingsImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageGenSettingsImpl.java
index c17c0909e..852346303 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageGenSettingsImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageGenSettingsImpl.java
@@ -11,12 +11,9 @@
package org.eclipse.stem.model.metamodel.impl;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.ecore.EClass;
-
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageImpl.java
index c2d536ce4..2d81b59a3 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageImpl.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/PackageImpl.java
@@ -14,19 +14,14 @@ import java.util.Collection;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
-
import org.eclipse.emf.common.util.EList;
-
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.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
import org.eclipse.emf.ecore.util.InternalEList;
-
import org.eclipse.stem.model.metamodel.CompartmentGroup;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.Model;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/TransitionImpl.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/TransitionImpl.java
new file mode 100644
index 000000000..0e7d01ea7
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/impl/TransitionImpl.java
@@ -0,0 +1,527 @@
+/**
+ *
+ * Copyright (c) 2012 Bundesinstitut für Risikobewertung 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:
+ * Bundesinstitut für Risikobewertung - initial API and implementation
+ */
+package org.eclipse.stem.model.metamodel.impl;
+
+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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.model.metamodel.Compartment;
+import org.eclipse.stem.model.metamodel.MetamodelPackage;
+import org.eclipse.stem.model.metamodel.Model;
+import org.eclipse.stem.model.metamodel.Transition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getForIncidence <em>For Incidence</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getExpression <em>Expression</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getCompiledExpression <em>Compiled Expression</em>}</li>
+ * <li>{@link org.eclipse.stem.model.metamodel.impl.TransitionImpl#getContainerModel <em>Container Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TransitionImpl extends EObjectImpl implements Transition {
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected Compartment source;
+
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected Compartment target;
+
+ /**
+ * The cached value of the '{@link #getForIncidence() <em>For Incidence</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForIncidence()
+ * @generated
+ * @ordered
+ */
+ protected Compartment forIncidence;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected static final String EXPRESSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected String expression = EXPRESSION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getCompiledExpression() <em>Compiled Expression</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompiledExpression()
+ * @generated
+ * @ordered
+ */
+ protected EObject compiledExpression;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MetamodelPackage.Literals.TRANSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (Compartment)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MetamodelPackage.TRANSITION__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(Compartment newSource) {
+ Compartment oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment getTarget() {
+ if (target != null && target.eIsProxy()) {
+ InternalEObject oldTarget = (InternalEObject)target;
+ target = (Compartment)eResolveProxy(oldTarget);
+ if (target != oldTarget) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MetamodelPackage.TRANSITION__TARGET, oldTarget, target));
+ }
+ }
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment basicGetTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(Compartment newTarget) {
+ Compartment oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__TARGET, oldTarget, target));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment getForIncidence() {
+ if (forIncidence != null && forIncidence.eIsProxy()) {
+ InternalEObject oldForIncidence = (InternalEObject)forIncidence;
+ forIncidence = (Compartment)eResolveProxy(oldForIncidence);
+ if (forIncidence != oldForIncidence) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MetamodelPackage.TRANSITION__FOR_INCIDENCE, oldForIncidence, forIncidence));
+ }
+ }
+ return forIncidence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Compartment basicGetForIncidence() {
+ return forIncidence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setForIncidence(Compartment newForIncidence) {
+ Compartment oldForIncidence = forIncidence;
+ forIncidence = newForIncidence;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__FOR_INCIDENCE, oldForIncidence, forIncidence));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getExpression() {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpression(String newExpression) {
+ String oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__EXPRESSION, oldExpression, expression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getCompiledExpression() {
+ if (compiledExpression != null && compiledExpression.eIsProxy()) {
+ InternalEObject oldCompiledExpression = (InternalEObject)compiledExpression;
+ compiledExpression = eResolveProxy(oldCompiledExpression);
+ if (compiledExpression != oldCompiledExpression) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, MetamodelPackage.TRANSITION__COMPILED_EXPRESSION, oldCompiledExpression, compiledExpression));
+ }
+ }
+ return compiledExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject basicGetCompiledExpression() {
+ return compiledExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCompiledExpression(EObject newCompiledExpression) {
+ EObject oldCompiledExpression = compiledExpression;
+ compiledExpression = newCompiledExpression;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetamodelPackage.TRANSITION__COMPILED_EXPRESSION, oldCompiledExpression, compiledExpression));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model getContainerModel() {
+ if (eContainerFeatureID() != MetamodelPackage.TRANSITION__CONTAINER_MODEL) return null;
+ return (Model)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MetamodelPackage.TRANSITION__CONTAINER_MODEL:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, MetamodelPackage.TRANSITION__CONTAINER_MODEL, 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 MetamodelPackage.TRANSITION__CONTAINER_MODEL:
+ return eBasicSetContainer(null, MetamodelPackage.TRANSITION__CONTAINER_MODEL, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case MetamodelPackage.TRANSITION__CONTAINER_MODEL:
+ return eInternalContainer().eInverseRemove(this, MetamodelPackage.MODEL__TRANSITIONS, Model.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 MetamodelPackage.TRANSITION__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ case MetamodelPackage.TRANSITION__TARGET:
+ if (resolve) return getTarget();
+ return basicGetTarget();
+ case MetamodelPackage.TRANSITION__FOR_INCIDENCE:
+ if (resolve) return getForIncidence();
+ return basicGetForIncidence();
+ case MetamodelPackage.TRANSITION__NAME:
+ return getName();
+ case MetamodelPackage.TRANSITION__EXPRESSION:
+ return getExpression();
+ case MetamodelPackage.TRANSITION__COMPILED_EXPRESSION:
+ if (resolve) return getCompiledExpression();
+ return basicGetCompiledExpression();
+ case MetamodelPackage.TRANSITION__CONTAINER_MODEL:
+ return getContainerModel();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MetamodelPackage.TRANSITION__SOURCE:
+ setSource((Compartment)newValue);
+ return;
+ case MetamodelPackage.TRANSITION__TARGET:
+ setTarget((Compartment)newValue);
+ return;
+ case MetamodelPackage.TRANSITION__FOR_INCIDENCE:
+ setForIncidence((Compartment)newValue);
+ return;
+ case MetamodelPackage.TRANSITION__NAME:
+ setName((String)newValue);
+ return;
+ case MetamodelPackage.TRANSITION__EXPRESSION:
+ setExpression((String)newValue);
+ return;
+ case MetamodelPackage.TRANSITION__COMPILED_EXPRESSION:
+ setCompiledExpression((EObject)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MetamodelPackage.TRANSITION__SOURCE:
+ setSource((Compartment)null);
+ return;
+ case MetamodelPackage.TRANSITION__TARGET:
+ setTarget((Compartment)null);
+ return;
+ case MetamodelPackage.TRANSITION__FOR_INCIDENCE:
+ setForIncidence((Compartment)null);
+ return;
+ case MetamodelPackage.TRANSITION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case MetamodelPackage.TRANSITION__EXPRESSION:
+ setExpression(EXPRESSION_EDEFAULT);
+ return;
+ case MetamodelPackage.TRANSITION__COMPILED_EXPRESSION:
+ setCompiledExpression((EObject)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MetamodelPackage.TRANSITION__SOURCE:
+ return source != null;
+ case MetamodelPackage.TRANSITION__TARGET:
+ return target != null;
+ case MetamodelPackage.TRANSITION__FOR_INCIDENCE:
+ return forIncidence != null;
+ case MetamodelPackage.TRANSITION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case MetamodelPackage.TRANSITION__EXPRESSION:
+ return EXPRESSION_EDEFAULT == null ? expression != null : !EXPRESSION_EDEFAULT.equals(expression);
+ case MetamodelPackage.TRANSITION__COMPILED_EXPRESSION:
+ return compiledExpression != null;
+ case MetamodelPackage.TRANSITION__CONTAINER_MODEL:
+ return getContainerModel() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", expression: ");
+ result.append(expression);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TransitionImpl
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/AuthorDetailsItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/AuthorDetailsItemProvider.java
index f59b66d90..1738a422c 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/AuthorDetailsItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/AuthorDetailsItemProvider.java
@@ -16,9 +16,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentGroupItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentGroupItemProvider.java
index 91378ee99..5f9614669 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentGroupItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentGroupItemProvider.java
@@ -16,11 +16,8 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.ecore.EStructuralFeature;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -31,7 +28,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.CompartmentGroup;
import org.eclipse.stem.model.metamodel.MetamodelFactory;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentItemProvider.java
index c8e3c64d5..d2f732843 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/CompartmentItemProvider.java
@@ -16,9 +16,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelEditPlugin.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelEditPlugin.java
index 1637f08ce..e319f417e 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelEditPlugin.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelEditPlugin.java
@@ -11,9 +11,7 @@
package org.eclipse.stem.model.metamodel.provider;
import org.eclipse.emf.common.EMFPlugin;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
/**
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelItemProviderAdapterFactory.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelItemProviderAdapterFactory.java
index 63315e3a6..3049342c6 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelItemProviderAdapterFactory.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/MetamodelItemProviderAdapterFactory.java
@@ -16,7 +16,6 @@ import java.util.Collection;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
-
import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -28,7 +27,6 @@ import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-
import org.eclipse.stem.model.metamodel.util.MetamodelAdapterFactory;
/**
@@ -264,6 +262,29 @@ public class MetamodelItemProviderAdapterFactory extends MetamodelAdapterFactory
}
/**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.model.metamodel.Transition} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TransitionItemProvider transitionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.model.metamodel.Transition}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTransitionAdapter() {
+ if (transitionItemProvider == null) {
+ transitionItemProvider = new TransitionItemProvider(this);
+ }
+
+ return transitionItemProvider;
+ }
+
+ /**
* This keeps track of the one adapter used for all {@link org.eclipse.stem.model.metamodel.PackageGenSettings} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -394,6 +415,7 @@ public class MetamodelItemProviderAdapterFactory extends MetamodelAdapterFactory
if (authorDetailsItemProvider != null) authorDetailsItemProvider.dispose();
if (packageGenSettingsItemProvider != null) packageGenSettingsItemProvider.dispose();
if (modelGenSettingsItemProvider != null) modelGenSettingsItemProvider.dispose();
+ if (transitionItemProvider != null) transitionItemProvider.dispose();
}
}
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelGenSettingsItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelGenSettingsItemProvider.java
index 429ce32ad..46b620632 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelGenSettingsItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelGenSettingsItemProvider.java
@@ -17,9 +17,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -30,7 +28,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.ModelGenSettings;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelItemProvider.java
index 6bfb39ed1..a1d885d05 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelItemProvider.java
@@ -16,11 +16,8 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.ecore.EStructuralFeature;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -31,7 +28,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelFactory;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.Model;
@@ -203,6 +199,7 @@ public class ModelItemProvider
if (childrenFeatures == null) {
super.getChildrenFeatures(object);
childrenFeatures.add(MetamodelPackage.Literals.MODEL__PARAMETERS);
+ childrenFeatures.add(MetamodelPackage.Literals.MODEL__TRANSITIONS);
childrenFeatures.add(MetamodelPackage.Literals.MODEL__COMPARTMENTS);
childrenFeatures.add(MetamodelPackage.Literals.MODEL__GENERATOR_SETTINGS);
}
@@ -264,6 +261,7 @@ public class ModelItemProvider
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case MetamodelPackage.MODEL__PARAMETERS:
+ case MetamodelPackage.MODEL__TRANSITIONS:
case MetamodelPackage.MODEL__COMPARTMENTS:
case MetamodelPackage.MODEL__GENERATOR_SETTINGS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -290,6 +288,11 @@ public class ModelItemProvider
newChildDescriptors.add
(createChildParameter
+ (MetamodelPackage.Literals.MODEL__TRANSITIONS,
+ MetamodelFactory.eINSTANCE.createTransition()));
+
+ newChildDescriptors.add
+ (createChildParameter
(MetamodelPackage.Literals.MODEL__COMPARTMENTS,
MetamodelFactory.eINSTANCE.createCompartmentGroup()));
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamConstraintItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamConstraintItemProvider.java
index c11c235c5..005f89bf9 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamConstraintItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamConstraintItemProvider.java
@@ -16,9 +16,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamItemProvider.java
index 13b71f60a..d487907fd 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/ModelParamItemProvider.java
@@ -16,9 +16,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.ModelParam;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageGenSettingsItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageGenSettingsItemProvider.java
index 0b7ac73c3..e4c98ed95 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageGenSettingsItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageGenSettingsItemProvider.java
@@ -16,9 +16,7 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelPackage;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageItemProvider.java
index e6e84cfd7..54232e359 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageItemProvider.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/PackageItemProvider.java
@@ -16,11 +16,8 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-
import org.eclipse.emf.common.util.ResourceLocator;
-
import org.eclipse.emf.ecore.EStructuralFeature;
-
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -31,7 +28,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
-
import org.eclipse.stem.model.metamodel.MetamodelFactory;
import org.eclipse.stem.model.metamodel.MetamodelPackage;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/TransitionItemProvider.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/TransitionItemProvider.java
new file mode 100644
index 000000000..bf7d91509
--- /dev/null
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/provider/TransitionItemProvider.java
@@ -0,0 +1,279 @@
+/**
+ *
+ * Copyright (c) 2012 Bundesinstitut für Risikobewertung 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:
+ * Bundesinstitut für Risikobewertung - initial API and implementation
+ */
+package org.eclipse.stem.model.metamodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.model.metamodel.MetamodelPackage;
+import org.eclipse.stem.model.metamodel.Transition;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.model.metamodel.Transition} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TransitionItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TransitionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSourcePropertyDescriptor(object);
+ addTargetPropertyDescriptor(object);
+ addForIncidencePropertyDescriptor(object);
+ addNamePropertyDescriptor(object);
+ addExpressionPropertyDescriptor(object);
+ addCompiledExpressionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Source feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSourcePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_source_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_source_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__SOURCE,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Target feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTargetPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_target_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_target_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__TARGET,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the For Incidence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addForIncidencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_forIncidence_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_forIncidence_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__FOR_INCIDENCE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_name_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__NAME,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Expression feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_expression_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_expression_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__EXPRESSION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Compiled Expression feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCompiledExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Transition_compiledExpression_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Transition_compiledExpression_feature", "_UI_Transition_type"),
+ MetamodelPackage.Literals.TRANSITION__COMPILED_EXPRESSION,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Transition.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Transition"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Transition)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Transition_type") :
+ getString("_UI_Transition_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Transition.class)) {
+ case MetamodelPackage.TRANSITION__NAME:
+ case MetamodelPackage.TRANSITION__EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return MetamodelEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelAdapterFactory.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelAdapterFactory.java
index 88b6633e4..5ba9cc813 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelAdapterFactory.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelAdapterFactory.java
@@ -12,11 +12,8 @@ package org.eclipse.stem.model.metamodel.util;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
-
import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-
import org.eclipse.emf.ecore.EObject;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
@@ -26,6 +23,7 @@ import org.eclipse.stem.model.metamodel.ModelGenSettings;
import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
+import org.eclipse.stem.model.metamodel.Transition;
/**
* <!-- begin-user-doc -->
@@ -120,6 +118,10 @@ public class MetamodelAdapterFactory extends AdapterFactoryImpl {
return createModelGenSettingsAdapter();
}
@Override
+ public Adapter caseTransition(Transition object) {
+ return createTransitionAdapter();
+ }
+ @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -252,6 +254,20 @@ public class MetamodelAdapterFactory extends AdapterFactoryImpl {
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.model.metamodel.Transition <em>Transition</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.model.metamodel.Transition
+ * @generated
+ */
+ public Adapter createTransitionAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for an object of class '{@link org.eclipse.stem.model.metamodel.PackageGenSettings <em>Package Gen Settings</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
diff --git a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelSwitch.java b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelSwitch.java
index c9debc6f6..0421a3a22 100644
--- a/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelSwitch.java
+++ b/modelgen/org.eclipse.stem.model/src/org/eclipse/stem/model/metamodel/util/MetamodelSwitch.java
@@ -12,9 +12,7 @@ package org.eclipse.stem.model.metamodel.util;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
-
import org.eclipse.emf.ecore.util.Switch;
-
import org.eclipse.stem.model.metamodel.AuthorDetails;
import org.eclipse.stem.model.metamodel.Compartment;
import org.eclipse.stem.model.metamodel.CompartmentGroup;
@@ -24,6 +22,7 @@ import org.eclipse.stem.model.metamodel.ModelGenSettings;
import org.eclipse.stem.model.metamodel.ModelParam;
import org.eclipse.stem.model.metamodel.ModelParamConstraint;
import org.eclipse.stem.model.metamodel.PackageGenSettings;
+import org.eclipse.stem.model.metamodel.Transition;
/**
* <!-- begin-user-doc -->
@@ -136,6 +135,12 @@ public class MetamodelSwitch<T> extends Switch<T> {
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case MetamodelPackage.TRANSITION: {
+ Transition transition = (Transition)theEObject;
+ T result = caseTransition(transition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
default: return defaultCase(theEObject);
}
}
@@ -261,6 +266,21 @@ public class MetamodelSwitch<T> extends Switch<T> {
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransition(Transition object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>Package Gen Settings</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;

Back to the top