summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmusset2009-03-05 11:51:41 (EST)
committerjmusset2009-03-05 11:51:41 (EST)
commit5b777182dd68d5bad61e2e7cec3298837d46f896 (patch)
treea4a0e88653a1e5f33f427ab761b26bb524932a36
parenta2d4926c488513473d6a6240b5d7206def556342 (diff)
downloadorg.eclipse.acceleo-5b777182dd68d5bad61e2e7cec3298837d46f896.zip
org.eclipse.acceleo-5b777182dd68d5bad61e2e7cec3298837d46f896.tar.gz
org.eclipse.acceleo-5b777182dd68d5bad61e2e7cec3298837d46f896.tar.bz2
Project renaming from MTL to Acceleo
-rw-r--r--plugins/org.eclipse.acceleo.parser/.checkstyle12
-rw-r--r--plugins/org.eclipse.acceleo.parser/.classpath8
-rw-r--r--plugins/org.eclipse.acceleo.parser/.project34
-rw-r--r--plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.ui.prefs3
-rw-r--r--plugins/org.eclipse.acceleo.parser/META-INF/MANIFEST.MF20
-rw-r--r--plugins/org.eclipse.acceleo.parser/about.html57
-rw-r--r--plugins/org.eclipse.acceleo.parser/build.properties21
-rw-r--r--plugins/org.eclipse.acceleo.parser/model/MTLCST.ecore145
-rw-r--r--plugins/org.eclipse.acceleo.parser/model/MTLCST.genmodel245
-rw-r--r--plugins/org.eclipse.acceleo.parser/plugin.properties12
-rw-r--r--plugins/org.eclipse.acceleo.parser/plugin.xml24
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Block.java73
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CSTNode.java85
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Comment.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstFactory.java212
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstPackage.java3104
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/FileBlock.java114
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ForBlock.java195
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/IfBlock.java102
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/InitSection.java46
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/LetBlock.java102
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Macro.java73
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModelExpression.java139
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Module.java98
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleElement.java86
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleExtendsValue.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleImportsValue.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/OpenModeKind.java210
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ProtectedAreaBlock.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Query.java101
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Template.java91
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateExpression.java22
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateOverridesValue.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TextExpression.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TraceBlock.java55
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TypedModel.java47
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Variable.java111
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/VisibilityKind.java237
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/BlockImpl.java234
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CommentImpl.java169
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstFactoryImpl.java446
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstPackageImpl.java1468
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/FileBlockImpl.java342
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ForBlockImpl.java582
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/IfBlockImpl.java311
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/InitSectionImpl.java285
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/LetBlockImpl.java313
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/MacroImpl.java379
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModelExpressionImpl.java418
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleElementImpl.java340
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleExtendsValueImpl.java283
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImpl.java437
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImportsValueImpl.java283
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ProtectedAreaBlockImpl.java191
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/QueryImpl.java304
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateExpressionImpl.java227
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateImpl.java442
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateOverridesValueImpl.java283
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TextExpressionImpl.java170
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TraceBlockImpl.java191
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TypedModelImpl.java268
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/VariableImpl.java429
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstAdapterFactory.java608
-rw-r--r--plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstSwitch.java850
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/AcceleoParserMessages.java81
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/IAcceleoParserProblemsConstants.java48
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/acceleoparsermessages.properties49
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ASTFactory.java553
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/CST2ASTConverter.java975
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/CST2ASTConverterWithResolver.java1099
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/IASTLogHandler.java32
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/IASTProvider.java51
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ocl/OCLParser.java1049
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ocl/environment/AcceleoEnvironment.java233
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ocl/environment/AcceleoEnvironmentFactory.java57
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/CSTParser.java1165
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/CSTParserBlock.java1085
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/FileContent.java107
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/ISequence.java52
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/ParserUtils.java267
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/Region.java139
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/Sequence.java351
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/cst/utils/SequenceBlock.java441
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/parser/AcceleoParser.java183
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/parser/AcceleoParserProblem.java104
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/parser/AcceleoParserProblems.java97
-rw-r--r--plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/parser/AcceleoSourceBuffer.java280
88 files changed, 24972 insertions, 0 deletions
diff --git a/plugins/org.eclipse.acceleo.parser/.checkstyle b/plugins/org.eclipse.acceleo.parser/.checkstyle
new file mode 100644
index 0000000..6703757
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/.checkstyle
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <local-check-config name="Acceleo" location="/org.eclipse.acceleo-feature/codestyle/AcceleoCheckstyleConfiguration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="tous" enabled="true" check-config-name="Acceleo" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="src-gen"/>
+ </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.acceleo.parser/.classpath b/plugins/org.eclipse.acceleo.parser/.classpath
new file mode 100644
index 0000000..ea6aae6
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.acceleo.parser/.project b/plugins/org.eclipse.acceleo.parser/.project
new file mode 100644
index 0000000..6e926c7
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.acceleo.parser</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>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..98c6c2c
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Fri May 23 13:23:52 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..fb2373b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Sat May 31 00:04:40 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
diff --git a/plugins/org.eclipse.acceleo.parser/META-INF/MANIFEST.MF b/plugins/org.eclipse.acceleo.parser/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b621aee
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.acceleo.parser;singleton:=true
+Bundle-Version: 0.8.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.acceleo.model,
+ org.eclipse.ocl.ecore,
+ org.eclipse.acceleo.common
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.acceleo.parser.cst;x-friends:="org.eclipse.acceleo.ide.ui,org.eclipse.acceleo.parser.tests",
+ org.eclipse.acceleo.parser,
+ org.eclipse.acceleo.internal.parser.ast;x-friends:="org.eclipse.acceleo.parser.tests,org.eclipse.acceleo.ide.ui",
+ org.eclipse.acceleo.internal.parser.ast.ocl;x-friends:="org.eclipse.acceleo.parser.tests,org.eclipse.acceleo.ide.ui",
+ org.eclipse.acceleo.internal.parser.cst;x-friends:="org.eclipse.acceleo.parser.tests,org.eclipse.acceleo.ide.ui",
+ org.eclipse.acceleo.internal.parser.cst.utils;x-friends:="org.eclipse.acceleo.parser.tests,org.eclipse.acceleo.ide.ui,org.eclipse.acceleo.ide.ui.tests"
diff --git a/plugins/org.eclipse.acceleo.parser/about.html b/plugins/org.eclipse.acceleo.parser/about.html
new file mode 100644
index 0000000..7e1117e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/about.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>About</title>
+</head><body lang="EN-US">
+<h2>About This Content</h2>
+
+<em>July 25, 2008</em></p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+
+ <h3>Third Party Content</h3>
+ <p>The Content includes items that have been sourced from third parties as set out below. If you
+ did not receive this Content directly from the Eclipse Foundation, the following is provided
+ for informational purposes only, and you should look to the Redistributor's license for
+ terms and conditions of use.</p>
+ <p><em>
+ <br><br>
+ <strong>OMG MOF 2.0 Specification (06-01-01)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/technology/documents/formal/mof.htm">MOF 2.0 main page</a></li>
+ <li><a href="http://www.omg.org/docs/formal/06-01-01.pdf">MOF 2.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ <strong>OMG OCL 2.0 specification (06-05-01)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/technology/documents/formal/ocl.htm">OCL 2.0 main page</a></li>
+ <li><a href="http://www.omg.org/docs/formal/06-05-01.pdf">OCL 2.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ <strong>OMG MTL 1.0 specification (08-01-16)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/spec/MOFM2T/1.0/">MTL 1.0 main page</a></li>
+ <li><a href="http://www.omg.org/spec/MOFM2T/1.0/PDF">MTL 1.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ </em></p>
+ <p>A detailed list of fixes and clarifications with respect to those specifications may be found in the plug-in directly realizing them.</p>
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.acceleo.parser/build.properties b/plugins/org.eclipse.acceleo.parser/build.properties
new file mode 100644
index 0000000..b1de3fc
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/build.properties
@@ -0,0 +1,21 @@
+################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# 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:
+# Obeo - initial API and implementation
+################################################################################
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = src-gen/,\
+ src/
+output.. = bin/
+Bundle-ClassPath: .
diff --git a/plugins/org.eclipse.acceleo.parser/model/MTLCST.ecore b/plugins/org.eclipse.acceleo.parser/model/MTLCST.ecore
new file mode 100644
index 0000000..f46ec9f
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/model/MTLCST.ecore
@@ -0,0 +1,145 @@
+<?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="cst"
+ nsURI="http://www.eclipse.org/acceleo/mtl/cst/0.8.0" nsPrefix="cst">
+ <eClassifiers xsi:type="ecore:EClass" name="CSTNode" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="startPosition" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="endPosition" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Module" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage #//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="input" lowerBound="1" upperBound="-1"
+ eType="#//TypedModel" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedModuleElement" lowerBound="1"
+ upperBound="-1" eType="#//ModuleElement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extends" upperBound="-1"
+ eType="#//ModuleExtendsValue" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+ eType="#//ModuleImportsValue" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModuleExtendsValue" eSuperTypes="#//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModuleImportsValue" eSuperTypes="#//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedModel" eSuperTypes="#//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="takesTypesFrom" lowerBound="1"
+ upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModuleElement" abstract="true" eSuperTypes="#//CSTNode">
+ <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:EAttribute" name="visibility" lowerBound="1"
+ eType="#//VisibilityKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+ <eLiterals name="Private"/>
+ <eLiterals name="Protected" value="1"/>
+ <eLiterals name="Public" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//ModuleElement #//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Template" eSuperTypes="#//Block #//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="overrides" upperBound="-1"
+ eType="#//TemplateOverridesValue" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="#//Variable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateOverridesValue" eSuperTypes="#//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//CSTNode">
+ <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:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initExpression" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateExpression" eSuperTypes="#//CSTNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ModelExpression" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" eType="#//ModelExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="each" eType="#//ModelExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TextExpression" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="#//TemplateExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="init" eType="#//InitSection"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//TemplateExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InitSection" eSuperTypes="#//CSTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
+ upperBound="-1" eType="#//Variable" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtectedAreaBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="marker" lowerBound="1"
+ eType="#//ModelExpression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ForBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" lowerBound="1"
+ eType="#//Variable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="iterSet" lowerBound="1"
+ eType="#//ModelExpression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" eType="#//ModelExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="each" eType="#//ModelExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" eType="#//ModelExpression"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IfBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ifExpr" lowerBound="1"
+ eType="#//ModelExpression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Block"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseIf" upperBound="-1"
+ eType="#//IfBlock" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LetBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseLet" upperBound="-1"
+ eType="#//LetBlock" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Block"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="letVariable" lowerBound="1"
+ eType="#//Variable" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FileBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="openMode" lowerBound="1"
+ eType="#//OpenModeKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fileUrl" lowerBound="1"
+ eType="#//ModelExpression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="uniqId" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="OpenModeKind">
+ <eLiterals name="Append"/>
+ <eLiterals name="OverWrite" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TraceBlock" eSuperTypes="#//Block">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modelElement" lowerBound="1"
+ eType="#//ModelExpression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Macro" eSuperTypes="#//Block #//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="#//Variable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Query" eSuperTypes="#//ModuleElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+ eType="#//Variable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//ModelExpression"
+ containment="true"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.acceleo.parser/model/MTLCST.genmodel b/plugins/org.eclipse.acceleo.parser/model/MTLCST.genmodel
new file mode 100644
index 0000000..b480236
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/model/MTLCST.genmodel
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="ASCII"?>
+<genmodel:GenModel 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:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.acceleo.parser/src-gen" editDirectory="/org.eclipse.acceleo.parser.edit/src-gen" editorDirectory="/org.eclipse.acceleo.parser.editor/src-gen" modelPluginID="org.eclipse.acceleo.parser" modelName="MTLCST" editPluginClass="org.eclipse.acceleo.parser.provider.MtlEditPlugin" editorPluginClass="org.eclipse.acceleo.parser.presentation.MtlEditorPlugin" nonNLSMarkers="true" testsDirectory="/org.eclipse.acceleo.parser.tests/src-gen" testSuiteClass="org.eclipse.acceleo.parser.tests.MtlAllTests" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false">
+ <foreignModel>MTLCST.ecore</foreignModel>
+ <genPackages prefix="Cst" basePackage="org.eclipse.acceleo.parser" disposableProviderFactory="true">
+ <ecorePackage href="MTLCST.ecore#/"/>
+ <genEnums typeSafeEnumCompatible="false">
+ <ecoreEnum href="MTLCST.ecore#//VisibilityKind"/>
+ <genEnumLiterals>
+ <ecoreEnumLiteral href="MTLCST.ecore#//VisibilityKind/Private"/>
+ </genEnumLiterals>
+ <genEnumLiterals>
+ <ecoreEnumLiteral href="MTLCST.ecore#//VisibilityKind/Protected"/>
+ </genEnumLiterals>
+ <genEnumLiterals>
+ <ecoreEnumLiteral href="MTLCST.ecore#//VisibilityKind/Public"/>
+ </genEnumLiterals>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false">
+ <ecoreEnum href="MTLCST.ecore#//OpenModeKind"/>
+ <genEnumLiterals>
+ <ecoreEnumLiteral href="MTLCST.ecore#//OpenModeKind/Append"/>
+ </genEnumLiterals>
+ <genEnumLiterals>
+ <ecoreEnumLiteral href="MTLCST.ecore#//OpenModeKind/OverWrite"/>
+ </genEnumLiterals>
+ </genEnums>
+ <genClasses image="false">
+ <ecoreClass href="MTLCST.ecore#//CSTNode"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//CSTNode/startPosition"/>
+ </genFeatures>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//CSTNode/endPosition"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Module"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Module/input"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Module/ownedModuleElement"/>
+ </genFeatures>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Module/extends"/>
+ </genFeatures>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Module/imports"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//ModuleExtendsValue"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//ModuleExtendsValue/name"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//ModuleImportsValue"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//ModuleImportsValue/name"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//TypedModel"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//TypedModel/takesTypesFrom"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses image="false">
+ <ecoreClass href="MTLCST.ecore#//ModuleElement"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//ModuleElement/name"/>
+ </genFeatures>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//ModuleElement/visibility"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Comment"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//Comment/body"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Template"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Template/overrides"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Template/parameter"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Template/guard"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//TemplateOverridesValue"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//TemplateOverridesValue/name"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Variable"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//Variable/name"/>
+ </genFeatures>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//Variable/type"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Variable/initExpression"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//TemplateExpression"/>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//ModelExpression"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//ModelExpression/body"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ModelExpression/before"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ModelExpression/each"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ModelExpression/after"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//TextExpression"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//TextExpression/value"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Block"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Block/init"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Block/body"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//InitSection"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//InitSection/variable"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//ProtectedAreaBlock"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ProtectedAreaBlock/marker"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//ForBlock"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/loopVariable"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/iterSet"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/before"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/each"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/after"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//ForBlock/guard"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//IfBlock"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//IfBlock/ifExpr"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//IfBlock/else"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//IfBlock/elseIf"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//LetBlock"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//LetBlock/elseLet"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//LetBlock/else"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//LetBlock/letVariable"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//FileBlock"/>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//FileBlock/openMode"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//FileBlock/fileUrl"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//FileBlock/uniqId"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//TraceBlock"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//TraceBlock/modelElement"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Macro"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Macro/parameter"/>
+ </genFeatures>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//Macro/type"/>
+ </genFeatures>
+ </genClasses>
+ <genClasses>
+ <ecoreClass href="MTLCST.ecore#//Query"/>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Query/parameter"/>
+ </genFeatures>
+ <genFeatures createChild="false">
+ <ecoreFeature xsi:type="ecore:EAttribute" href="MTLCST.ecore#//Query/type"/>
+ </genFeatures>
+ <genFeatures property="None" children="true" createChild="true">
+ <ecoreFeature xsi:type="ecore:EReference" href="MTLCST.ecore#//Query/expression"/>
+ </genFeatures>
+ </genClasses>
+ </genPackages>
+ <usedGenPackages href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"/>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.acceleo.parser/plugin.properties b/plugins/org.eclipse.acceleo.parser/plugin.properties
new file mode 100644
index 0000000..7a4e7af
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# 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:
+# Obeo - initial API and implementation
+#################################################################################
+pluginName = Acceleo Parser
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.acceleo.parser/plugin.xml b/plugins/org.eclipse.acceleo.parser/plugin.xml
new file mode 100644
index 0000000..53cc369
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+Copyright (c) 2008, 2009 Obeo.
+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:
+ Obeo - initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.eclipse.org/acceleo/mtl/cst/0.8.0"
+ class="org.eclipse.acceleo.parser.cst.CstPackage"
+ genModel="model/MTLCST.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Block.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Block.java
new file mode 100644
index 0000000..1c7c08a
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Block.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- 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.acceleo.parser.cst.Block#getInit <em>Init</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Block#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getBlock()
+ * @model
+ * @generated
+ */
+public interface Block extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Init</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>Init</em>' containment reference.
+ * @see #setInit(InitSection)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getBlock_Init()
+ * @model containment="true"
+ * @generated
+ */
+ InitSection getInit();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Block#getInit <em>Init</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Init</em>' containment reference.
+ * @see #getInit()
+ * @generated
+ */
+ void setInit(InitSection value);
+
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.parser.cst.TemplateExpression}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Body</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>Body</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getBlock_Body()
+ * @model containment="true"
+ * @generated
+ */
+ EList<TemplateExpression> getBody();
+
+} // Block
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CSTNode.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CSTNode.java
new file mode 100644
index 0000000..8c549db
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CSTNode.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>CST Node</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.CSTNode#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.CSTNode#getEndPosition <em>End Position</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getCSTNode()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface CSTNode extends EObject {
+ /**
+ * Returns the value of the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Start Position</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Start Position</em>' attribute.
+ * @see #setStartPosition(int)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getCSTNode_StartPosition()
+ * @model
+ * @generated
+ */
+ int getStartPosition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.CSTNode#getStartPosition <em>Start Position</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Start Position</em>' attribute.
+ * @see #getStartPosition()
+ * @generated
+ */
+ void setStartPosition(int value);
+
+ /**
+ * Returns the value of the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>End Position</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>End Position</em>' attribute.
+ * @see #setEndPosition(int)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getCSTNode_EndPosition()
+ * @model
+ * @generated
+ */
+ int getEndPosition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.CSTNode#getEndPosition <em>End Position</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>End Position</em>' attribute.
+ * @see #getEndPosition()
+ * @generated
+ */
+ void setEndPosition(int value);
+
+} // CSTNode
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Comment.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Comment.java
new file mode 100644
index 0000000..2e7ad37
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Comment.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Comment</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Comment#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getComment()
+ * @model
+ * @generated
+ */
+public interface Comment extends ModuleElement, TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' attribute. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Body</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Body</em>' attribute.
+ * @see #setBody(String)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getComment_Body()
+ * @model required="true"
+ * @generated
+ */
+ String getBody();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Comment#getBody <em>Body</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Body</em>' attribute.
+ * @see #getBody()
+ * @generated
+ */
+ void setBody(String value);
+
+} // Comment
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstFactory.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstFactory.java
new file mode 100644
index 0000000..7f43aa9
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstFactory.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+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.acceleo.parser.cst.CstPackage
+ * @generated
+ */
+public interface CstFactory extends EFactory {
+ /**
+ * The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ CstFactory eINSTANCE = org.eclipse.acceleo.parser.cst.impl.CstFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Module</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Module</em>'.
+ * @generated
+ */
+ Module createModule();
+
+ /**
+ * Returns a new object of class '<em>Module Extends Value</em>'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return a new object of class '<em>Module Extends Value</em>'.
+ * @generated
+ */
+ ModuleExtendsValue createModuleExtendsValue();
+
+ /**
+ * Returns a new object of class '<em>Module Imports Value</em>'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return a new object of class '<em>Module Imports Value</em>'.
+ * @generated
+ */
+ ModuleImportsValue createModuleImportsValue();
+
+ /**
+ * Returns a new object of class '<em>Typed Model</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Typed Model</em>'.
+ * @generated
+ */
+ TypedModel createTypedModel();
+
+ /**
+ * Returns a new object of class '<em>Comment</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Comment</em>'.
+ * @generated
+ */
+ Comment createComment();
+
+ /**
+ * Returns a new object of class '<em>Template</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Template</em>'.
+ * @generated
+ */
+ Template createTemplate();
+
+ /**
+ * Returns a new object of class '<em>Template Overrides Value</em>'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return a new object of class '<em>Template Overrides Value</em>'.
+ * @generated
+ */
+ TemplateOverridesValue createTemplateOverridesValue();
+
+ /**
+ * Returns a new object of class '<em>Variable</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Variable</em>'.
+ * @generated
+ */
+ Variable createVariable();
+
+ /**
+ * Returns a new object of class '<em>Template Expression</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Template Expression</em>'.
+ * @generated
+ */
+ TemplateExpression createTemplateExpression();
+
+ /**
+ * Returns a new object of class '<em>Model Expression</em>'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return a new object of class '<em>Model Expression</em>'.
+ * @generated
+ */
+ ModelExpression createModelExpression();
+
+ /**
+ * Returns a new object of class '<em>Text Expression</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Text Expression</em>'.
+ * @generated
+ */
+ TextExpression createTextExpression();
+
+ /**
+ * 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>Init Section</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Init Section</em>'.
+ * @generated
+ */
+ InitSection createInitSection();
+
+ /**
+ * Returns a new object of class '<em>Protected Area Block</em>'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return a new object of class '<em>Protected Area Block</em>'.
+ * @generated
+ */
+ ProtectedAreaBlock createProtectedAreaBlock();
+
+ /**
+ * Returns a new object of class '<em>For Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>For Block</em>'.
+ * @generated
+ */
+ ForBlock createForBlock();
+
+ /**
+ * Returns a new object of class '<em>If Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>If Block</em>'.
+ * @generated
+ */
+ IfBlock createIfBlock();
+
+ /**
+ * Returns a new object of class '<em>Let Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Let Block</em>'.
+ * @generated
+ */
+ LetBlock createLetBlock();
+
+ /**
+ * Returns a new object of class '<em>File Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>File Block</em>'.
+ * @generated
+ */
+ FileBlock createFileBlock();
+
+ /**
+ * Returns a new object of class '<em>Trace Block</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Trace Block</em>'.
+ * @generated
+ */
+ TraceBlock createTraceBlock();
+
+ /**
+ * Returns a new object of class '<em>Macro</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Macro</em>'.
+ * @generated
+ */
+ Macro createMacro();
+
+ /**
+ * Returns a new object of class '<em>Query</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Query</em>'.
+ * @generated
+ */
+ Query createQuery();
+
+ /**
+ * Returns the package supported by this factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ CstPackage getCstPackage();
+
+} // CstFactory
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstPackage.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstPackage.java
new file mode 100644
index 0000000..41f1a11
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/CstPackage.java
@@ -0,0 +1,3104 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+/**
+ * <!-- 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.acceleo.parser.cst.CstFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface CstPackage extends EPackage {
+ /**
+ * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "cst"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/acceleo/mtl/cst/0.8.0"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "cst"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ CstPackage eINSTANCE = org.eclipse.acceleo.parser.cst.impl.CstPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.CSTNode <em>CST Node</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.CSTNode
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getCSTNode()
+ * @generated
+ */
+ int CST_NODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int CST_NODE__START_POSITION = 0;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int CST_NODE__END_POSITION = 1;
+
+ /**
+ * The number of structural features of the '<em>CST Node</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int CST_NODE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl <em>Module</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModule()
+ * @generated
+ */
+ int MODULE = 1;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EANNOTATIONS = EcorePackage.EPACKAGE__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NAME = EcorePackage.EPACKAGE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ns URI</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NS_URI = EcorePackage.EPACKAGE__NS_URI;
+
+ /**
+ * The feature id for the '<em><b>Ns Prefix</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__NS_PREFIX = EcorePackage.EPACKAGE__NS_PREFIX;
+
+ /**
+ * The feature id for the '<em><b>EFactory Instance</b></em>' reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EFACTORY_INSTANCE = EcorePackage.EPACKAGE__EFACTORY_INSTANCE;
+
+ /**
+ * The feature id for the '<em><b>EClassifiers</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ECLASSIFIERS = EcorePackage.EPACKAGE__ECLASSIFIERS;
+
+ /**
+ * The feature id for the '<em><b>ESubpackages</b></em>' containment reference list. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ESUBPACKAGES = EcorePackage.EPACKAGE__ESUBPACKAGES;
+
+ /**
+ * The feature id for the '<em><b>ESuper Package</b></em>' container reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__ESUPER_PACKAGE = EcorePackage.EPACKAGE__ESUPER_PACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__START_POSITION = EcorePackage.EPACKAGE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__END_POSITION = EcorePackage.EPACKAGE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Input</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__INPUT = EcorePackage.EPACKAGE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Owned Module Element</b></em>' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__OWNED_MODULE_ELEMENT = EcorePackage.EPACKAGE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Extends</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__EXTENDS = EcorePackage.EPACKAGE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Imports</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE__IMPORTS = EcorePackage.EPACKAGE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Module</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_FEATURE_COUNT = EcorePackage.EPACKAGE_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl
+ * <em>Module Extends Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleExtendsValue()
+ * @generated
+ */
+ int MODULE_EXTENDS_VALUE = 2;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_EXTENDS_VALUE__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_EXTENDS_VALUE__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_EXTENDS_VALUE__NAME = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Module Extends Value</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_EXTENDS_VALUE_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl
+ * <em>Module Imports Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleImportsValue()
+ * @generated
+ */
+ int MODULE_IMPORTS_VALUE = 3;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_IMPORTS_VALUE__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_IMPORTS_VALUE__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_IMPORTS_VALUE__NAME = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Module Imports Value</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_IMPORTS_VALUE_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TypedModelImpl <em>Typed Model</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TypedModelImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTypedModel()
+ * @generated
+ */
+ int TYPED_MODEL = 4;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Takes Types From</b></em>' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL__TAKES_TYPES_FROM = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Typed Model</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TYPED_MODEL_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl <em>Module Element</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleElement()
+ * @generated
+ */
+ int MODULE_ELEMENT = 5;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__NAME = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT__VISIBILITY = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Module Element</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODULE_ELEMENT_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.CommentImpl <em>Comment</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.CommentImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getComment()
+ * @generated
+ */
+ int COMMENT = 6;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT__START_POSITION = MODULE_ELEMENT__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT__END_POSITION = MODULE_ELEMENT__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT__NAME = MODULE_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT__VISIBILITY = MODULE_ELEMENT__VISIBILITY;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT__BODY = MODULE_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Comment</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMMENT_FEATURE_COUNT = MODULE_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl
+ * <em>Template Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplateExpression()
+ * @generated
+ */
+ int TEMPLATE_EXPRESSION = 10;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The number of structural features of the '<em>Template Expression</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_EXPRESSION_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.BlockImpl <em>Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.BlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getBlock()
+ * @generated
+ */
+ int BLOCK = 13;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__INIT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK__BODY = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BLOCK_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl <em>Template</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplate()
+ * @generated
+ */
+ int TEMPLATE = 7;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__NAME = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__VISIBILITY = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Overrides</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__OVERRIDES = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__PARAMETER = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__GUARD = BLOCK_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Template</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl
+ * <em>Template Overrides Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplateOverridesValue()
+ * @generated
+ */
+ int TEMPLATE_OVERRIDES_VALUE = 8;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_OVERRIDES_VALUE__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_OVERRIDES_VALUE__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_OVERRIDES_VALUE__NAME = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Template Overrides Value</em>' class. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_OVERRIDES_VALUE_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl <em>Variable</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.VariableImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getVariable()
+ * @generated
+ */
+ int VARIABLE = 9;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE__NAME = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE__TYPE = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Init Expression</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE__INIT_EXPRESSION = CST_NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Variable</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VARIABLE_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl
+ * <em>Model Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModelExpression()
+ * @generated
+ */
+ int MODEL_EXPRESSION = 11;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__BODY = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__BEFORE = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__EACH = TEMPLATE_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION__AFTER = TEMPLATE_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Model Expression</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MODEL_EXPRESSION_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TextExpressionImpl
+ * <em>Text Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TextExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTextExpression()
+ * @generated
+ */
+ int TEXT_EXPRESSION = 12;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEXT_EXPRESSION__START_POSITION = TEMPLATE_EXPRESSION__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEXT_EXPRESSION__END_POSITION = TEMPLATE_EXPRESSION__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEXT_EXPRESSION__VALUE = TEMPLATE_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Text Expression</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TEXT_EXPRESSION_FEATURE_COUNT = TEMPLATE_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.InitSectionImpl <em>Init Section</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.InitSectionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getInitSection()
+ * @generated
+ */
+ int INIT_SECTION = 14;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__START_POSITION = CST_NODE__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__END_POSITION = CST_NODE__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Variable</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION__VARIABLE = CST_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Init Section</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INIT_SECTION_FEATURE_COUNT = CST_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ProtectedAreaBlockImpl
+ * <em>Protected Area Block</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ProtectedAreaBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getProtectedAreaBlock()
+ * @generated
+ */
+ int PROTECTED_AREA_BLOCK = 15;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Marker</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK__MARKER = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Protected Area Block</em>' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PROTECTED_AREA_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl <em>For Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ForBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getForBlock()
+ * @generated
+ */
+ int FOR_BLOCK = 16;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Loop Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__LOOP_VARIABLE = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Iter Set</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__ITER_SET = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__BEFORE = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__EACH = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__AFTER = BLOCK_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK__GUARD = BLOCK_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>For Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FOR_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.IfBlockImpl <em>If Block</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.IfBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getIfBlock()
+ * @generated
+ */
+ int IF_BLOCK = 17;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>If Expr</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__IF_EXPR = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ELSE = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Else If</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK__ELSE_IF = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>If Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int IF_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.LetBlockImpl <em>Let Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.LetBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getLetBlock()
+ * @generated
+ */
+ int LET_BLOCK = 18;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Else Let</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ELSE_LET = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__ELSE = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Let Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK__LET_VARIABLE = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Let Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LET_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.FileBlockImpl <em>File Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.FileBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getFileBlock()
+ * @generated
+ */
+ int FILE_BLOCK = 19;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Open Mode</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__OPEN_MODE = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>File Url</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__FILE_URL = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Uniq Id</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK__UNIQ_ID = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>File Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.TraceBlockImpl <em>Trace Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TraceBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTraceBlock()
+ * @generated
+ */
+ int TRACE_BLOCK = 20;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Model Element</b></em>' containment reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK__MODEL_ELEMENT = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Trace Block</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int TRACE_BLOCK_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.MacroImpl <em>Macro</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.MacroImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getMacro()
+ * @generated
+ */
+ int MACRO = 21;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__START_POSITION = BLOCK__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__END_POSITION = BLOCK__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Init</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__INIT = BLOCK__INIT;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' containment reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__BODY = BLOCK__BODY;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__NAME = BLOCK_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__VISIBILITY = BLOCK_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__PARAMETER = BLOCK_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO__TYPE = BLOCK_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Macro</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int MACRO_FEATURE_COUNT = BLOCK_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.impl.QueryImpl <em>Query</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.QueryImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getQuery()
+ * @generated
+ */
+ int QUERY = 22;
+
+ /**
+ * The feature id for the '<em><b>Start Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__START_POSITION = MODULE_ELEMENT__START_POSITION;
+
+ /**
+ * The feature id for the '<em><b>End Position</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__END_POSITION = MODULE_ELEMENT__END_POSITION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__NAME = MODULE_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Visibility</b></em>' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__VISIBILITY = MODULE_ELEMENT__VISIBILITY;
+
+ /**
+ * The feature id for the '<em><b>Parameter</b></em>' containment reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__PARAMETER = MODULE_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__TYPE = MODULE_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY__EXPRESSION = MODULE_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Query</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int QUERY_FEATURE_COUNT = MODULE_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.VisibilityKind <em>Visibility Kind</em>}' enum.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.VisibilityKind
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getVisibilityKind()
+ * @generated
+ */
+ int VISIBILITY_KIND = 23;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.acceleo.parser.cst.OpenModeKind <em>Open Mode Kind</em>}' enum.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.OpenModeKind
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getOpenModeKind()
+ * @generated
+ */
+ int OPEN_MODE_KIND = 24;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.CSTNode <em>CST Node</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>CST Node</em>'.
+ * @see org.eclipse.acceleo.parser.cst.CSTNode
+ * @generated
+ */
+ EClass getCSTNode();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.CSTNode#getStartPosition
+ * <em>Start Position</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Start Position</em>'.
+ * @see org.eclipse.acceleo.parser.cst.CSTNode#getStartPosition()
+ * @see #getCSTNode()
+ * @generated
+ */
+ EAttribute getCSTNode_StartPosition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.CSTNode#getEndPosition
+ * <em>End Position</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>End Position</em>'.
+ * @see org.eclipse.acceleo.parser.cst.CSTNode#getEndPosition()
+ * @see #getCSTNode()
+ * @generated
+ */
+ EAttribute getCSTNode_EndPosition();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Module <em>Module</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Module
+ * @generated
+ */
+ EClass getModule();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.parser.cst.Module#getInput
+ * <em>Input</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Input</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Module#getInput()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Input();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Module#getOwnedModuleElement <em>Owned Module Element</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Owned Module Element</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Module#getOwnedModuleElement()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_OwnedModuleElement();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Module#getExtends <em>Extends</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Extends</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Module#getExtends()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Extends();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Module#getImports <em>Imports</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Imports</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Module#getImports()
+ * @see #getModule()
+ * @generated
+ */
+ EReference getModule_Imports();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue
+ * <em>Module Extends Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module Extends Value</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleExtendsValue
+ * @generated
+ */
+ EClass getModuleExtendsValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleExtendsValue#getName()
+ * @see #getModuleExtendsValue()
+ * @generated
+ */
+ EAttribute getModuleExtendsValue_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ModuleImportsValue
+ * <em>Module Imports Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module Imports Value</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleImportsValue
+ * @generated
+ */
+ EClass getModuleImportsValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.ModuleImportsValue#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleImportsValue#getName()
+ * @see #getModuleImportsValue()
+ * @generated
+ */
+ EAttribute getModuleImportsValue_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.TypedModel <em>Typed Model</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Typed Model</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TypedModel
+ * @generated
+ */
+ EClass getTypedModel();
+
+ /**
+ * Returns the meta object for the reference list '
+ * {@link org.eclipse.acceleo.parser.cst.TypedModel#getTakesTypesFrom <em>Takes Types From</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Takes Types From</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TypedModel#getTakesTypesFrom()
+ * @see #getTypedModel()
+ * @generated
+ */
+ EReference getTypedModel_TakesTypesFrom();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ModuleElement <em>Module Element</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Module Element</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleElement
+ * @generated
+ */
+ EClass getModuleElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.ModuleElement#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleElement#getName()
+ * @see #getModuleElement()
+ * @generated
+ */
+ EAttribute getModuleElement_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.ModuleElement#getVisibility
+ * <em>Visibility</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Visibility</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModuleElement#getVisibility()
+ * @see #getModuleElement()
+ * @generated
+ */
+ EAttribute getModuleElement_Visibility();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Comment <em>Comment</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Comment</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Comment
+ * @generated
+ */
+ EClass getComment();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.Comment#getBody <em>Body</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Body</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Comment#getBody()
+ * @see #getComment()
+ * @generated
+ */
+ EAttribute getComment_Body();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Template <em>Template</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Template
+ * @generated
+ */
+ EClass getTemplate();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Template#getOverrides <em>Overrides</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Overrides</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Template#getOverrides()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Overrides();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Template#getParameter <em>Parameter</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Template#getParameter()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Parameter();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.Template#getGuard
+ * <em>Guard</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Template#getGuard()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue
+ * <em>Template Overrides Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template Overrides Value</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TemplateOverridesValue
+ * @generated
+ */
+ EClass getTemplateOverridesValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TemplateOverridesValue#getName()
+ * @see #getTemplateOverridesValue()
+ * @generated
+ */
+ EAttribute getTemplateOverridesValue_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Variable <em>Variable</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Variable</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Variable
+ * @generated
+ */
+ EClass getVariable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.Variable#getName <em>Name</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Variable#getName()
+ * @see #getVariable()
+ * @generated
+ */
+ EAttribute getVariable_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.Variable#getType <em>Type</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Variable#getType()
+ * @see #getVariable()
+ * @generated
+ */
+ EAttribute getVariable_Type();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.Variable#getInitExpression <em>Init Expression</em>}'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Init Expression</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Variable#getInitExpression()
+ * @see #getVariable()
+ * @generated
+ */
+ EReference getVariable_InitExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.TemplateExpression
+ * <em>Template Expression</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Template Expression</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TemplateExpression
+ * @generated
+ */
+ EClass getTemplateExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ModelExpression
+ * <em>Model Expression</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Model Expression</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModelExpression
+ * @generated
+ */
+ EClass getModelExpression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.ModelExpression#getBody
+ * <em>Body</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Body</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModelExpression#getBody()
+ * @see #getModelExpression()
+ * @generated
+ */
+ EAttribute getModelExpression_Body();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.ModelExpression#getBefore <em>Before</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Before</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModelExpression#getBefore()
+ * @see #getModelExpression()
+ * @generated
+ */
+ EReference getModelExpression_Before();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.ModelExpression#getEach <em>Each</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Each</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModelExpression#getEach()
+ * @see #getModelExpression()
+ * @generated
+ */
+ EReference getModelExpression_Each();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.ModelExpression#getAfter <em>After</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>After</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ModelExpression#getAfter()
+ * @see #getModelExpression()
+ * @generated
+ */
+ EReference getModelExpression_After();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.TextExpression <em>Text Expression</em>}
+ * '. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Text Expression</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TextExpression
+ * @generated
+ */
+ EClass getTextExpression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.TextExpression#getValue
+ * <em>Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TextExpression#getValue()
+ * @see #getTextExpression()
+ * @generated
+ */
+ EAttribute getTextExpression_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Block <em>Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Block
+ * @generated
+ */
+ EClass getBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.Block#getInit
+ * <em>Init</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Init</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Block#getInit()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Init();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.acceleo.parser.cst.Block#getBody
+ * <em>Body</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Body</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Block#getBody()
+ * @see #getBlock()
+ * @generated
+ */
+ EReference getBlock_Body();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.InitSection <em>Init Section</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Init Section</em>'.
+ * @see org.eclipse.acceleo.parser.cst.InitSection
+ * @generated
+ */
+ EClass getInitSection();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.InitSection#getVariable <em>Variable</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Variable</em>'.
+ * @see org.eclipse.acceleo.parser.cst.InitSection#getVariable()
+ * @see #getInitSection()
+ * @generated
+ */
+ EReference getInitSection_Variable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ProtectedAreaBlock
+ * <em>Protected Area Block</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Protected Area Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ProtectedAreaBlock
+ * @generated
+ */
+ EClass getProtectedAreaBlock();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.ProtectedAreaBlock#getMarker <em>Marker</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Marker</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ProtectedAreaBlock#getMarker()
+ * @see #getProtectedAreaBlock()
+ * @generated
+ */
+ EReference getProtectedAreaBlock_Marker();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.ForBlock <em>For Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>For Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock
+ * @generated
+ */
+ EClass getForBlock();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.ForBlock#getLoopVariable <em>Loop Variable</em>}'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Loop Variable</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getLoopVariable()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_LoopVariable();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.ForBlock#getIterSet
+ * <em>Iter Set</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Iter Set</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getIterSet()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_IterSet();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.ForBlock#getBefore
+ * <em>Before</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Before</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getBefore()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Before();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.ForBlock#getEach
+ * <em>Each</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Each</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getEach()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Each();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.ForBlock#getAfter
+ * <em>After</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>After</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getAfter()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_After();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.ForBlock#getGuard
+ * <em>Guard</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Guard</em>'.
+ * @see org.eclipse.acceleo.parser.cst.ForBlock#getGuard()
+ * @see #getForBlock()
+ * @generated
+ */
+ EReference getForBlock_Guard();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.IfBlock <em>If Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>If Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.IfBlock
+ * @generated
+ */
+ EClass getIfBlock();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.IfBlock#getIfExpr
+ * <em>If Expr</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>If Expr</em>'.
+ * @see org.eclipse.acceleo.parser.cst.IfBlock#getIfExpr()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_IfExpr();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.IfBlock#getElse
+ * <em>Else</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Else</em>'.
+ * @see org.eclipse.acceleo.parser.cst.IfBlock#getElse()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_Else();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.IfBlock#getElseIf <em>Else If</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Else If</em>'.
+ * @see org.eclipse.acceleo.parser.cst.IfBlock#getElseIf()
+ * @see #getIfBlock()
+ * @generated
+ */
+ EReference getIfBlock_ElseIf();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.LetBlock <em>Let Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Let Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.LetBlock
+ * @generated
+ */
+ EClass getLetBlock();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.LetBlock#getElseLet <em>Else Let</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Else Let</em>'.
+ * @see org.eclipse.acceleo.parser.cst.LetBlock#getElseLet()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_ElseLet();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.LetBlock#getElse
+ * <em>Else</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Else</em>'.
+ * @see org.eclipse.acceleo.parser.cst.LetBlock#getElse()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_Else();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.LetBlock#getLetVariable <em>Let Variable</em>}'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Let Variable</em>'.
+ * @see org.eclipse.acceleo.parser.cst.LetBlock#getLetVariable()
+ * @see #getLetBlock()
+ * @generated
+ */
+ EReference getLetBlock_LetVariable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.FileBlock <em>File Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>File Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.FileBlock
+ * @generated
+ */
+ EClass getFileBlock();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.FileBlock#getOpenMode
+ * <em>Open Mode</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Open Mode</em>'.
+ * @see org.eclipse.acceleo.parser.cst.FileBlock#getOpenMode()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EAttribute getFileBlock_OpenMode();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.FileBlock#getFileUrl
+ * <em>File Url</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>File Url</em>'.
+ * @see org.eclipse.acceleo.parser.cst.FileBlock#getFileUrl()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EReference getFileBlock_FileUrl();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.FileBlock#getUniqId
+ * <em>Uniq Id</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Uniq Id</em>'.
+ * @see org.eclipse.acceleo.parser.cst.FileBlock#getUniqId()
+ * @see #getFileBlock()
+ * @generated
+ */
+ EReference getFileBlock_UniqId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.TraceBlock <em>Trace Block</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Trace Block</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TraceBlock
+ * @generated
+ */
+ EClass getTraceBlock();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.acceleo.parser.cst.TraceBlock#getModelElement <em>Model Element</em>}'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Model Element</em>'.
+ * @see org.eclipse.acceleo.parser.cst.TraceBlock#getModelElement()
+ * @see #getTraceBlock()
+ * @generated
+ */
+ EReference getTraceBlock_ModelElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Macro <em>Macro</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Macro</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Macro
+ * @generated
+ */
+ EClass getMacro();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Macro#getParameter <em>Parameter</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Macro#getParameter()
+ * @see #getMacro()
+ * @generated
+ */
+ EReference getMacro_Parameter();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.Macro#getType <em>Type</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Macro#getType()
+ * @see #getMacro()
+ * @generated
+ */
+ EAttribute getMacro_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.acceleo.parser.cst.Query <em>Query</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Query</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Query
+ * @generated
+ */
+ EClass getQuery();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.acceleo.parser.cst.Query#getParameter <em>Parameter</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Parameter</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Query#getParameter()
+ * @see #getQuery()
+ * @generated
+ */
+ EReference getQuery_Parameter();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.acceleo.parser.cst.Query#getType <em>Type</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Query#getType()
+ * @see #getQuery()
+ * @generated
+ */
+ EAttribute getQuery_Type();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.acceleo.parser.cst.Query#getExpression
+ * <em>Expression</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Expression</em>'.
+ * @see org.eclipse.acceleo.parser.cst.Query#getExpression()
+ * @see #getQuery()
+ * @generated
+ */
+ EReference getQuery_Expression();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.acceleo.parser.cst.VisibilityKind <em>Visibility Kind</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for enum '<em>Visibility Kind</em>'.
+ * @see org.eclipse.acceleo.parser.cst.VisibilityKind
+ * @generated
+ */
+ EEnum getVisibilityKind();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.acceleo.parser.cst.OpenModeKind <em>Open Mode Kind</em>}'.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for enum '<em>Open Mode Kind</em>'.
+ * @see org.eclipse.acceleo.parser.cst.OpenModeKind
+ * @generated
+ */
+ EEnum getOpenModeKind();
+
+ /**
+ * 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
+ */
+ CstFactory getCstFactory();
+
+ /**
+ * <!-- 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.acceleo.parser.cst.CSTNode <em>CST Node</em>}' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.CSTNode
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getCSTNode()
+ * @generated
+ */
+ EClass CST_NODE = eINSTANCE.getCSTNode();
+
+ /**
+ * The meta object literal for the '<em><b>Start Position</b></em>' attribute feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute CST_NODE__START_POSITION = eINSTANCE.getCSTNode_StartPosition();
+
+ /**
+ * The meta object literal for the '<em><b>End Position</b></em>' attribute feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute CST_NODE__END_POSITION = eINSTANCE.getCSTNode_EndPosition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl <em>Module</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModule()
+ * @generated
+ */
+ EClass MODULE = eINSTANCE.getModule();
+
+ /**
+ * The meta object literal for the '<em><b>Input</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__INPUT = eINSTANCE.getModule_Input();
+
+ /**
+ * The meta object literal for the '<em><b>Owned Module Element</b></em>' containment reference list
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__OWNED_MODULE_ELEMENT = eINSTANCE.getModule_OwnedModuleElement();
+
+ /**
+ * The meta object literal for the '<em><b>Extends</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__EXTENDS = eINSTANCE.getModule_Extends();
+
+ /**
+ * The meta object literal for the '<em><b>Imports</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODULE__IMPORTS = eINSTANCE.getModule_Imports();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl
+ * <em>Module Extends Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleExtendsValue()
+ * @generated
+ */
+ EClass MODULE_EXTENDS_VALUE = eINSTANCE.getModuleExtendsValue();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODULE_EXTENDS_VALUE__NAME = eINSTANCE.getModuleExtendsValue_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl
+ * <em>Module Imports Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleImportsValue()
+ * @generated
+ */
+ EClass MODULE_IMPORTS_VALUE = eINSTANCE.getModuleImportsValue();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODULE_IMPORTS_VALUE__NAME = eINSTANCE.getModuleImportsValue_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TypedModelImpl
+ * <em>Typed Model</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TypedModelImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTypedModel()
+ * @generated
+ */
+ EClass TYPED_MODEL = eINSTANCE.getTypedModel();
+
+ /**
+ * The meta object literal for the '<em><b>Takes Types From</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TYPED_MODEL__TAKES_TYPES_FROM = eINSTANCE.getTypedModel_TakesTypesFrom();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl
+ * <em>Module Element</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModuleElement()
+ * @generated
+ */
+ EClass MODULE_ELEMENT = eINSTANCE.getModuleElement();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODULE_ELEMENT__NAME = eINSTANCE.getModuleElement_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Visibility</b></em>' attribute feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODULE_ELEMENT__VISIBILITY = eINSTANCE.getModuleElement_Visibility();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.CommentImpl <em>Comment</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.CommentImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getComment()
+ * @generated
+ */
+ EClass COMMENT = eINSTANCE.getComment();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute COMMENT__BODY = eINSTANCE.getComment_Body();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl <em>Template</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplate()
+ * @generated
+ */
+ EClass TEMPLATE = eINSTANCE.getTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__OVERRIDES = eINSTANCE.getTemplate_Overrides();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__PARAMETER = eINSTANCE.getTemplate_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TEMPLATE__GUARD = eINSTANCE.getTemplate_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl
+ * <em>Template Overrides Value</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplateOverridesValue()
+ * @generated
+ */
+ EClass TEMPLATE_OVERRIDES_VALUE = eINSTANCE.getTemplateOverridesValue();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute TEMPLATE_OVERRIDES_VALUE__NAME = eINSTANCE.getTemplateOverridesValue_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl <em>Variable</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.VariableImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getVariable()
+ * @generated
+ */
+ EClass VARIABLE = eINSTANCE.getVariable();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute VARIABLE__NAME = eINSTANCE.getVariable_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute VARIABLE__TYPE = eINSTANCE.getVariable_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Init Expression</b></em>' containment reference feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference VARIABLE__INIT_EXPRESSION = eINSTANCE.getVariable_InitExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl
+ * <em>Template Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTemplateExpression()
+ * @generated
+ */
+ EClass TEMPLATE_EXPRESSION = eINSTANCE.getTemplateExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl
+ * <em>Model Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getModelExpression()
+ * @generated
+ */
+ EClass MODEL_EXPRESSION = eINSTANCE.getModelExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MODEL_EXPRESSION__BODY = eINSTANCE.getModelExpression_Body();
+
+ /**
+ * The meta object literal for the '<em><b>Before</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODEL_EXPRESSION__BEFORE = eINSTANCE.getModelExpression_Before();
+
+ /**
+ * The meta object literal for the '<em><b>Each</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODEL_EXPRESSION__EACH = eINSTANCE.getModelExpression_Each();
+
+ /**
+ * The meta object literal for the '<em><b>After</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MODEL_EXPRESSION__AFTER = eINSTANCE.getModelExpression_After();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TextExpressionImpl
+ * <em>Text Expression</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TextExpressionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTextExpression()
+ * @generated
+ */
+ EClass TEXT_EXPRESSION = eINSTANCE.getTextExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute TEXT_EXPRESSION__VALUE = eINSTANCE.getTextExpression_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.BlockImpl <em>Block</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.BlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getBlock()
+ * @generated
+ */
+ EClass BLOCK = eINSTANCE.getBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Init</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference BLOCK__INIT = eINSTANCE.getBlock_Init();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference BLOCK__BODY = eINSTANCE.getBlock_Body();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.InitSectionImpl
+ * <em>Init Section</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.InitSectionImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getInitSection()
+ * @generated
+ */
+ EClass INIT_SECTION = eINSTANCE.getInitSection();
+
+ /**
+ * The meta object literal for the '<em><b>Variable</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference INIT_SECTION__VARIABLE = eINSTANCE.getInitSection_Variable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ProtectedAreaBlockImpl
+ * <em>Protected Area Block</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ProtectedAreaBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getProtectedAreaBlock()
+ * @generated
+ */
+ EClass PROTECTED_AREA_BLOCK = eINSTANCE.getProtectedAreaBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Marker</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PROTECTED_AREA_BLOCK__MARKER = eINSTANCE.getProtectedAreaBlock_Marker();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl <em>For Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.ForBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getForBlock()
+ * @generated
+ */
+ EClass FOR_BLOCK = eINSTANCE.getForBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Loop Variable</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__LOOP_VARIABLE = eINSTANCE.getForBlock_LoopVariable();
+
+ /**
+ * The meta object literal for the '<em><b>Iter Set</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__ITER_SET = eINSTANCE.getForBlock_IterSet();
+
+ /**
+ * The meta object literal for the '<em><b>Before</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__BEFORE = eINSTANCE.getForBlock_Before();
+
+ /**
+ * The meta object literal for the '<em><b>Each</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__EACH = eINSTANCE.getForBlock_Each();
+
+ /**
+ * The meta object literal for the '<em><b>After</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__AFTER = eINSTANCE.getForBlock_After();
+
+ /**
+ * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FOR_BLOCK__GUARD = eINSTANCE.getForBlock_Guard();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.IfBlockImpl <em>If Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.IfBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getIfBlock()
+ * @generated
+ */
+ EClass IF_BLOCK = eINSTANCE.getIfBlock();
+
+ /**
+ * The meta object literal for the '<em><b>If Expr</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__IF_EXPR = eINSTANCE.getIfBlock_IfExpr();
+
+ /**
+ * The meta object literal for the '<em><b>Else</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__ELSE = eINSTANCE.getIfBlock_Else();
+
+ /**
+ * The meta object literal for the '<em><b>Else If</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference IF_BLOCK__ELSE_IF = eINSTANCE.getIfBlock_ElseIf();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.LetBlockImpl <em>Let Block</em>}'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.LetBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getLetBlock()
+ * @generated
+ */
+ EClass LET_BLOCK = eINSTANCE.getLetBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Else Let</b></em>' containment reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__ELSE_LET = eINSTANCE.getLetBlock_ElseLet();
+
+ /**
+ * The meta object literal for the '<em><b>Else</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__ELSE = eINSTANCE.getLetBlock_Else();
+
+ /**
+ * The meta object literal for the '<em><b>Let Variable</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LET_BLOCK__LET_VARIABLE = eINSTANCE.getLetBlock_LetVariable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.FileBlockImpl <em>File Block</em>}
+ * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.FileBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getFileBlock()
+ * @generated
+ */
+ EClass FILE_BLOCK = eINSTANCE.getFileBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Open Mode</b></em>' attribute feature. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FILE_BLOCK__OPEN_MODE = eINSTANCE.getFileBlock_OpenMode();
+
+ /**
+ * The meta object literal for the '<em><b>File Url</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FILE_BLOCK__FILE_URL = eINSTANCE.getFileBlock_FileUrl();
+
+ /**
+ * The meta object literal for the '<em><b>Uniq Id</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference FILE_BLOCK__UNIQ_ID = eINSTANCE.getFileBlock_UniqId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.TraceBlockImpl
+ * <em>Trace Block</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.TraceBlockImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getTraceBlock()
+ * @generated
+ */
+ EClass TRACE_BLOCK = eINSTANCE.getTraceBlock();
+
+ /**
+ * The meta object literal for the '<em><b>Model Element</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference TRACE_BLOCK__MODEL_ELEMENT = eINSTANCE.getTraceBlock_ModelElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.MacroImpl <em>Macro</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.MacroImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getMacro()
+ * @generated
+ */
+ EClass MACRO = eINSTANCE.getMacro();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference MACRO__PARAMETER = eINSTANCE.getMacro_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute MACRO__TYPE = eINSTANCE.getMacro_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.impl.QueryImpl <em>Query</em>}' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.impl.QueryImpl
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getQuery()
+ * @generated
+ */
+ EClass QUERY = eINSTANCE.getQuery();
+
+ /**
+ * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY__PARAMETER = eINSTANCE.getQuery_Parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute QUERY__TYPE = eINSTANCE.getQuery_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Expression</b></em>' containment reference feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference QUERY__EXPRESSION = eINSTANCE.getQuery_Expression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.VisibilityKind
+ * <em>Visibility Kind</em>}' enum. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.VisibilityKind
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getVisibilityKind()
+ * @generated
+ */
+ EEnum VISIBILITY_KIND = eINSTANCE.getVisibilityKind();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.acceleo.parser.cst.OpenModeKind <em>Open Mode Kind</em>}'
+ * enum. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.OpenModeKind
+ * @see org.eclipse.acceleo.parser.cst.impl.CstPackageImpl#getOpenModeKind()
+ * @generated
+ */
+ EEnum OPEN_MODE_KIND = eINSTANCE.getOpenModeKind();
+
+ }
+
+} // CstPackage
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/FileBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/FileBlock.java
new file mode 100644
index 0000000..e34b94e
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/FileBlock.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>File Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.FileBlock#getOpenMode <em>Open Mode</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.FileBlock#getFileUrl <em>File Url</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.FileBlock#getUniqId <em>Uniq Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getFileBlock()
+ * @model
+ * @generated
+ */
+public interface FileBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Open Mode</b></em>' attribute. The literals are from the enumeration
+ * {@link org.eclipse.acceleo.parser.cst.OpenModeKind}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open Mode</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Open Mode</em>' attribute.
+ * @see org.eclipse.acceleo.parser.cst.OpenModeKind
+ * @see #setOpenMode(OpenModeKind)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getFileBlock_OpenMode()
+ * @model required="true"
+ * @generated
+ */
+ OpenModeKind getOpenMode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.FileBlock#getOpenMode <em>Open Mode</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Open Mode</em>' attribute.
+ * @see org.eclipse.acceleo.parser.cst.OpenModeKind
+ * @see #getOpenMode()
+ * @generated
+ */
+ void setOpenMode(OpenModeKind value);
+
+ /**
+ * Returns the value of the '<em><b>File Url</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>File Url</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>File Url</em>' containment reference.
+ * @see #setFileUrl(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getFileBlock_FileUrl()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ ModelExpression getFileUrl();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.FileBlock#getFileUrl <em>File Url</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>File Url</em>' containment reference.
+ * @see #getFileUrl()
+ * @generated
+ */
+ void setFileUrl(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Uniq Id</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uniq Id</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>Uniq Id</em>' containment reference.
+ * @see #setUniqId(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getFileBlock_UniqId()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getUniqId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.FileBlock#getUniqId <em>Uniq Id</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Uniq Id</em>' containment reference.
+ * @see #getUniqId()
+ * @generated
+ */
+ void setUniqId(ModelExpression value);
+
+} // FileBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ForBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ForBlock.java
new file mode 100644
index 0000000..0dea70c
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ForBlock.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>For Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getLoopVariable <em>Loop Variable</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getIterSet <em>Iter Set</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ForBlock#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock()
+ * @model
+ * @generated
+ */
+public interface ForBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Loop Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Loop Variable</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>Loop Variable</em>' containment reference.
+ * @see #setLoopVariable(Variable)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_LoopVariable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ Variable getLoopVariable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getLoopVariable <em>Loop Variable</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Loop Variable</em>' containment reference.
+ * @see #getLoopVariable()
+ * @generated
+ */
+ void setLoopVariable(Variable value);
+
+ /**
+ * Returns the value of the '<em><b>Iter Set</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Iter Set</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>Iter Set</em>' containment reference.
+ * @see #setIterSet(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_IterSet()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ ModelExpression getIterSet();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getIterSet <em>Iter Set</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Iter Set</em>' containment reference.
+ * @see #getIterSet()
+ * @generated
+ */
+ void setIterSet(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Before</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>Before</em>' containment reference.
+ * @see #setBefore(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_Before()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getBefore();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getBefore <em>Before</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Before</em>' containment reference.
+ * @see #getBefore()
+ * @generated
+ */
+ void setBefore(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Each</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>Each</em>' containment reference.
+ * @see #setEach(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_Each()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getEach();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getEach <em>Each</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Each</em>' containment reference.
+ * @see #getEach()
+ * @generated
+ */
+ void setEach(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>After</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>After</em>' containment reference.
+ * @see #setAfter(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_After()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getAfter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getAfter <em>After</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>After</em>' containment reference.
+ * @see #getAfter()
+ * @generated
+ */
+ void setAfter(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</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>Guard</em>' containment reference.
+ * @see #setGuard(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getForBlock_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ForBlock#getGuard <em>Guard</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(ModelExpression value);
+
+} // ForBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/IfBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/IfBlock.java
new file mode 100644
index 0000000..086e02c
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/IfBlock.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>If Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.IfBlock#getIfExpr <em>If Expr</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.IfBlock#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.IfBlock#getElseIf <em>Else If</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getIfBlock()
+ * @model
+ * @generated
+ */
+public interface IfBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>If Expr</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>If 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>If Expr</em>' containment reference.
+ * @see #setIfExpr(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getIfBlock_IfExpr()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ ModelExpression getIfExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.IfBlock#getIfExpr <em>If Expr</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>If Expr</em>' containment reference.
+ * @see #getIfExpr()
+ * @generated
+ */
+ void setIfExpr(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else</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>Else</em>' containment reference.
+ * @see #setElse(Block)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getIfBlock_Else()
+ * @model containment="true"
+ * @generated
+ */
+ Block getElse();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.IfBlock#getElse <em>Else</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Else</em>' containment reference.
+ * @see #getElse()
+ * @generated
+ */
+ void setElse(Block value);
+
+ /**
+ * Returns the value of the '<em><b>Else If</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.parser.cst.IfBlock}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else If</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>Else If</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getIfBlock_ElseIf()
+ * @model containment="true"
+ * @generated
+ */
+ EList<IfBlock> getElseIf();
+
+} // IfBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/InitSection.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/InitSection.java
new file mode 100644
index 0000000..c544fe1
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/InitSection.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Init Section</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.InitSection#getVariable <em>Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getInitSection()
+ * @model
+ * @generated
+ */
+public interface InitSection extends CSTNode {
+ /**
+ * Returns the value of the '<em><b>Variable</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Variable</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>Variable</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getInitSection_Variable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<Variable> getVariable();
+
+} // InitSection
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/LetBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/LetBlock.java
new file mode 100644
index 0000000..6189c07
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/LetBlock.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Let Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.LetBlock#getElseLet <em>Else Let</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.LetBlock#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.LetBlock#getLetExpr <em>Let Expr</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getLetBlock()
+ * @model
+ * @generated
+ */
+public interface LetBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Else Let</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.LetBlock}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else Let</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>Else Let</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getLetBlock_ElseLet()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LetBlock> getElseLet();
+
+ /**
+ * Returns the value of the '<em><b>Else</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Else</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>Else</em>' containment reference.
+ * @see #setElse(Block)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getLetBlock_Else()
+ * @model containment="true"
+ * @generated
+ */
+ Block getElse();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.LetBlock#getElse <em>Else</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Else</em>' containment reference.
+ * @see #getElse()
+ * @generated
+ */
+ void setElse(Block value);
+
+ /**
+ * Returns the value of the '<em><b>Let Variable</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Let Variable</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>Let Variable</em>' containment reference.
+ * @see #setLetVariable(Variable)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getLetBlock_LetVariable()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ Variable getLetVariable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.LetBlock#getLetVariable <em>Let Variable</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Let Variable</em>' containment reference.
+ * @see #getLetVariable()
+ * @generated
+ */
+ void setLetVariable(Variable value);
+
+} // LetBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Macro.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Macro.java
new file mode 100644
index 0000000..b7cbe99
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Macro.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Macro</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Macro#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Macro#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getMacro()
+ * @model
+ * @generated
+ */
+public interface Macro extends Block, ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getMacro_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getMacro_Type()
+ * @model required="true"
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Macro#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);
+
+} // Macro
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModelExpression.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModelExpression.java
new file mode 100644
index 0000000..a672ed0
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModelExpression.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Model Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModelExpression#getBody <em>Body</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModelExpression#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModelExpression#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModelExpression#getAfter <em>After</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModelExpression()
+ * @model
+ * @generated
+ */
+public interface ModelExpression extends TemplateExpression {
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' attribute. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Body</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Body</em>' attribute.
+ * @see #setBody(String)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModelExpression_Body()
+ * @model required="true"
+ * @generated
+ */
+ String getBody();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModelExpression#getBody <em>Body</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Body</em>' attribute.
+ * @see #getBody()
+ * @generated
+ */
+ void setBody(String value);
+
+ /**
+ * Returns the value of the '<em><b>Before</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Before</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>Before</em>' containment reference.
+ * @see #setBefore(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModelExpression_Before()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getBefore();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModelExpression#getBefore <em>Before</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Before</em>' containment reference.
+ * @see #getBefore()
+ * @generated
+ */
+ void setBefore(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Each</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Each</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>Each</em>' containment reference.
+ * @see #setEach(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModelExpression_Each()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getEach();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModelExpression#getEach <em>Each</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Each</em>' containment reference.
+ * @see #getEach()
+ * @generated
+ */
+ void setEach(ModelExpression value);
+
+ /**
+ * Returns the value of the '<em><b>After</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>After</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>After</em>' containment reference.
+ * @see #setAfter(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModelExpression_After()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getAfter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModelExpression#getAfter <em>After</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>After</em>' containment reference.
+ * @see #getAfter()
+ * @generated
+ */
+ void setAfter(ModelExpression value);
+
+} // ModelExpression
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Module.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Module.java
new file mode 100644
index 0000000..539146a
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Module.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Module#getInput <em>Input</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Module#getOwnedModuleElement <em>Owned Module Element</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Module#getExtends <em>Extends</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Module#getImports <em>Imports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModule()
+ * @model
+ * @generated
+ */
+public interface Module extends EPackage, CSTNode {
+ /**
+ * Returns the value of the '<em><b>Input</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.parser.cst.TypedModel}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Input</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>Input</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModule_Input()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<TypedModel> getInput();
+
+ /**
+ * Returns the value of the '<em><b>Owned Module Element</b></em>' containment reference list. The list
+ * contents are of type {@link org.eclipse.acceleo.parser.cst.ModuleElement}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owned Module Element</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>Owned Module Element</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModule_OwnedModuleElement()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ EList<ModuleElement> getOwnedModuleElement();
+
+ /**
+ * Returns the value of the '<em><b>Extends</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Extends</em>' attribute list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Extends</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModule_Extends()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ModuleExtendsValue> getExtends();
+
+ /**
+ * Returns the value of the '<em><b>Imports</b></em>' containment reference list. The list contents are of
+ * type {@link org.eclipse.acceleo.parser.cst.ModuleImportsValue}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Imports</em>' attribute list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Imports</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModule_Imports()
+ * @model containment="true"
+ * @generated
+ */
+ EList<ModuleImportsValue> getImports();
+
+} // Module
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleElement.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleElement.java
new file mode 100644
index 0000000..bf97c88
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleElement.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModuleElement#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModuleElement#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModuleElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ModuleElement extends CSTNode {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getModuleElement_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModuleElement#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>Visibility</b></em>' attribute. The literals are from the enumeration
+ * {@link org.eclipse.acceleo.parser.cst.VisibilityKind}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Visibility</em>' attribute isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Visibility</em>' attribute.
+ * @see org.eclipse.acceleo.parser.cst.VisibilityKind
+ * @see #setVisibility(VisibilityKind)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModuleElement_Visibility()
+ * @model required="true"
+ * @generated
+ */
+ VisibilityKind getVisibility();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModuleElement#getVisibility <em>Visibility</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Visibility</em>' attribute.
+ * @see org.eclipse.acceleo.parser.cst.VisibilityKind
+ * @see #getVisibility()
+ * @generated
+ */
+ void setVisibility(VisibilityKind value);
+
+} // ModuleElement
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleExtendsValue.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleExtendsValue.java
new file mode 100644
index 0000000..d969000
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleExtendsValue.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module Extends Value</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModuleExtendsValue()
+ * @model
+ * @generated
+ */
+public interface ModuleExtendsValue extends CSTNode {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getModuleExtendsValue_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue#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);
+
+} // ModuleExtendsValue
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleImportsValue.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleImportsValue.java
new file mode 100644
index 0000000..c3818f8
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ModuleImportsValue.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Module Imports Value</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ModuleImportsValue#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getModuleImportsValue()
+ * @model
+ * @generated
+ */
+public interface ModuleImportsValue extends CSTNode {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getModuleImportsValue_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ModuleImportsValue#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);
+
+} // ModuleImportsValue
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/OpenModeKind.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/OpenModeKind.java
new file mode 100644
index 0000000..365d459
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/OpenModeKind.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '<em><b>Open Mode Kind</b></em>
+ * ', and utility methods for working with them. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getOpenModeKind()
+ * @model
+ * @generated
+ */
+public enum OpenModeKind implements Enumerator {
+ /**
+ * The '<em><b>Append</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #APPEND_VALUE
+ * @generated
+ * @ordered
+ */
+ APPEND(0, "Append", "Append"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Over Write</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #OVER_WRITE_VALUE
+ * @generated
+ * @ordered
+ */
+ OVER_WRITE(1, "OverWrite", "OverWrite"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Append</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Append</b></em>' literal object isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #APPEND
+ * @model name="Append"
+ * @generated
+ * @ordered
+ */
+ public static final int APPEND_VALUE = 0;
+
+ /**
+ * The '<em><b>Over Write</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Over Write</b></em>' literal object isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #OVER_WRITE
+ * @model name="OverWrite"
+ * @generated
+ * @ordered
+ */
+ public static final int OVER_WRITE_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Open Mode Kind</b></em>' enumerators. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ private static final OpenModeKind[] VALUES_ARRAY = new OpenModeKind[] {APPEND, OVER_WRITE,};
+
+ /**
+ * A public read-only list of all the '<em><b>Open Mode Kind</b></em>' enumerators. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<OpenModeKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified literal value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OpenModeKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified name. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OpenModeKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Open Mode Kind</b></em>' literal with the specified integer value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static OpenModeKind get(int value) {
+ switch (value) {
+ case APPEND_VALUE:
+ return APPEND;
+ case OVER_WRITE_VALUE:
+ return OVER_WRITE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private OpenModeKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // OpenModeKind
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ProtectedAreaBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ProtectedAreaBlock.java
new file mode 100644
index 0000000..fc37f16
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/ProtectedAreaBlock.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Protected Area Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.ProtectedAreaBlock#getMarker <em>Marker</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getProtectedAreaBlock()
+ * @model
+ * @generated
+ */
+public interface ProtectedAreaBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Marker</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Marker</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>Marker</em>' containment reference.
+ * @see #setMarker(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getProtectedAreaBlock_Marker()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ ModelExpression getMarker();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.ProtectedAreaBlock#getMarker <em>Marker</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Marker</em>' containment reference.
+ * @see #getMarker()
+ * @generated
+ */
+ void setMarker(ModelExpression value);
+
+} // ProtectedAreaBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Query.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Query.java
new file mode 100644
index 0000000..4807cdb
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Query.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Query</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Query#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Query#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Query#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getQuery()
+ * @model
+ * @generated
+ */
+public interface Query extends ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getQuery_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getQuery_Type()
+ * @model required="true"
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Query#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);
+
+ /**
+ * 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(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getQuery_Expression()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Query#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(ModelExpression value);
+
+} // Query
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Template.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Template.java
new file mode 100644
index 0000000..4839414
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Template.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Template#getOverrides <em>Overrides</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Template#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Template#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplate()
+ * @model
+ * @generated
+ */
+public interface Template extends Block, ModuleElement {
+ /**
+ * Returns the value of the '<em><b>Overrides</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Overrides</em>' attribute list isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Overrides</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplate_Overrides()
+ * @model containment="true"
+ * @generated
+ */
+ EList<TemplateOverridesValue> getOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Parameter</b></em>' containment reference list. The list contents are
+ * of type {@link org.eclipse.acceleo.parser.cst.Variable}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplate_Parameter()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Variable> getParameter();
+
+ /**
+ * Returns the value of the '<em><b>Guard</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Guard</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>Guard</em>' containment reference.
+ * @see #setGuard(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplate_Guard()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getGuard();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Template#getGuard <em>Guard</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Guard</em>' containment reference.
+ * @see #getGuard()
+ * @generated
+ */
+ void setGuard(ModelExpression value);
+
+} // Template
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateExpression.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateExpression.java
new file mode 100644
index 0000000..3be2381
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateExpression.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template Expression</b></em>'. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplateExpression()
+ * @model
+ * @generated
+ */
+public interface TemplateExpression extends CSTNode {
+} // TemplateExpression
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateOverridesValue.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateOverridesValue.java
new file mode 100644
index 0000000..99084ef
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TemplateOverridesValue.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Template Overrides Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTemplateOverridesValue()
+ * @model
+ * @generated
+ */
+public interface TemplateOverridesValue extends CSTNode {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getTemplateOverridesValue_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue#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);
+
+} // TemplateOverridesValue
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TextExpression.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TextExpression.java
new file mode 100644
index 0000000..2bdc7f6
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TextExpression.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Text Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.TextExpression#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTextExpression()
+ * @model
+ * @generated
+ */
+public interface TextExpression extends TemplateExpression {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getTextExpression_Value()
+ * @model required="true"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.TextExpression#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);
+
+} // TextExpression
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TraceBlock.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TraceBlock.java
new file mode 100644
index 0000000..fa3d850
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TraceBlock.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Trace Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.TraceBlock#getModelElement <em>Model Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTraceBlock()
+ * @model
+ * @generated
+ */
+public interface TraceBlock extends Block {
+ /**
+ * Returns the value of the '<em><b>Model Element</b></em>' containment reference. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Model Element</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>Model Element</em>' containment reference.
+ * @see #setModelElement(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTraceBlock_ModelElement()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ ModelExpression getModelElement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.TraceBlock#getModelElement <em>Model Element</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Model Element</em>' containment reference.
+ * @see #getModelElement()
+ * @generated
+ */
+ void setModelElement(ModelExpression value);
+
+} // TraceBlock
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TypedModel.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TypedModel.java
new file mode 100644
index 0000000..c706523
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/TypedModel.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Typed Model</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.TypedModel#getTakesTypesFrom <em>Takes Types From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTypedModel()
+ * @model
+ * @generated
+ */
+public interface TypedModel extends CSTNode {
+ /**
+ * Returns the value of the '<em><b>Takes Types From</b></em>' reference list. The list contents are of
+ * type {@link org.eclipse.emf.ecore.EPackage}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Takes Types From</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>Takes Types From</em>' reference list.
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getTypedModel_TakesTypesFrom()
+ * @model required="true"
+ * @generated
+ */
+ EList<EPackage> getTakesTypesFrom();
+
+} // TypedModel
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Variable.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Variable.java
new file mode 100644
index 0000000..822e1a4
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/Variable.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '<em><b>Variable</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Variable#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.Variable#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getVariable()
+ * @model
+ * @generated
+ */
+public interface Variable extends CSTNode {
+ /**
+ * 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.acceleo.parser.cst.CstPackage#getVariable_Name()
+ * @model required="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Variable#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>' reference 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.acceleo.parser.cst.CstPackage#getVariable_Type()
+ * @model required="true"
+ * @generated
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Variable#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);
+
+ /**
+ * Returns the value of the '<em><b>Init Expression</b></em>' containment reference. <!-- begin-user-doc
+ * -->
+ * <p>
+ * If the meaning of the '<em>Init 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>Init Expression</em>' containment reference.
+ * @see #setInitExpression(ModelExpression)
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getVariable_InitExpression()
+ * @model containment="true"
+ * @generated
+ */
+ ModelExpression getInitExpression();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.acceleo.parser.cst.Variable#getInitExpression <em>Init Expression</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Init Expression</em>' containment reference.
+ * @see #getInitExpression()
+ * @generated
+ */
+ void setInitExpression(ModelExpression value);
+
+} // Variable
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/VisibilityKind.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/VisibilityKind.java
new file mode 100644
index 0000000..17f5c10
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/VisibilityKind.java
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '
+ * <em><b>Visibility Kind</b></em>', and utility methods for working with them. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.acceleo.parser.cst.CstPackage#getVisibilityKind()
+ * @model
+ * @generated
+ */
+public enum VisibilityKind implements Enumerator {
+ /**
+ * The '<em><b>Private</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PRIVATE_VALUE
+ * @generated
+ * @ordered
+ */
+ PRIVATE(0, "Private", "Private"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Protected</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PROTECTED_VALUE
+ * @generated
+ * @ordered
+ */
+ PROTECTED(1, "Protected", "Protected"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Public</b></em>' literal object. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #PUBLIC_VALUE
+ * @generated
+ * @ordered
+ */
+ PUBLIC(2, "Public", "Public"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>Private</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Private</b></em>' literal object isn't clear, there really should be more of
+ * a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PRIVATE
+ * @model name="Private"
+ * @generated
+ * @ordered
+ */
+ public static final int PRIVATE_VALUE = 0;
+
+ /**
+ * The '<em><b>Protected</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Protected</b></em>' literal object isn't clear, there really should be more
+ * of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PROTECTED
+ * @model name="Protected"
+ * @generated
+ * @ordered
+ */
+ public static final int PROTECTED_VALUE = 1;
+
+ /**
+ * The '<em><b>Public</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Public</b></em>' literal object isn't clear, there really should be more of a
+ * description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #PUBLIC
+ * @model name="Public"
+ * @generated
+ * @ordered
+ */
+ public static final int PUBLIC_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Visibility Kind</b></em>' enumerators. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ private static final VisibilityKind[] VALUES_ARRAY = new VisibilityKind[] {PRIVATE, PROTECTED, PUBLIC,};
+
+ /**
+ * A public read-only list of all the '<em><b>Visibility Kind</b></em>' enumerators. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<VisibilityKind> VALUES = Collections.unmodifiableList(Arrays
+ .asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified literal value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ VisibilityKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified name. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ VisibilityKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified integer value. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static VisibilityKind get(int value) {
+ switch (value) {
+ case PRIVATE_VALUE:
+ return PRIVATE;
+ case PROTECTED_VALUE:
+ return PROTECTED;
+ case PUBLIC_VALUE:
+ return PUBLIC;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private VisibilityKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // VisibilityKind
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/BlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/BlockImpl.java
new file mode 100644
index 0000000..bbcc2f6
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/BlockImpl.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+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;
+
+/**
+ * <!-- 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.acceleo.parser.cst.impl.BlockImpl#getInit <em>Init</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.BlockImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BlockImpl extends TemplateExpressionImpl implements Block {
+ /**
+ * The cached value of the '{@link #getInit() <em>Init</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getInit()
+ * @generated
+ * @ordered
+ */
+ protected InitSection init;
+
+ /**
+ * The cached value of the '{@link #getBody() <em>Body</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected EList<TemplateExpression> body;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected BlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public InitSection getInit() {
+ return init;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetInit(InitSection newInit, NotificationChain msgs) {
+ InitSection oldInit = init;
+ init = newInit;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.BLOCK__INIT, oldInit, newInit);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setInit(InitSection newInit) {
+ if (newInit != init) {
+ NotificationChain msgs = null;
+ if (init != null) {
+ msgs = ((InternalEObject)init).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.BLOCK__INIT, null, msgs);
+ }
+ if (newInit != null) {
+ msgs = ((InternalEObject)newInit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.BLOCK__INIT, null, msgs);
+ }
+ msgs = basicSetInit(newInit, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.BLOCK__INIT, newInit, newInit));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<TemplateExpression> getBody() {
+ if (body == null) {
+ body = new EObjectContainmentEList<TemplateExpression>(TemplateExpression.class, this,
+ CstPackage.BLOCK__BODY);
+ }
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.BLOCK__INIT:
+ return basicSetInit(null, msgs);
+ case CstPackage.BLOCK__BODY:
+ return ((InternalEList<?>)getBody()).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 CstPackage.BLOCK__INIT:
+ return getInit();
+ case CstPackage.BLOCK__BODY:
+ return getBody();
+ }
+ 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 CstPackage.BLOCK__INIT:
+ setInit((InitSection)newValue);
+ return;
+ case CstPackage.BLOCK__BODY:
+ getBody().clear();
+ getBody().addAll((Collection<? extends TemplateExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.BLOCK__INIT:
+ setInit((InitSection)null);
+ return;
+ case CstPackage.BLOCK__BODY:
+ getBody().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.BLOCK__INIT:
+ return init != null;
+ case CstPackage.BLOCK__BODY:
+ return body != null && !body.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // BlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CommentImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CommentImpl.java
new file mode 100644
index 0000000..8e8c99b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CommentImpl.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.Comment;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Comment</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.CommentImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CommentImpl extends ModuleElementImpl implements Comment {
+ /**
+ * The default value of the '{@link #getBody() <em>Body</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected static final String BODY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBody() <em>Body</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected String body = BODY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected CommentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.COMMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBody(String newBody) {
+ String oldBody = body;
+ body = newBody;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.COMMENT__BODY, oldBody, body));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.COMMENT__BODY:
+ return getBody();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.COMMENT__BODY:
+ setBody((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.COMMENT__BODY:
+ setBody(BODY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.COMMENT__BODY:
+ return BODY_EDEFAULT == null ? body != null : !BODY_EDEFAULT.equals(body);
+ }
+ 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(" (body: "); //$NON-NLS-1$
+ result.append(body);
+ result.append(')');
+ return result.toString();
+ }
+
+} // CommentImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstFactoryImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstFactoryImpl.java
new file mode 100644
index 0000000..386f3a4
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstFactoryImpl.java
@@ -0,0 +1,446 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.Comment;
+import org.eclipse.acceleo.parser.cst.CstFactory;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.FileBlock;
+import org.eclipse.acceleo.parser.cst.ForBlock;
+import org.eclipse.acceleo.parser.cst.IfBlock;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.LetBlock;
+import org.eclipse.acceleo.parser.cst.Macro;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Module;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.acceleo.parser.cst.OpenModeKind;
+import org.eclipse.acceleo.parser.cst.ProtectedAreaBlock;
+import org.eclipse.acceleo.parser.cst.Query;
+import org.eclipse.acceleo.parser.cst.Template;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+import org.eclipse.acceleo.parser.cst.TextExpression;
+import org.eclipse.acceleo.parser.cst.TraceBlock;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.acceleo.parser.cst.VisibilityKind;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CstFactoryImpl extends EFactoryImpl implements CstFactory {
+ /**
+ * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static CstFactory init() {
+ try {
+ CstFactory theCstFactory = (CstFactory)EPackage.Registry.INSTANCE
+ .getEFactory("http://www.eclipse.org/acceleo/mtl/cst/0.8.0"); //$NON-NLS-1$
+ if (theCstFactory != null) {
+ return theCstFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CstFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CstFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case CstPackage.MODULE:
+ return createModule();
+ case CstPackage.MODULE_EXTENDS_VALUE:
+ return createModuleExtendsValue();
+ case CstPackage.MODULE_IMPORTS_VALUE:
+ return createModuleImportsValue();
+ case CstPackage.TYPED_MODEL:
+ return createTypedModel();
+ case CstPackage.COMMENT:
+ return createComment();
+ case CstPackage.TEMPLATE:
+ return createTemplate();
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE:
+ return createTemplateOverridesValue();
+ case CstPackage.VARIABLE:
+ return createVariable();
+ case CstPackage.TEMPLATE_EXPRESSION:
+ return createTemplateExpression();
+ case CstPackage.MODEL_EXPRESSION:
+ return createModelExpression();
+ case CstPackage.TEXT_EXPRESSION:
+ return createTextExpression();
+ case CstPackage.BLOCK:
+ return createBlock();
+ case CstPackage.INIT_SECTION:
+ return createInitSection();
+ case CstPackage.PROTECTED_AREA_BLOCK:
+ return createProtectedAreaBlock();
+ case CstPackage.FOR_BLOCK:
+ return createForBlock();
+ case CstPackage.IF_BLOCK:
+ return createIfBlock();
+ case CstPackage.LET_BLOCK:
+ return createLetBlock();
+ case CstPackage.FILE_BLOCK:
+ return createFileBlock();
+ case CstPackage.TRACE_BLOCK:
+ return createTraceBlock();
+ case CstPackage.MACRO:
+ return createMacro();
+ case CstPackage.QUERY:
+ return createQuery();
+ default:
+ throw new IllegalArgumentException(
+ "The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case CstPackage.VISIBILITY_KIND:
+ return createVisibilityKindFromString(eDataType, initialValue);
+ case CstPackage.OPEN_MODE_KIND:
+ return createOpenModeKindFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException(
+ "The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case CstPackage.VISIBILITY_KIND:
+ return convertVisibilityKindToString(eDataType, instanceValue);
+ case CstPackage.OPEN_MODE_KIND:
+ return convertOpenModeKindToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException(
+ "The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Module createModule() {
+ ModuleImpl module = new ModuleImpl();
+ return module;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModuleExtendsValue createModuleExtendsValue() {
+ ModuleExtendsValueImpl moduleExtendsValue = new ModuleExtendsValueImpl();
+ return moduleExtendsValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModuleImportsValue createModuleImportsValue() {
+ ModuleImportsValueImpl moduleImportsValue = new ModuleImportsValueImpl();
+ return moduleImportsValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TypedModel createTypedModel() {
+ TypedModelImpl typedModel = new TypedModelImpl();
+ return typedModel;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Comment createComment() {
+ CommentImpl comment = new CommentImpl();
+ return comment;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Template createTemplate() {
+ TemplateImpl template = new TemplateImpl();
+ return template;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TemplateOverridesValue createTemplateOverridesValue() {
+ TemplateOverridesValueImpl templateOverridesValue = new TemplateOverridesValueImpl();
+ return templateOverridesValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Variable createVariable() {
+ VariableImpl variable = new VariableImpl();
+ return variable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TemplateExpression createTemplateExpression() {
+ TemplateExpressionImpl templateExpression = new TemplateExpressionImpl();
+ return templateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression createModelExpression() {
+ ModelExpressionImpl modelExpression = new ModelExpressionImpl();
+ return modelExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TextExpression createTextExpression() {
+ TextExpressionImpl textExpression = new TextExpressionImpl();
+ return textExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block createBlock() {
+ BlockImpl block = new BlockImpl();
+ return block;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public InitSection createInitSection() {
+ InitSectionImpl initSection = new InitSectionImpl();
+ return initSection;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ProtectedAreaBlock createProtectedAreaBlock() {
+ ProtectedAreaBlockImpl protectedAreaBlock = new ProtectedAreaBlockImpl();
+ return protectedAreaBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ForBlock createForBlock() {
+ ForBlockImpl forBlock = new ForBlockImpl();
+ return forBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IfBlock createIfBlock() {
+ IfBlockImpl ifBlock = new IfBlockImpl();
+ return ifBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public LetBlock createLetBlock() {
+ LetBlockImpl letBlock = new LetBlockImpl();
+ return letBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public FileBlock createFileBlock() {
+ FileBlockImpl fileBlock = new FileBlockImpl();
+ return fileBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public TraceBlock createTraceBlock() {
+ TraceBlockImpl traceBlock = new TraceBlockImpl();
+ return traceBlock;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Macro createMacro() {
+ MacroImpl macro = new MacroImpl();
+ return macro;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Query createQuery() {
+ QueryImpl query = new QueryImpl();
+ return query;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind createVisibilityKindFromString(EDataType eDataType, String initialValue) {
+ VisibilityKind result = VisibilityKind.get(initialValue);
+ if (result == null) {
+ throw new IllegalArgumentException(
+ "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertVisibilityKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OpenModeKind createOpenModeKindFromString(EDataType eDataType, String initialValue) {
+ OpenModeKind result = OpenModeKind.get(initialValue);
+ if (result == null) {
+ throw new IllegalArgumentException(
+ "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertOpenModeKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CstPackage getCstPackage() {
+ return (CstPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static CstPackage getPackage() {
+ return CstPackage.eINSTANCE;
+ }
+
+} // CstFactoryImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstPackageImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstPackageImpl.java
new file mode 100644
index 0000000..2028166
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/CstPackageImpl.java
@@ -0,0 +1,1468 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CSTNode;
+import org.eclipse.acceleo.parser.cst.Comment;
+import org.eclipse.acceleo.parser.cst.CstFactory;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.FileBlock;
+import org.eclipse.acceleo.parser.cst.ForBlock;
+import org.eclipse.acceleo.parser.cst.IfBlock;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.LetBlock;
+import org.eclipse.acceleo.parser.cst.Macro;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Module;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.acceleo.parser.cst.OpenModeKind;
+import org.eclipse.acceleo.parser.cst.ProtectedAreaBlock;
+import org.eclipse.acceleo.parser.cst.Query;
+import org.eclipse.acceleo.parser.cst.Template;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+import org.eclipse.acceleo.parser.cst.TextExpression;
+import org.eclipse.acceleo.parser.cst.TraceBlock;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.acceleo.parser.cst.VisibilityKind;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CstPackageImpl extends EPackageImpl implements CstPackage {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass cstNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleExtendsValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleImportsValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass typedModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass moduleElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass commentEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateOverridesValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass variableEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass templateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass modelExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass textExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass blockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass initSectionEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass protectedAreaBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass forBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass ifBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass letBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass fileBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass traceBlockEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass macroEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass queryEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EEnum visibilityKindEEnum = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EEnum openModeKindEEnum = 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.acceleo.parser.cst.CstPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CstPackageImpl() {
+ super(eNS_URI, CstFactory.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. Simple dependencies are satisfied by calling this method on all dependent packages before
+ * doing anything else. This method drives initialization for interdependent packages directly, in
+ * parallel with this package, itself.
+ * <p>
+ * Of this package and its interdependencies, all packages which have not yet been registered by their URI
+ * values are first created and registered. The packages are then initialized in two steps: meta-model
+ * objects for all of the packages are created before any are initialized, since one package's meta-model
+ * objects may refer to those of another.
+ * <p>
+ * Invocation of this method will not affect any packages that have already been initialized. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CstPackage init() {
+ if (isInited) {
+ return (CstPackage)EPackage.Registry.INSTANCE.getEPackage(CstPackage.eNS_URI);
+ }
+
+ // Obtain or create and register package
+ CstPackageImpl theCstPackage = (CstPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof CstPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(eNS_URI)
+ : new CstPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theCstPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theCstPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCstPackage.freeze();
+
+ return theCstPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getCSTNode() {
+ return cstNodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getCSTNode_StartPosition() {
+ return (EAttribute)cstNodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getCSTNode_EndPosition() {
+ return (EAttribute)cstNodeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModule() {
+ return moduleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Input() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_OwnedModuleElement() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Extends() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModule_Imports() {
+ return (EReference)moduleEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModuleExtendsValue() {
+ return moduleExtendsValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModuleExtendsValue_Name() {
+ return (EAttribute)moduleExtendsValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModuleImportsValue() {
+ return moduleImportsValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModuleImportsValue_Name() {
+ return (EAttribute)moduleImportsValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTypedModel() {
+ return typedModelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTypedModel_TakesTypesFrom() {
+ return (EReference)typedModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModuleElement() {
+ return moduleElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModuleElement_Name() {
+ return (EAttribute)moduleElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModuleElement_Visibility() {
+ return (EAttribute)moduleElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getComment() {
+ return commentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getComment_Body() {
+ return (EAttribute)commentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplate() {
+ return templateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Overrides() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Parameter() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTemplate_Guard() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplateOverridesValue() {
+ return templateOverridesValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getTemplateOverridesValue_Name() {
+ return (EAttribute)templateOverridesValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getVariable() {
+ return variableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getVariable_Name() {
+ return (EAttribute)variableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getVariable_Type() {
+ return (EAttribute)variableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getVariable_InitExpression() {
+ return (EReference)variableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTemplateExpression() {
+ return templateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getModelExpression() {
+ return modelExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getModelExpression_Body() {
+ return (EAttribute)modelExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModelExpression_Before() {
+ return (EReference)modelExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModelExpression_Each() {
+ return (EReference)modelExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getModelExpression_After() {
+ return (EReference)modelExpressionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTextExpression() {
+ return textExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getTextExpression_Value() {
+ return (EAttribute)textExpressionEClass.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_Init() {
+ return (EReference)blockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getBlock_Body() {
+ return (EReference)blockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getInitSection() {
+ return initSectionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getInitSection_Variable() {
+ return (EReference)initSectionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getProtectedAreaBlock() {
+ return protectedAreaBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getProtectedAreaBlock_Marker() {
+ return (EReference)protectedAreaBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getForBlock() {
+ return forBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_LoopVariable() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_IterSet() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Before() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Each() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_After() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getForBlock_Guard() {
+ return (EReference)forBlockEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getIfBlock() {
+ return ifBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_IfExpr() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_Else() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getIfBlock_ElseIf() {
+ return (EReference)ifBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getLetBlock() {
+ return letBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_ElseLet() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_Else() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getLetBlock_LetVariable() {
+ return (EReference)letBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getFileBlock() {
+ return fileBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFileBlock_OpenMode() {
+ return (EAttribute)fileBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getFileBlock_FileUrl() {
+ return (EReference)fileBlockEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getFileBlock_UniqId() {
+ return (EReference)fileBlockEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getTraceBlock() {
+ return traceBlockEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getTraceBlock_ModelElement() {
+ return (EReference)traceBlockEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getMacro() {
+ return macroEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getMacro_Parameter() {
+ return (EReference)macroEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getMacro_Type() {
+ return (EAttribute)macroEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getQuery() {
+ return queryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQuery_Parameter() {
+ return (EReference)queryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getQuery_Type() {
+ return (EAttribute)queryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getQuery_Expression() {
+ return (EReference)queryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEnum getVisibilityKind() {
+ return visibilityKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEnum getOpenModeKind() {
+ return openModeKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CstFactory getCstFactory() {
+ return (CstFactory)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
+ cstNodeEClass = createEClass(CST_NODE);
+ createEAttribute(cstNodeEClass, CST_NODE__START_POSITION);
+ createEAttribute(cstNodeEClass, CST_NODE__END_POSITION);
+
+ moduleEClass = createEClass(MODULE);
+ createEReference(moduleEClass, MODULE__INPUT);
+ createEReference(moduleEClass, MODULE__OWNED_MODULE_ELEMENT);
+ createEReference(moduleEClass, MODULE__EXTENDS);
+ createEReference(moduleEClass, MODULE__IMPORTS);
+
+ moduleExtendsValueEClass = createEClass(MODULE_EXTENDS_VALUE);
+ createEAttribute(moduleExtendsValueEClass, MODULE_EXTENDS_VALUE__NAME);
+
+ moduleImportsValueEClass = createEClass(MODULE_IMPORTS_VALUE);
+ createEAttribute(moduleImportsValueEClass, MODULE_IMPORTS_VALUE__NAME);
+
+ typedModelEClass = createEClass(TYPED_MODEL);
+ createEReference(typedModelEClass, TYPED_MODEL__TAKES_TYPES_FROM);
+
+ moduleElementEClass = createEClass(MODULE_ELEMENT);
+ createEAttribute(moduleElementEClass, MODULE_ELEMENT__NAME);
+ createEAttribute(moduleElementEClass, MODULE_ELEMENT__VISIBILITY);
+
+ commentEClass = createEClass(COMMENT);
+ createEAttribute(commentEClass, COMMENT__BODY);
+
+ templateEClass = createEClass(TEMPLATE);
+ createEReference(templateEClass, TEMPLATE__OVERRIDES);
+ createEReference(templateEClass, TEMPLATE__PARAMETER);
+ createEReference(templateEClass, TEMPLATE__GUARD);
+
+ templateOverridesValueEClass = createEClass(TEMPLATE_OVERRIDES_VALUE);
+ createEAttribute(templateOverridesValueEClass, TEMPLATE_OVERRIDES_VALUE__NAME);
+
+ variableEClass = createEClass(VARIABLE);
+ createEAttribute(variableEClass, VARIABLE__NAME);
+ createEAttribute(variableEClass, VARIABLE__TYPE);
+ createEReference(variableEClass, VARIABLE__INIT_EXPRESSION);
+
+ templateExpressionEClass = createEClass(TEMPLATE_EXPRESSION);
+
+ modelExpressionEClass = createEClass(MODEL_EXPRESSION);
+ createEAttribute(modelExpressionEClass, MODEL_EXPRESSION__BODY);
+ createEReference(modelExpressionEClass, MODEL_EXPRESSION__BEFORE);
+ createEReference(modelExpressionEClass, MODEL_EXPRESSION__EACH);
+ createEReference(modelExpressionEClass, MODEL_EXPRESSION__AFTER);
+
+ textExpressionEClass = createEClass(TEXT_EXPRESSION);
+ createEAttribute(textExpressionEClass, TEXT_EXPRESSION__VALUE);
+
+ blockEClass = createEClass(BLOCK);
+ createEReference(blockEClass, BLOCK__INIT);
+ createEReference(blockEClass, BLOCK__BODY);
+
+ initSectionEClass = createEClass(INIT_SECTION);
+ createEReference(initSectionEClass, INIT_SECTION__VARIABLE);
+
+ protectedAreaBlockEClass = createEClass(PROTECTED_AREA_BLOCK);
+ createEReference(protectedAreaBlockEClass, PROTECTED_AREA_BLOCK__MARKER);
+
+ forBlockEClass = createEClass(FOR_BLOCK);
+ createEReference(forBlockEClass, FOR_BLOCK__LOOP_VARIABLE);
+ createEReference(forBlockEClass, FOR_BLOCK__ITER_SET);
+ createEReference(forBlockEClass, FOR_BLOCK__BEFORE);
+ createEReference(forBlockEClass, FOR_BLOCK__EACH);
+ createEReference(forBlockEClass, FOR_BLOCK__AFTER);
+ createEReference(forBlockEClass, FOR_BLOCK__GUARD);
+
+ ifBlockEClass = createEClass(IF_BLOCK);
+ createEReference(ifBlockEClass, IF_BLOCK__IF_EXPR);
+ createEReference(ifBlockEClass, IF_BLOCK__ELSE);
+ createEReference(ifBlockEClass, IF_BLOCK__ELSE_IF);
+
+ letBlockEClass = createEClass(LET_BLOCK);
+ createEReference(letBlockEClass, LET_BLOCK__ELSE_LET);
+ createEReference(letBlockEClass, LET_BLOCK__ELSE);
+ createEReference(letBlockEClass, LET_BLOCK__LET_VARIABLE);
+
+ fileBlockEClass = createEClass(FILE_BLOCK);
+ createEAttribute(fileBlockEClass, FILE_BLOCK__OPEN_MODE);
+ createEReference(fileBlockEClass, FILE_BLOCK__FILE_URL);
+ createEReference(fileBlockEClass, FILE_BLOCK__UNIQ_ID);
+
+ traceBlockEClass = createEClass(TRACE_BLOCK);
+ createEReference(traceBlockEClass, TRACE_BLOCK__MODEL_ELEMENT);
+
+ macroEClass = createEClass(MACRO);
+ createEReference(macroEClass, MACRO__PARAMETER);
+ createEAttribute(macroEClass, MACRO__TYPE);
+
+ queryEClass = createEClass(QUERY);
+ createEReference(queryEClass, QUERY__PARAMETER);
+ createEAttribute(queryEClass, QUERY__TYPE);
+ createEReference(queryEClass, QUERY__EXPRESSION);
+
+ // Create enums
+ visibilityKindEEnum = createEEnum(VISIBILITY_KIND);
+ openModeKindEEnum = createEEnum(OPEN_MODE_KIND);
+ }
+
+ /**
+ * <!-- 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
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE
+ .getEPackage(EcorePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ moduleEClass.getESuperTypes().add(theEcorePackage.getEPackage());
+ moduleEClass.getESuperTypes().add(this.getCSTNode());
+ moduleExtendsValueEClass.getESuperTypes().add(this.getCSTNode());
+ moduleImportsValueEClass.getESuperTypes().add(this.getCSTNode());
+ typedModelEClass.getESuperTypes().add(this.getCSTNode());
+ moduleElementEClass.getESuperTypes().add(this.getCSTNode());
+ commentEClass.getESuperTypes().add(this.getModuleElement());
+ commentEClass.getESuperTypes().add(this.getTemplateExpression());
+ templateEClass.getESuperTypes().add(this.getBlock());
+ templateEClass.getESuperTypes().add(this.getModuleElement());
+ templateOverridesValueEClass.getESuperTypes().add(this.getCSTNode());
+ variableEClass.getESuperTypes().add(this.getCSTNode());
+ templateExpressionEClass.getESuperTypes().add(this.getCSTNode());
+ modelExpressionEClass.getESuperTypes().add(this.getTemplateExpression());
+ textExpressionEClass.getESuperTypes().add(this.getTemplateExpression());
+ blockEClass.getESuperTypes().add(this.getTemplateExpression());
+ initSectionEClass.getESuperTypes().add(this.getCSTNode());
+ protectedAreaBlockEClass.getESuperTypes().add(this.getBlock());
+ forBlockEClass.getESuperTypes().add(this.getBlock());
+ ifBlockEClass.getESuperTypes().add(this.getBlock());
+ letBlockEClass.getESuperTypes().add(this.getBlock());
+ fileBlockEClass.getESuperTypes().add(this.getBlock());
+ traceBlockEClass.getESuperTypes().add(this.getBlock());
+ macroEClass.getESuperTypes().add(this.getBlock());
+ macroEClass.getESuperTypes().add(this.getModuleElement());
+ queryEClass.getESuperTypes().add(this.getModuleElement());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(cstNodeEClass, CSTNode.class,
+ "CSTNode", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getCSTNode_StartPosition(),
+ theEcorePackage.getEInt(),
+ "startPosition", null, 0, 1, CSTNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getCSTNode_EndPosition(),
+ theEcorePackage.getEInt(),
+ "endPosition", null, 0, 1, CSTNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(moduleEClass, Module.class,
+ "Module", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getModule_Input(),
+ this.getTypedModel(),
+ null,
+ "input", null, 1, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_OwnedModuleElement(),
+ this.getModuleElement(),
+ null,
+ "ownedModuleElement", null, 1, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_Extends(),
+ this.getModuleExtendsValue(),
+ null,
+ "extends", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModule_Imports(),
+ this.getModuleImportsValue(),
+ null,
+ "imports", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(moduleExtendsValueEClass, ModuleExtendsValue.class,
+ "ModuleExtendsValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getModuleExtendsValue_Name(),
+ theEcorePackage.getEString(),
+ "name", null, 1, 1, ModuleExtendsValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(moduleImportsValueEClass, ModuleImportsValue.class,
+ "ModuleImportsValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getModuleImportsValue_Name(),
+ theEcorePackage.getEString(),
+ "name", null, 1, 1, ModuleImportsValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(typedModelEClass, TypedModel.class,
+ "TypedModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTypedModel_TakesTypesFrom(),
+ theEcorePackage.getEPackage(),
+ null,
+ "takesTypesFrom", null, 1, -1, TypedModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(moduleElementEClass, ModuleElement.class,
+ "ModuleElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getModuleElement_Name(),
+ theEcorePackage.getEString(),
+ "name", null, 1, 1, ModuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getModuleElement_Visibility(),
+ this.getVisibilityKind(),
+ "visibility", null, 1, 1, ModuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(commentEClass, Comment.class,
+ "Comment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getComment_Body(),
+ theEcorePackage.getEString(),
+ "body", null, 1, 1, Comment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(templateEClass, Template.class,
+ "Template", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Overrides(),
+ this.getTemplateOverridesValue(),
+ null,
+ "overrides", null, 0, -1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Parameter(),
+ this.getVariable(),
+ null,
+ "parameter", null, 0, -1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getTemplate_Guard(),
+ this.getModelExpression(),
+ null,
+ "guard", null, 0, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(templateOverridesValueEClass, TemplateOverridesValue.class,
+ "TemplateOverridesValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getTemplateOverridesValue_Name(),
+ theEcorePackage.getEString(),
+ "name", null, 1, 1, TemplateOverridesValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(variableEClass, Variable.class,
+ "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getVariable_Name(),
+ theEcorePackage.getEString(),
+ "name", null, 1, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getVariable_Type(),
+ theEcorePackage.getEString(),
+ "type", null, 1, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getVariable_InitExpression(),
+ this.getModelExpression(),
+ null,
+ "initExpression", null, 0, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(templateExpressionEClass, TemplateExpression.class,
+ "TemplateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(modelExpressionEClass, ModelExpression.class,
+ "ModelExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getModelExpression_Body(),
+ theEcorePackage.getEString(),
+ "body", null, 1, 1, ModelExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModelExpression_Before(),
+ this.getModelExpression(),
+ null,
+ "before", null, 0, 1, ModelExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModelExpression_Each(),
+ this.getModelExpression(),
+ null,
+ "each", null, 0, 1, ModelExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getModelExpression_After(),
+ this.getModelExpression(),
+ null,
+ "after", null, 0, 1, ModelExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(textExpressionEClass, TextExpression.class,
+ "TextExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getTextExpression_Value(),
+ theEcorePackage.getEString(),
+ "value", null, 1, 1, TextExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(blockEClass, Block.class,
+ "Block", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getBlock_Init(),
+ this.getInitSection(),
+ null,
+ "init", null, 0, 1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getBlock_Body(),
+ this.getTemplateExpression(),
+ null,
+ "body", null, 0, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(initSectionEClass, InitSection.class,
+ "InitSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getInitSection_Variable(),
+ this.getVariable(),
+ null,
+ "variable", null, 1, -1, InitSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(protectedAreaBlockEClass, ProtectedAreaBlock.class,
+ "ProtectedAreaBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getProtectedAreaBlock_Marker(),
+ this.getModelExpression(),
+ null,
+ "marker", null, 1, 1, ProtectedAreaBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(forBlockEClass, ForBlock.class,
+ "ForBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getForBlock_LoopVariable(),
+ this.getVariable(),
+ null,
+ "loopVariable", null, 1, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_IterSet(),
+ this.getModelExpression(),
+ null,
+ "iterSet", null, 1, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Before(),
+ this.getModelExpression(),
+ null,
+ "before", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Each(),
+ this.getModelExpression(),
+ null,
+ "each", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_After(),
+ this.getModelExpression(),
+ null,
+ "after", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getForBlock_Guard(),
+ this.getModelExpression(),
+ null,
+ "guard", null, 0, 1, ForBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(ifBlockEClass, IfBlock.class,
+ "IfBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_IfExpr(),
+ this.getModelExpression(),
+ null,
+ "ifExpr", null, 1, 1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_Else(),
+ this.getBlock(),
+ null,
+ "else", null, 0, 1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getIfBlock_ElseIf(),
+ this.getIfBlock(),
+ null,
+ "elseIf", null, 0, -1, IfBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(letBlockEClass, LetBlock.class,
+ "LetBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_ElseLet(),
+ this.getLetBlock(),
+ null,
+ "elseLet", null, 0, -1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_Else(),
+ this.getBlock(),
+ null,
+ "else", null, 0, 1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getLetBlock_LetVariable(),
+ this.getVariable(),
+ null,
+ "letVariable", null, 1, 1, LetBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(fileBlockEClass, FileBlock.class,
+ "FileBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getFileBlock_OpenMode(),
+ this.getOpenModeKind(),
+ "openMode", null, 1, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getFileBlock_FileUrl(),
+ this.getModelExpression(),
+ null,
+ "fileUrl", null, 1, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getFileBlock_UniqId(),
+ this.getModelExpression(),
+ null,
+ "uniqId", null, 0, 1, FileBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(traceBlockEClass, TraceBlock.class,
+ "TraceBlock", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getTraceBlock_ModelElement(),
+ this.getModelExpression(),
+ null,
+ "modelElement", null, 1, 1, TraceBlock.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(macroEClass, Macro.class,
+ "Macro", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getMacro_Parameter(),
+ this.getVariable(),
+ null,
+ "parameter", null, 0, -1, Macro.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getMacro_Type(),
+ theEcorePackage.getEString(),
+ "type", null, 1, 1, Macro.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(queryEClass, Query.class,
+ "Query", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getQuery_Parameter(),
+ this.getVariable(),
+ null,
+ "parameter", null, 0, -1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(
+ getQuery_Type(),
+ theEcorePackage.getEString(),
+ "type", null, 1, 1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getQuery_Expression(),
+ this.getModelExpression(),
+ null,
+ "expression", null, 0, 1, Query.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Initialize enums and add enum literals
+ initEEnum(visibilityKindEEnum, VisibilityKind.class, "VisibilityKind"); //$NON-NLS-1$
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PRIVATE);
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PROTECTED);
+ addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PUBLIC);
+
+ initEEnum(openModeKindEEnum, OpenModeKind.class, "OpenModeKind"); //$NON-NLS-1$
+ addEEnumLiteral(openModeKindEEnum, OpenModeKind.APPEND);
+ addEEnumLiteral(openModeKindEEnum, OpenModeKind.OVER_WRITE);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // CstPackageImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/FileBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/FileBlockImpl.java
new file mode 100644
index 0000000..9a22252
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/FileBlockImpl.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.FileBlock;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.OpenModeKind;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>File Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.FileBlockImpl#getOpenMode <em>Open Mode</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.FileBlockImpl#getFileUrl <em>File Url</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.FileBlockImpl#getUniqId <em>Uniq Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FileBlockImpl extends BlockImpl implements FileBlock {
+ /**
+ * The default value of the '{@link #getOpenMode() <em>Open Mode</em>}' attribute. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getOpenMode()
+ * @generated
+ * @ordered
+ */
+ protected static final OpenModeKind OPEN_MODE_EDEFAULT = OpenModeKind.APPEND;
+
+ /**
+ * The cached value of the '{@link #getOpenMode() <em>Open Mode</em>}' attribute. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getOpenMode()
+ * @generated
+ * @ordered
+ */
+ protected OpenModeKind openMode = OPEN_MODE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFileUrl() <em>File Url</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getFileUrl()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression fileUrl;
+
+ /**
+ * The cached value of the '{@link #getUniqId() <em>Uniq Id</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getUniqId()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression uniqId;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected FileBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.FILE_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public OpenModeKind getOpenMode() {
+ return openMode;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setOpenMode(OpenModeKind newOpenMode) {
+ OpenModeKind oldOpenMode = openMode;
+ openMode = newOpenMode == null ? OPEN_MODE_EDEFAULT : newOpenMode;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FILE_BLOCK__OPEN_MODE,
+ oldOpenMode, openMode));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getFileUrl() {
+ return fileUrl;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetFileUrl(ModelExpression newFileUrl, NotificationChain msgs) {
+ ModelExpression oldFileUrl = fileUrl;
+ fileUrl = newFileUrl;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FILE_BLOCK__FILE_URL, oldFileUrl, newFileUrl);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setFileUrl(ModelExpression newFileUrl) {
+ if (newFileUrl != fileUrl) {
+ NotificationChain msgs = null;
+ if (fileUrl != null) {
+ msgs = ((InternalEObject)fileUrl).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FILE_BLOCK__FILE_URL, null, msgs);
+ }
+ if (newFileUrl != null) {
+ msgs = ((InternalEObject)newFileUrl).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FILE_BLOCK__FILE_URL, null, msgs);
+ }
+ msgs = basicSetFileUrl(newFileUrl, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FILE_BLOCK__FILE_URL,
+ newFileUrl, newFileUrl));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getUniqId() {
+ return uniqId;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetUniqId(ModelExpression newUniqId, NotificationChain msgs) {
+ ModelExpression oldUniqId = uniqId;
+ uniqId = newUniqId;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FILE_BLOCK__UNIQ_ID, oldUniqId, newUniqId);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setUniqId(ModelExpression newUniqId) {
+ if (newUniqId != uniqId) {
+ NotificationChain msgs = null;
+ if (uniqId != null) {
+ msgs = ((InternalEObject)uniqId).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FILE_BLOCK__UNIQ_ID, null, msgs);
+ }
+ if (newUniqId != null) {
+ msgs = ((InternalEObject)newUniqId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FILE_BLOCK__UNIQ_ID, null, msgs);
+ }
+ msgs = basicSetUniqId(newUniqId, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FILE_BLOCK__UNIQ_ID, newUniqId,
+ newUniqId));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.FILE_BLOCK__FILE_URL:
+ return basicSetFileUrl(null, msgs);
+ case CstPackage.FILE_BLOCK__UNIQ_ID:
+ return basicSetUniqId(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 CstPackage.FILE_BLOCK__OPEN_MODE:
+ return getOpenMode();
+ case CstPackage.FILE_BLOCK__FILE_URL:
+ return getFileUrl();
+ case CstPackage.FILE_BLOCK__UNIQ_ID:
+ return getUniqId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.FILE_BLOCK__OPEN_MODE:
+ setOpenMode((OpenModeKind)newValue);
+ return;
+ case CstPackage.FILE_BLOCK__FILE_URL:
+ setFileUrl((ModelExpression)newValue);
+ return;
+ case CstPackage.FILE_BLOCK__UNIQ_ID:
+ setUniqId((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.FILE_BLOCK__OPEN_MODE:
+ setOpenMode(OPEN_MODE_EDEFAULT);
+ return;
+ case CstPackage.FILE_BLOCK__FILE_URL:
+ setFileUrl((ModelExpression)null);
+ return;
+ case CstPackage.FILE_BLOCK__UNIQ_ID:
+ setUniqId((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.FILE_BLOCK__OPEN_MODE:
+ return openMode != OPEN_MODE_EDEFAULT;
+ case CstPackage.FILE_BLOCK__FILE_URL:
+ return fileUrl != null;
+ case CstPackage.FILE_BLOCK__UNIQ_ID:
+ return uniqId != 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(" (openMode: "); //$NON-NLS-1$
+ result.append(openMode);
+ result.append(')');
+ return result.toString();
+ }
+
+} // FileBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ForBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ForBlockImpl.java
new file mode 100644
index 0000000..0b3a300
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ForBlockImpl.java
@@ -0,0 +1,582 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ForBlock;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Variable;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>For Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getLoopVariable <em>Loop Variable</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getIterSet <em>Iter Set</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getAfter <em>After</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ForBlockImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ForBlockImpl extends BlockImpl implements ForBlock {
+ /**
+ * The cached value of the '{@link #getLoopVariable() <em>Loop Variable</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLoopVariable()
+ * @generated
+ * @ordered
+ */
+ protected Variable loopVariable;
+
+ /**
+ * The cached value of the '{@link #getIterSet() <em>Iter Set</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getIterSet()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression iterSet;
+
+ /**
+ * The cached value of the '{@link #getBefore() <em>Before</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBefore()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression before;
+
+ /**
+ * The cached value of the '{@link #getEach() <em>Each</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getEach()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression each;
+
+ /**
+ * The cached value of the '{@link #getAfter() <em>After</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getAfter()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression after;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression guard;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ForBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.FOR_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Variable getLoopVariable() {
+ return loopVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetLoopVariable(Variable newLoopVariable, NotificationChain msgs) {
+ Variable oldLoopVariable = loopVariable;
+ loopVariable = newLoopVariable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__LOOP_VARIABLE, oldLoopVariable, newLoopVariable);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setLoopVariable(Variable newLoopVariable) {
+ if (newLoopVariable != loopVariable) {
+ NotificationChain msgs = null;
+ if (loopVariable != null) {
+ msgs = ((InternalEObject)loopVariable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__LOOP_VARIABLE, null, msgs);
+ }
+ if (newLoopVariable != null) {
+ msgs = ((InternalEObject)newLoopVariable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__LOOP_VARIABLE, null, msgs);
+ }
+ msgs = basicSetLoopVariable(newLoopVariable, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__LOOP_VARIABLE,
+ newLoopVariable, newLoopVariable));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getIterSet() {
+ return iterSet;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetIterSet(ModelExpression newIterSet, NotificationChain msgs) {
+ ModelExpression oldIterSet = iterSet;
+ iterSet = newIterSet;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__ITER_SET, oldIterSet, newIterSet);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setIterSet(ModelExpression newIterSet) {
+ if (newIterSet != iterSet) {
+ NotificationChain msgs = null;
+ if (iterSet != null) {
+ msgs = ((InternalEObject)iterSet).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__ITER_SET, null, msgs);
+ }
+ if (newIterSet != null) {
+ msgs = ((InternalEObject)newIterSet).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__ITER_SET, null, msgs);
+ }
+ msgs = basicSetIterSet(newIterSet, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__ITER_SET, newIterSet,
+ newIterSet));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getBefore() {
+ return before;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetBefore(ModelExpression newBefore, NotificationChain msgs) {
+ ModelExpression oldBefore = before;
+ before = newBefore;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__BEFORE, oldBefore, newBefore);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBefore(ModelExpression newBefore) {
+ if (newBefore != before) {
+ NotificationChain msgs = null;
+ if (before != null) {
+ msgs = ((InternalEObject)before).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__BEFORE, null, msgs);
+ }
+ if (newBefore != null) {
+ msgs = ((InternalEObject)newBefore).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__BEFORE, null, msgs);
+ }
+ msgs = basicSetBefore(newBefore, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__BEFORE, newBefore,
+ newBefore));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getEach() {
+ return each;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetEach(ModelExpression newEach, NotificationChain msgs) {
+ ModelExpression oldEach = each;
+ each = newEach;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__EACH, oldEach, newEach);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEach(ModelExpression newEach) {
+ if (newEach != each) {
+ NotificationChain msgs = null;
+ if (each != null) {
+ msgs = ((InternalEObject)each).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__EACH, null, msgs);
+ }
+ if (newEach != null) {
+ msgs = ((InternalEObject)newEach).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__EACH, null, msgs);
+ }
+ msgs = basicSetEach(newEach, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__EACH, newEach,
+ newEach));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getAfter() {
+ return after;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetAfter(ModelExpression newAfter, NotificationChain msgs) {
+ ModelExpression oldAfter = after;
+ after = newAfter;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__AFTER, oldAfter, newAfter);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setAfter(ModelExpression newAfter) {
+ if (newAfter != after) {
+ NotificationChain msgs = null;
+ if (after != null) {
+ msgs = ((InternalEObject)after).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__AFTER, null, msgs);
+ }
+ if (newAfter != null) {
+ msgs = ((InternalEObject)newAfter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__AFTER, null, msgs);
+ }
+ msgs = basicSetAfter(newAfter, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__AFTER, newAfter,
+ newAfter));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getGuard() {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetGuard(ModelExpression newGuard, NotificationChain msgs) {
+ ModelExpression oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.FOR_BLOCK__GUARD, oldGuard, newGuard);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setGuard(ModelExpression newGuard) {
+ if (newGuard != guard) {
+ NotificationChain msgs = null;
+ if (guard != null) {
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__GUARD, null, msgs);
+ }
+ if (newGuard != null) {
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.FOR_BLOCK__GUARD, null, msgs);
+ }
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.FOR_BLOCK__GUARD, newGuard,
+ newGuard));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return basicSetLoopVariable(null, msgs);
+ case CstPackage.FOR_BLOCK__ITER_SET:
+ return basicSetIterSet(null, msgs);
+ case CstPackage.FOR_BLOCK__BEFORE:
+ return basicSetBefore(null, msgs);
+ case CstPackage.FOR_BLOCK__EACH:
+ return basicSetEach(null, msgs);
+ case CstPackage.FOR_BLOCK__AFTER:
+ return basicSetAfter(null, msgs);
+ case CstPackage.FOR_BLOCK__GUARD:
+ return basicSetGuard(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 CstPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return getLoopVariable();
+ case CstPackage.FOR_BLOCK__ITER_SET:
+ return getIterSet();
+ case CstPackage.FOR_BLOCK__BEFORE:
+ return getBefore();
+ case CstPackage.FOR_BLOCK__EACH:
+ return getEach();
+ case CstPackage.FOR_BLOCK__AFTER:
+ return getAfter();
+ case CstPackage.FOR_BLOCK__GUARD:
+ return getGuard();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.FOR_BLOCK__LOOP_VARIABLE:
+ setLoopVariable((Variable)newValue);
+ return;
+ case CstPackage.FOR_BLOCK__ITER_SET:
+ setIterSet((ModelExpression)newValue);
+ return;
+ case CstPackage.FOR_BLOCK__BEFORE:
+ setBefore((ModelExpression)newValue);
+ return;
+ case CstPackage.FOR_BLOCK__EACH:
+ setEach((ModelExpression)newValue);
+ return;
+ case CstPackage.FOR_BLOCK__AFTER:
+ setAfter((ModelExpression)newValue);
+ return;
+ case CstPackage.FOR_BLOCK__GUARD:
+ setGuard((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.FOR_BLOCK__LOOP_VARIABLE:
+ setLoopVariable((Variable)null);
+ return;
+ case CstPackage.FOR_BLOCK__ITER_SET:
+ setIterSet((ModelExpression)null);
+ return;
+ case CstPackage.FOR_BLOCK__BEFORE:
+ setBefore((ModelExpression)null);
+ return;
+ case CstPackage.FOR_BLOCK__EACH:
+ setEach((ModelExpression)null);
+ return;
+ case CstPackage.FOR_BLOCK__AFTER:
+ setAfter((ModelExpression)null);
+ return;
+ case CstPackage.FOR_BLOCK__GUARD:
+ setGuard((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.FOR_BLOCK__LOOP_VARIABLE:
+ return loopVariable != null;
+ case CstPackage.FOR_BLOCK__ITER_SET:
+ return iterSet != null;
+ case CstPackage.FOR_BLOCK__BEFORE:
+ return before != null;
+ case CstPackage.FOR_BLOCK__EACH:
+ return each != null;
+ case CstPackage.FOR_BLOCK__AFTER:
+ return after != null;
+ case CstPackage.FOR_BLOCK__GUARD:
+ return guard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ForBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/IfBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/IfBlockImpl.java
new file mode 100644
index 0000000..5b68ca5
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/IfBlockImpl.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.IfBlock;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>If Block</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.IfBlockImpl#getIfExpr <em>If Expr</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.IfBlockImpl#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.IfBlockImpl#getElseIf <em>Else If</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IfBlockImpl extends BlockImpl implements IfBlock {
+ /**
+ * The cached value of the '{@link #getIfExpr() <em>If Expr</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getIfExpr()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression ifExpr;
+
+ /**
+ * The cached value of the '{@link #getElse() <em>Else</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getElse()
+ * @generated
+ * @ordered
+ */
+ protected Block else_;
+
+ /**
+ * The cached value of the '{@link #getElseIf() <em>Else If</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getElseIf()
+ * @generated
+ * @ordered
+ */
+ protected EList<IfBlock> elseIf;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IfBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.IF_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getIfExpr() {
+ return ifExpr;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetIfExpr(ModelExpression newIfExpr, NotificationChain msgs) {
+ ModelExpression oldIfExpr = ifExpr;
+ ifExpr = newIfExpr;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.IF_BLOCK__IF_EXPR, oldIfExpr, newIfExpr);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setIfExpr(ModelExpression newIfExpr) {
+ if (newIfExpr != ifExpr) {
+ NotificationChain msgs = null;
+ if (ifExpr != null) {
+ msgs = ((InternalEObject)ifExpr).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.IF_BLOCK__IF_EXPR, null, msgs);
+ }
+ if (newIfExpr != null) {
+ msgs = ((InternalEObject)newIfExpr).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.IF_BLOCK__IF_EXPR, null, msgs);
+ }
+ msgs = basicSetIfExpr(newIfExpr, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.IF_BLOCK__IF_EXPR, newIfExpr,
+ newIfExpr));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block getElse() {
+ return else_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetElse(Block newElse, NotificationChain msgs) {
+ Block oldElse = else_;
+ else_ = newElse;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.IF_BLOCK__ELSE, oldElse, newElse);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setElse(Block newElse) {
+ if (newElse != else_) {
+ NotificationChain msgs = null;
+ if (else_ != null) {
+ msgs = ((InternalEObject)else_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.IF_BLOCK__ELSE, null, msgs);
+ }
+ if (newElse != null) {
+ msgs = ((InternalEObject)newElse).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.IF_BLOCK__ELSE, null, msgs);
+ }
+ msgs = basicSetElse(newElse, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.IF_BLOCK__ELSE, newElse, newElse));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<IfBlock> getElseIf() {
+ if (elseIf == null) {
+ elseIf = new EObjectContainmentEList<IfBlock>(IfBlock.class, this, CstPackage.IF_BLOCK__ELSE_IF);
+ }
+ return elseIf;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.IF_BLOCK__IF_EXPR:
+ return basicSetIfExpr(null, msgs);
+ case CstPackage.IF_BLOCK__ELSE:
+ return basicSetElse(null, msgs);
+ case CstPackage.IF_BLOCK__ELSE_IF:
+ return ((InternalEList<?>)getElseIf()).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 CstPackage.IF_BLOCK__IF_EXPR:
+ return getIfExpr();
+ case CstPackage.IF_BLOCK__ELSE:
+ return getElse();
+ case CstPackage.IF_BLOCK__ELSE_IF:
+ return getElseIf();
+ }
+ 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 CstPackage.IF_BLOCK__IF_EXPR:
+ setIfExpr((ModelExpression)newValue);
+ return;
+ case CstPackage.IF_BLOCK__ELSE:
+ setElse((Block)newValue);
+ return;
+ case CstPackage.IF_BLOCK__ELSE_IF:
+ getElseIf().clear();
+ getElseIf().addAll((Collection<? extends IfBlock>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.IF_BLOCK__IF_EXPR:
+ setIfExpr((ModelExpression)null);
+ return;
+ case CstPackage.IF_BLOCK__ELSE:
+ setElse((Block)null);
+ return;
+ case CstPackage.IF_BLOCK__ELSE_IF:
+ getElseIf().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.IF_BLOCK__IF_EXPR:
+ return ifExpr != null;
+ case CstPackage.IF_BLOCK__ELSE:
+ return else_ != null;
+ case CstPackage.IF_BLOCK__ELSE_IF:
+ return elseIf != null && !elseIf.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // IfBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/InitSectionImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/InitSectionImpl.java
new file mode 100644
index 0000000..c8fef5f
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/InitSectionImpl.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.Variable;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Init Section</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.InitSectionImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.InitSectionImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.InitSectionImpl#getVariable <em>Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InitSectionImpl extends EObjectImpl implements InitSection {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getVariable() <em>Variable</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getVariable()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> variable;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected InitSectionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.INIT_SECTION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.INIT_SECTION__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.INIT_SECTION__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getVariable() {
+ if (variable == null) {
+ variable = new EObjectContainmentEList<Variable>(Variable.class, this,
+ CstPackage.INIT_SECTION__VARIABLE);
+ }
+ return variable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.INIT_SECTION__VARIABLE:
+ return ((InternalEList<?>)getVariable()).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 CstPackage.INIT_SECTION__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.INIT_SECTION__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.INIT_SECTION__VARIABLE:
+ return getVariable();
+ }
+ 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 CstPackage.INIT_SECTION__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.INIT_SECTION__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.INIT_SECTION__VARIABLE:
+ getVariable().clear();
+ getVariable().addAll((Collection<? extends Variable>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.INIT_SECTION__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.INIT_SECTION__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.INIT_SECTION__VARIABLE:
+ getVariable().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.INIT_SECTION__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.INIT_SECTION__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.INIT_SECTION__VARIABLE:
+ return variable != null && !variable.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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(')');
+ return result.toString();
+ }
+
+} // InitSectionImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/LetBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/LetBlockImpl.java
new file mode 100644
index 0000000..7e53e6b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/LetBlockImpl.java
@@ -0,0 +1,313 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.LetBlock;
+import org.eclipse.acceleo.parser.cst.Variable;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Let Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.LetBlockImpl#getElseLet <em>Else Let</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.LetBlockImpl#getElse <em>Else</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.LetBlockImpl#getLetVariable <em>Let Variable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LetBlockImpl extends BlockImpl implements LetBlock {
+ /**
+ * The cached value of the '{@link #getElseLet() <em>Else Let</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getElseLet()
+ * @generated
+ * @ordered
+ */
+ protected EList<LetBlock> elseLet;
+
+ /**
+ * The cached value of the '{@link #getElse() <em>Else</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getElse()
+ * @generated
+ * @ordered
+ */
+ protected Block else_;
+
+ /**
+ * The cached value of the '{@link #getLetVariable() <em>Let Variable</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLetVariable()
+ * @generated
+ * @ordered
+ */
+ protected Variable letVariable;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected LetBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.LET_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<LetBlock> getElseLet() {
+ if (elseLet == null) {
+ elseLet = new EObjectContainmentEList<LetBlock>(LetBlock.class, this,
+ CstPackage.LET_BLOCK__ELSE_LET);
+ }
+ return elseLet;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Block getElse() {
+ return else_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetElse(Block newElse, NotificationChain msgs) {
+ Block oldElse = else_;
+ else_ = newElse;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.LET_BLOCK__ELSE, oldElse, newElse);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setElse(Block newElse) {
+ if (newElse != else_) {
+ NotificationChain msgs = null;
+ if (else_ != null) {
+ msgs = ((InternalEObject)else_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.LET_BLOCK__ELSE, null, msgs);
+ }
+ if (newElse != null) {
+ msgs = ((InternalEObject)newElse).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.LET_BLOCK__ELSE, null, msgs);
+ }
+ msgs = basicSetElse(newElse, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.LET_BLOCK__ELSE, newElse,
+ newElse));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Variable getLetVariable() {
+ return letVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetLetVariable(Variable newLetVariable, NotificationChain msgs) {
+ Variable oldLetVariable = letVariable;
+ letVariable = newLetVariable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.LET_BLOCK__LET_VARIABLE, oldLetVariable, newLetVariable);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setLetVariable(Variable newLetVariable) {
+ if (newLetVariable != letVariable) {
+ NotificationChain msgs = null;
+ if (letVariable != null) {
+ msgs = ((InternalEObject)letVariable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.LET_BLOCK__LET_VARIABLE, null, msgs);
+ }
+ if (newLetVariable != null) {
+ msgs = ((InternalEObject)newLetVariable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.LET_BLOCK__LET_VARIABLE, null, msgs);
+ }
+ msgs = basicSetLetVariable(newLetVariable, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.LET_BLOCK__LET_VARIABLE,
+ newLetVariable, newLetVariable));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.LET_BLOCK__ELSE_LET:
+ return ((InternalEList<?>)getElseLet()).basicRemove(otherEnd, msgs);
+ case CstPackage.LET_BLOCK__ELSE:
+ return basicSetElse(null, msgs);
+ case CstPackage.LET_BLOCK__LET_VARIABLE:
+ return basicSetLetVariable(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 CstPackage.LET_BLOCK__ELSE_LET:
+ return getElseLet();
+ case CstPackage.LET_BLOCK__ELSE:
+ return getElse();
+ case CstPackage.LET_BLOCK__LET_VARIABLE:
+ return getLetVariable();
+ }
+ 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 CstPackage.LET_BLOCK__ELSE_LET:
+ getElseLet().clear();
+ getElseLet().addAll((Collection<? extends LetBlock>)newValue);
+ return;
+ case CstPackage.LET_BLOCK__ELSE:
+ setElse((Block)newValue);
+ return;
+ case CstPackage.LET_BLOCK__LET_VARIABLE:
+ setLetVariable((Variable)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.LET_BLOCK__ELSE_LET:
+ getElseLet().clear();
+ return;
+ case CstPackage.LET_BLOCK__ELSE:
+ setElse((Block)null);
+ return;
+ case CstPackage.LET_BLOCK__LET_VARIABLE:
+ setLetVariable((Variable)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.LET_BLOCK__ELSE_LET:
+ return elseLet != null && !elseLet.isEmpty();
+ case CstPackage.LET_BLOCK__ELSE:
+ return else_ != null;
+ case CstPackage.LET_BLOCK__LET_VARIABLE:
+ return letVariable != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // LetBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/MacroImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/MacroImpl.java
new file mode 100644
index 0000000..b2f8861
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/MacroImpl.java
@@ -0,0 +1,379 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.Macro;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.acceleo.parser.cst.VisibilityKind;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Macro</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.MacroImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.MacroImpl#getVisibility <em>Visibility</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.MacroImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MacroImpl extends BlockImpl implements Macro {
+ /**
+ * 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 #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * 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 MacroImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MACRO;
+ }
+
+ /**
+ * <!-- 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, CstPackage.MACRO__NAME, oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MACRO__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ CstPackage.MACRO__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- 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, CstPackage.MACRO__TYPE, oldType, type));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.MACRO__PARAMETER:
+ return ((InternalEList<?>)getParameter()).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 CstPackage.MACRO__NAME:
+ return getName();
+ case CstPackage.MACRO__VISIBILITY:
+ return getVisibility();
+ case CstPackage.MACRO__PARAMETER:
+ return getParameter();
+ case CstPackage.MACRO__TYPE:
+ return getType();
+ }
+ 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 CstPackage.MACRO__NAME:
+ setName((String)newValue);
+ return;
+ case CstPackage.MACRO__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ case CstPackage.MACRO__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case CstPackage.MACRO__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 CstPackage.MACRO__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CstPackage.MACRO__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ case CstPackage.MACRO__PARAMETER:
+ getParameter().clear();
+ return;
+ case CstPackage.MACRO__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MACRO__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CstPackage.MACRO__VISIBILITY:
+ return visibility != VISIBILITY_EDEFAULT;
+ case CstPackage.MACRO__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case CstPackage.MACRO__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (derivedFeatureID) {
+ case CstPackage.MACRO__NAME:
+ return CstPackage.MODULE_ELEMENT__NAME;
+ case CstPackage.MACRO__VISIBILITY:
+ return CstPackage.MODULE_ELEMENT__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (baseFeatureID) {
+ case CstPackage.MODULE_ELEMENT__NAME:
+ return CstPackage.MACRO__NAME;
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ return CstPackage.MACRO__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- 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: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", visibility: "); //$NON-NLS-1$
+ result.append(visibility);
+ result.append(", type: "); //$NON-NLS-1$
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} // MacroImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModelExpressionImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModelExpressionImpl.java
new file mode 100644
index 0000000..71ddd23
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModelExpressionImpl.java
@@ -0,0 +1,418 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Model Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl#getBody <em>Body</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl#getBefore <em>Before</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl#getEach <em>Each</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModelExpressionImpl#getAfter <em>After</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModelExpressionImpl extends TemplateExpressionImpl implements ModelExpression {
+ /**
+ * The default value of the '{@link #getBody() <em>Body</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected static final String BODY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBody() <em>Body</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected String body = BODY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBefore() <em>Before</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBefore()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression before;
+
+ /**
+ * The cached value of the '{@link #getEach() <em>Each</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getEach()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression each;
+
+ /**
+ * The cached value of the '{@link #getAfter() <em>After</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getAfter()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression after;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModelExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MODEL_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBody(String newBody) {
+ String oldBody = body;
+ body = newBody;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODEL_EXPRESSION__BODY, oldBody,
+ body));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getBefore() {
+ return before;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetBefore(ModelExpression newBefore, NotificationChain msgs) {
+ ModelExpression oldBefore = before;
+ before = newBefore;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODEL_EXPRESSION__BEFORE, oldBefore, newBefore);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBefore(ModelExpression newBefore) {
+ if (newBefore != before) {
+ NotificationChain msgs = null;
+ if (before != null) {
+ msgs = ((InternalEObject)before).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__BEFORE, null, msgs);
+ }
+ if (newBefore != null) {
+ msgs = ((InternalEObject)newBefore).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__BEFORE, null, msgs);
+ }
+ msgs = basicSetBefore(newBefore, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODEL_EXPRESSION__BEFORE,
+ newBefore, newBefore));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getEach() {
+ return each;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetEach(ModelExpression newEach, NotificationChain msgs) {
+ ModelExpression oldEach = each;
+ each = newEach;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODEL_EXPRESSION__EACH, oldEach, newEach);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEach(ModelExpression newEach) {
+ if (newEach != each) {
+ NotificationChain msgs = null;
+ if (each != null) {
+ msgs = ((InternalEObject)each).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__EACH, null, msgs);
+ }
+ if (newEach != null) {
+ msgs = ((InternalEObject)newEach).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__EACH, null, msgs);
+ }
+ msgs = basicSetEach(newEach, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODEL_EXPRESSION__EACH, newEach,
+ newEach));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getAfter() {
+ return after;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetAfter(ModelExpression newAfter, NotificationChain msgs) {
+ ModelExpression oldAfter = after;
+ after = newAfter;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODEL_EXPRESSION__AFTER, oldAfter, newAfter);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setAfter(ModelExpression newAfter) {
+ if (newAfter != after) {
+ NotificationChain msgs = null;
+ if (after != null) {
+ msgs = ((InternalEObject)after).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__AFTER, null, msgs);
+ }
+ if (newAfter != null) {
+ msgs = ((InternalEObject)newAfter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.MODEL_EXPRESSION__AFTER, null, msgs);
+ }
+ msgs = basicSetAfter(newAfter, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODEL_EXPRESSION__AFTER,
+ newAfter, newAfter));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.MODEL_EXPRESSION__BEFORE:
+ return basicSetBefore(null, msgs);
+ case CstPackage.MODEL_EXPRESSION__EACH:
+ return basicSetEach(null, msgs);
+ case CstPackage.MODEL_EXPRESSION__AFTER:
+ return basicSetAfter(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 CstPackage.MODEL_EXPRESSION__BODY:
+ return getBody();
+ case CstPackage.MODEL_EXPRESSION__BEFORE:
+ return getBefore();
+ case CstPackage.MODEL_EXPRESSION__EACH:
+ return getEach();
+ case CstPackage.MODEL_EXPRESSION__AFTER:
+ return getAfter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.MODEL_EXPRESSION__BODY:
+ setBody((String)newValue);
+ return;
+ case CstPackage.MODEL_EXPRESSION__BEFORE:
+ setBefore((ModelExpression)newValue);
+ return;
+ case CstPackage.MODEL_EXPRESSION__EACH:
+ setEach((ModelExpression)newValue);
+ return;
+ case CstPackage.MODEL_EXPRESSION__AFTER:
+ setAfter((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODEL_EXPRESSION__BODY:
+ setBody(BODY_EDEFAULT);
+ return;
+ case CstPackage.MODEL_EXPRESSION__BEFORE:
+ setBefore((ModelExpression)null);
+ return;
+ case CstPackage.MODEL_EXPRESSION__EACH:
+ setEach((ModelExpression)null);
+ return;
+ case CstPackage.MODEL_EXPRESSION__AFTER:
+ setAfter((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODEL_EXPRESSION__BODY:
+ return BODY_EDEFAULT == null ? body != null : !BODY_EDEFAULT.equals(body);
+ case CstPackage.MODEL_EXPRESSION__BEFORE:
+ return before != null;
+ case CstPackage.MODEL_EXPRESSION__EACH:
+ return each != null;
+ case CstPackage.MODEL_EXPRESSION__AFTER:
+ return after != 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(" (body: "); //$NON-NLS-1$
+ result.append(body);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModelExpressionImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleElementImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleElementImpl.java
new file mode 100644
index 0000000..5174446
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleElementImpl.java
@@ -0,0 +1,340 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.VisibilityKind;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Module Element</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleElementImpl#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ModuleElementImpl extends EObjectImpl implements ModuleElement {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * 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 #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModuleElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MODULE_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODULE_ELEMENT__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODULE_ELEMENT__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- 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, CstPackage.MODULE_ELEMENT__NAME, oldName,
+ name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODULE_ELEMENT__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.MODULE_ELEMENT__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.MODULE_ELEMENT__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.MODULE_ELEMENT__NAME:
+ return getName();
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ return getVisibility();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.MODULE_ELEMENT__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_ELEMENT__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_ELEMENT__NAME:
+ setName((String)newValue);
+ return;
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE_ELEMENT__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_ELEMENT__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE_ELEMENT__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.MODULE_ELEMENT__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.MODULE_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ return visibility != VISIBILITY_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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", visibility: "); //$NON-NLS-1$
+ result.append(visibility);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModuleElementImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleExtendsValueImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleExtendsValueImpl.java
new file mode 100644
index 0000000..578c549
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleExtendsValueImpl.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Module Extends Value</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleExtendsValueImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModuleExtendsValueImpl extends EObjectImpl implements ModuleExtendsValue {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * 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 ModuleExtendsValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MODULE_EXTENDS_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODULE_EXTENDS_VALUE__START_POSITION, oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODULE_EXTENDS_VALUE__END_POSITION, oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- 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, CstPackage.MODULE_EXTENDS_VALUE__NAME,
+ oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.MODULE_EXTENDS_VALUE__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.MODULE_EXTENDS_VALUE__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.MODULE_EXTENDS_VALUE__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 CstPackage.MODULE_EXTENDS_VALUE__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_EXTENDS_VALUE__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_EXTENDS_VALUE__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 CstPackage.MODULE_EXTENDS_VALUE__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_EXTENDS_VALUE__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_EXTENDS_VALUE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE_EXTENDS_VALUE__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.MODULE_EXTENDS_VALUE__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.MODULE_EXTENDS_VALUE__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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModuleExtendsValueImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImpl.java
new file mode 100644
index 0000000..9addd44
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImpl.java
@@ -0,0 +1,437 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CSTNode;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.Module;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+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.EPackageImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Module</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl#getInput <em>Input</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl#getOwnedModuleElement <em>Owned Module Element</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl#getExtends <em>Extends</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImpl#getImports <em>Imports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModuleImpl extends EPackageImpl implements Module {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInput() <em>Input</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getInput()
+ * @generated
+ * @ordered
+ */
+ protected EList<TypedModel> input;
+
+ /**
+ * The cached value of the '{@link #getOwnedModuleElement() <em>Owned Module Element</em>}' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getOwnedModuleElement()
+ * @generated
+ * @ordered
+ */
+ protected EList<ModuleElement> ownedModuleElement;
+
+ /**
+ * The cached value of the '{@link #getExtends() <em>Extends</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getExtends()
+ * @generated
+ * @ordered
+ */
+ protected EList<ModuleExtendsValue> extends_;
+
+ /**
+ * The cached value of the '{@link #getImports() <em>Imports</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getImports()
+ * @generated
+ * @ordered
+ */
+ protected EList<ModuleImportsValue> imports;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModuleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MODULE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODULE__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.MODULE__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<TypedModel> getInput() {
+ if (input == null) {
+ input = new EObjectContainmentEList<TypedModel>(TypedModel.class, this, CstPackage.MODULE__INPUT);
+ }
+ return input;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<ModuleElement> getOwnedModuleElement() {
+ if (ownedModuleElement == null) {
+ ownedModuleElement = new EObjectContainmentEList<ModuleElement>(ModuleElement.class, this,
+ CstPackage.MODULE__OWNED_MODULE_ELEMENT);
+ }
+ return ownedModuleElement;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<ModuleExtendsValue> getExtends() {
+ if (extends_ == null) {
+ extends_ = new EObjectContainmentEList<ModuleExtendsValue>(ModuleExtendsValue.class, this,
+ CstPackage.MODULE__EXTENDS);
+ }
+ return extends_;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<ModuleImportsValue> getImports() {
+ if (imports == null) {
+ imports = new EObjectContainmentEList<ModuleImportsValue>(ModuleImportsValue.class, this,
+ CstPackage.MODULE__IMPORTS);
+ }
+ return imports;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.MODULE__INPUT:
+ return ((InternalEList<?>)getInput()).basicRemove(otherEnd, msgs);
+ case CstPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return ((InternalEList<?>)getOwnedModuleElement()).basicRemove(otherEnd, msgs);
+ case CstPackage.MODULE__EXTENDS:
+ return ((InternalEList<?>)getExtends()).basicRemove(otherEnd, msgs);
+ case CstPackage.MODULE__IMPORTS:
+ return ((InternalEList<?>)getImports()).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 CstPackage.MODULE__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.MODULE__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.MODULE__INPUT:
+ return getInput();
+ case CstPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return getOwnedModuleElement();
+ case CstPackage.MODULE__EXTENDS:
+ return getExtends();
+ case CstPackage.MODULE__IMPORTS:
+ return getImports();
+ }
+ 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 CstPackage.MODULE__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE__INPUT:
+ getInput().clear();
+ getInput().addAll((Collection<? extends TypedModel>)newValue);
+ return;
+ case CstPackage.MODULE__OWNED_MODULE_ELEMENT:
+ getOwnedModuleElement().clear();
+ getOwnedModuleElement().addAll((Collection<? extends ModuleElement>)newValue);
+ return;
+ case CstPackage.MODULE__EXTENDS:
+ getExtends().clear();
+ getExtends().addAll((Collection<? extends ModuleExtendsValue>)newValue);
+ return;
+ case CstPackage.MODULE__IMPORTS:
+ getImports().clear();
+ getImports().addAll((Collection<? extends ModuleImportsValue>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE__INPUT:
+ getInput().clear();
+ return;
+ case CstPackage.MODULE__OWNED_MODULE_ELEMENT:
+ getOwnedModuleElement().clear();
+ return;
+ case CstPackage.MODULE__EXTENDS:
+ getExtends().clear();
+ return;
+ case CstPackage.MODULE__IMPORTS:
+ getImports().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.MODULE__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.MODULE__INPUT:
+ return input != null && !input.isEmpty();
+ case CstPackage.MODULE__OWNED_MODULE_ELEMENT:
+ return ownedModuleElement != null && !ownedModuleElement.isEmpty();
+ case CstPackage.MODULE__EXTENDS:
+ return extends_ != null && !extends_.isEmpty();
+ case CstPackage.MODULE__IMPORTS:
+ return imports != null && !imports.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == CSTNode.class) {
+ switch (derivedFeatureID) {
+ case CstPackage.MODULE__START_POSITION:
+ return CstPackage.CST_NODE__START_POSITION;
+ case CstPackage.MODULE__END_POSITION:
+ return CstPackage.CST_NODE__END_POSITION;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == CSTNode.class) {
+ switch (baseFeatureID) {
+ case CstPackage.CST_NODE__START_POSITION:
+ return CstPackage.MODULE__START_POSITION;
+ case CstPackage.CST_NODE__END_POSITION:
+ return CstPackage.MODULE__END_POSITION;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModuleImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImportsValueImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImportsValueImpl.java
new file mode 100644
index 0000000..d0edf39
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ModuleImportsValueImpl.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Module Imports Value</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ModuleImportsValueImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModuleImportsValueImpl extends EObjectImpl implements ModuleImportsValue {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * 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 ModuleImportsValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.MODULE_IMPORTS_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODULE_IMPORTS_VALUE__START_POSITION, oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.MODULE_IMPORTS_VALUE__END_POSITION, oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- 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, CstPackage.MODULE_IMPORTS_VALUE__NAME,
+ oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.MODULE_IMPORTS_VALUE__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.MODULE_IMPORTS_VALUE__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.MODULE_IMPORTS_VALUE__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 CstPackage.MODULE_IMPORTS_VALUE__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_IMPORTS_VALUE__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.MODULE_IMPORTS_VALUE__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 CstPackage.MODULE_IMPORTS_VALUE__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_IMPORTS_VALUE__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.MODULE_IMPORTS_VALUE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.MODULE_IMPORTS_VALUE__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.MODULE_IMPORTS_VALUE__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.MODULE_IMPORTS_VALUE__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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModuleImportsValueImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ProtectedAreaBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ProtectedAreaBlockImpl.java
new file mode 100644
index 0000000..10e6808
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/ProtectedAreaBlockImpl.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.ProtectedAreaBlock;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Protected Area Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.ProtectedAreaBlockImpl#getMarker <em>Marker</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProtectedAreaBlockImpl extends BlockImpl implements ProtectedAreaBlock {
+ /**
+ * The cached value of the '{@link #getMarker() <em>Marker</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMarker()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression marker;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ProtectedAreaBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.PROTECTED_AREA_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getMarker() {
+ return marker;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetMarker(ModelExpression newMarker, NotificationChain msgs) {
+ ModelExpression oldMarker = marker;
+ marker = newMarker;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.PROTECTED_AREA_BLOCK__MARKER, oldMarker, newMarker);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMarker(ModelExpression newMarker) {
+ if (newMarker != marker) {
+ NotificationChain msgs = null;
+ if (marker != null) {
+ msgs = ((InternalEObject)marker).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.PROTECTED_AREA_BLOCK__MARKER, null, msgs);
+ }
+ if (newMarker != null) {
+ msgs = ((InternalEObject)newMarker).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.PROTECTED_AREA_BLOCK__MARKER, null, msgs);
+ }
+ msgs = basicSetMarker(newMarker, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.PROTECTED_AREA_BLOCK__MARKER,
+ newMarker, newMarker));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return basicSetMarker(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 CstPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return getMarker();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.PROTECTED_AREA_BLOCK__MARKER:
+ setMarker((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.PROTECTED_AREA_BLOCK__MARKER:
+ setMarker((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.PROTECTED_AREA_BLOCK__MARKER:
+ return marker != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // ProtectedAreaBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/QueryImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/QueryImpl.java
new file mode 100644
index 0000000..6d6e132
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/QueryImpl.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Query;
+import org.eclipse.acceleo.parser.cst.Variable;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Query</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.QueryImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QueryImpl extends ModuleElementImpl implements Query {
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * 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;
+
+ /**
+ * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getExpression()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression expression;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected QueryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.QUERY;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ CstPackage.QUERY__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- 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, CstPackage.QUERY__TYPE, oldType, type));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getExpression() {
+ return expression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetExpression(ModelExpression newExpression, NotificationChain msgs) {
+ ModelExpression oldExpression = expression;
+ expression = newExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.QUERY__EXPRESSION, oldExpression, newExpression);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setExpression(ModelExpression newExpression) {
+ if (newExpression != expression) {
+ NotificationChain msgs = null;
+ if (expression != null) {
+ msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.QUERY__EXPRESSION, null, msgs);
+ }
+ if (newExpression != null) {
+ msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.QUERY__EXPRESSION, null, msgs);
+ }
+ msgs = basicSetExpression(newExpression, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.QUERY__EXPRESSION,
+ newExpression, newExpression));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.QUERY__PARAMETER:
+ return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+ case CstPackage.QUERY__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 CstPackage.QUERY__PARAMETER:
+ return getParameter();
+ case CstPackage.QUERY__TYPE:
+ return getType();
+ case CstPackage.QUERY__EXPRESSION:
+ return getExpression();
+ }
+ 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 CstPackage.QUERY__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case CstPackage.QUERY__TYPE:
+ setType((String)newValue);
+ return;
+ case CstPackage.QUERY__EXPRESSION:
+ setExpression((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.QUERY__PARAMETER:
+ getParameter().clear();
+ return;
+ case CstPackage.QUERY__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ case CstPackage.QUERY__EXPRESSION:
+ setExpression((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.QUERY__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case CstPackage.QUERY__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ case CstPackage.QUERY__EXPRESSION:
+ return expression != 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(" (type: "); //$NON-NLS-1$
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} // QueryImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateExpressionImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateExpressionImpl.java
new file mode 100644
index 0000000..85a39e4
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateExpressionImpl.java
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Template Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateExpressionImpl#getEndPosition <em>End Position</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateExpressionImpl extends EObjectImpl implements TemplateExpression {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TemplateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TEMPLATE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.TEMPLATE_EXPRESSION__START_POSITION, oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.TEMPLATE_EXPRESSION__END_POSITION, oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_EXPRESSION__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.TEMPLATE_EXPRESSION__END_POSITION:
+ return new Integer(getEndPosition());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_EXPRESSION__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.TEMPLATE_EXPRESSION__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_EXPRESSION__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.TEMPLATE_EXPRESSION__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_EXPRESSION__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.TEMPLATE_EXPRESSION__END_POSITION:
+ return endPosition != END_POSITION_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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TemplateExpressionImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateImpl.java
new file mode 100644
index 0000000..ab0acd0
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateImpl.java
@@ -0,0 +1,442 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.Template;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.acceleo.parser.cst.VisibilityKind;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Template</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl#getVisibility <em>Visibility</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl#getOverrides <em>Overrides</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl#getParameter <em>Parameter</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateImpl#getGuard <em>Guard</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateImpl extends BlockImpl implements Template {
+ /**
+ * 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 #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected static final VisibilityKind VISIBILITY_EDEFAULT = VisibilityKind.PRIVATE;
+
+ /**
+ * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getVisibility()
+ * @generated
+ * @ordered
+ */
+ protected VisibilityKind visibility = VISIBILITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOverrides() <em>Overrides</em>}' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<TemplateOverridesValue> overrides;
+
+ /**
+ * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<Variable> parameter;
+
+ /**
+ * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #getGuard()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression guard;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TEMPLATE;
+ }
+
+ /**
+ * <!-- 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, CstPackage.TEMPLATE__NAME, oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VisibilityKind getVisibility() {
+ return visibility;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setVisibility(VisibilityKind newVisibility) {
+ VisibilityKind oldVisibility = visibility;
+ visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.TEMPLATE__VISIBILITY,
+ oldVisibility, visibility));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<TemplateOverridesValue> getOverrides() {
+ if (overrides == null) {
+ overrides = new EObjectContainmentEList<TemplateOverridesValue>(TemplateOverridesValue.class,
+ this, CstPackage.TEMPLATE__OVERRIDES);
+ }
+ return overrides;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Variable> getParameter() {
+ if (parameter == null) {
+ parameter = new EObjectContainmentEList<Variable>(Variable.class, this,
+ CstPackage.TEMPLATE__PARAMETER);
+ }
+ return parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getGuard() {
+ return guard;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetGuard(ModelExpression newGuard, NotificationChain msgs) {
+ ModelExpression oldGuard = guard;
+ guard = newGuard;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.TEMPLATE__GUARD, oldGuard, newGuard);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setGuard(ModelExpression newGuard) {
+ if (newGuard != guard) {
+ NotificationChain msgs = null;
+ if (guard != null) {
+ msgs = ((InternalEObject)guard).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.TEMPLATE__GUARD, null, msgs);
+ }
+ if (newGuard != null) {
+ msgs = ((InternalEObject)newGuard).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.TEMPLATE__GUARD, null, msgs);
+ }
+ msgs = basicSetGuard(newGuard, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.TEMPLATE__GUARD, newGuard,
+ newGuard));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE__OVERRIDES:
+ return ((InternalEList<?>)getOverrides()).basicRemove(otherEnd, msgs);
+ case CstPackage.TEMPLATE__PARAMETER:
+ return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+ case CstPackage.TEMPLATE__GUARD:
+ return basicSetGuard(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 CstPackage.TEMPLATE__NAME:
+ return getName();
+ case CstPackage.TEMPLATE__VISIBILITY:
+ return getVisibility();
+ case CstPackage.TEMPLATE__OVERRIDES:
+ return getOverrides();
+ case CstPackage.TEMPLATE__PARAMETER:
+ return getParameter();
+ case CstPackage.TEMPLATE__GUARD:
+ return getGuard();
+ }
+ 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 CstPackage.TEMPLATE__NAME:
+ setName((String)newValue);
+ return;
+ case CstPackage.TEMPLATE__VISIBILITY:
+ setVisibility((VisibilityKind)newValue);
+ return;
+ case CstPackage.TEMPLATE__OVERRIDES:
+ getOverrides().clear();
+ getOverrides().addAll((Collection<? extends TemplateOverridesValue>)newValue);
+ return;
+ case CstPackage.TEMPLATE__PARAMETER:
+ getParameter().clear();
+ getParameter().addAll((Collection<? extends Variable>)newValue);
+ return;
+ case CstPackage.TEMPLATE__GUARD:
+ setGuard((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CstPackage.TEMPLATE__VISIBILITY:
+ setVisibility(VISIBILITY_EDEFAULT);
+ return;
+ case CstPackage.TEMPLATE__OVERRIDES:
+ getOverrides().clear();
+ return;
+ case CstPackage.TEMPLATE__PARAMETER:
+ getParameter().clear();
+ return;
+ case CstPackage.TEMPLATE__GUARD:
+ setGuard((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CstPackage.TEMPLATE__VISIBILITY:
+ return visibility != VISIBILITY_EDEFAULT;
+ case CstPackage.TEMPLATE__OVERRIDES:
+ return overrides != null && !overrides.isEmpty();
+ case CstPackage.TEMPLATE__PARAMETER:
+ return parameter != null && !parameter.isEmpty();
+ case CstPackage.TEMPLATE__GUARD:
+ return guard != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (derivedFeatureID) {
+ case CstPackage.TEMPLATE__NAME:
+ return CstPackage.MODULE_ELEMENT__NAME;
+ case CstPackage.TEMPLATE__VISIBILITY:
+ return CstPackage.MODULE_ELEMENT__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == ModuleElement.class) {
+ switch (baseFeatureID) {
+ case CstPackage.MODULE_ELEMENT__NAME:
+ return CstPackage.TEMPLATE__NAME;
+ case CstPackage.MODULE_ELEMENT__VISIBILITY:
+ return CstPackage.TEMPLATE__VISIBILITY;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- 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: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", visibility: "); //$NON-NLS-1$
+ result.append(visibility);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TemplateImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateOverridesValueImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateOverridesValueImpl.java
new file mode 100644
index 0000000..df696e8
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TemplateOverridesValueImpl.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Template Overrides Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TemplateOverridesValueImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateOverridesValueImpl extends EObjectImpl implements TemplateOverridesValue {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * 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 TemplateOverridesValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TEMPLATE_OVERRIDES_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.TEMPLATE_OVERRIDES_VALUE__START_POSITION, oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CstPackage.TEMPLATE_OVERRIDES_VALUE__END_POSITION, oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- 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, CstPackage.TEMPLATE_OVERRIDES_VALUE__NAME,
+ oldName, name));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__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 CstPackage.TEMPLATE_OVERRIDES_VALUE__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__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 CstPackage.TEMPLATE_OVERRIDES_VALUE__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE__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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TemplateOverridesValueImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TextExpressionImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TextExpressionImpl.java
new file mode 100644
index 0000000..3c9ad2f
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TextExpressionImpl.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.TextExpression;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Text Expression</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TextExpressionImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TextExpressionImpl extends TemplateExpressionImpl implements TextExpression {
+ /**
+ * 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 TextExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TEXT_EXPRESSION;
+ }
+
+ /**
+ * <!-- 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, CstPackage.TEXT_EXPRESSION__VALUE,
+ oldValue, value));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.TEXT_EXPRESSION__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 CstPackage.TEXT_EXPRESSION__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 CstPackage.TEXT_EXPRESSION__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TEXT_EXPRESSION__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: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TextExpressionImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TraceBlockImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TraceBlockImpl.java
new file mode 100644
index 0000000..7bda200
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TraceBlockImpl.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.TraceBlock;
+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;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Trace Block</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TraceBlockImpl#getModelElement <em>Model Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TraceBlockImpl extends BlockImpl implements TraceBlock {
+ /**
+ * The cached value of the '{@link #getModelElement() <em>Model Element</em>}' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getModelElement()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression modelElement;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TraceBlockImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TRACE_BLOCK;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getModelElement() {
+ return modelElement;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetModelElement(ModelExpression newModelElement, NotificationChain msgs) {
+ ModelExpression oldModelElement = modelElement;
+ modelElement = newModelElement;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.TRACE_BLOCK__MODEL_ELEMENT, oldModelElement, newModelElement);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setModelElement(ModelExpression newModelElement) {
+ if (newModelElement != modelElement) {
+ NotificationChain msgs = null;
+ if (modelElement != null) {
+ msgs = ((InternalEObject)modelElement).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.TRACE_BLOCK__MODEL_ELEMENT, null, msgs);
+ }
+ if (newModelElement != null) {
+ msgs = ((InternalEObject)newModelElement).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.TRACE_BLOCK__MODEL_ELEMENT, null, msgs);
+ }
+ msgs = basicSetModelElement(newModelElement, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.TRACE_BLOCK__MODEL_ELEMENT,
+ newModelElement, newModelElement));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return basicSetModelElement(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 CstPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return getModelElement();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ setModelElement((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ setModelElement((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TRACE_BLOCK__MODEL_ELEMENT:
+ return modelElement != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // TraceBlockImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TypedModelImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TypedModelImpl.java
new file mode 100644
index 0000000..4f3ae10
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/TypedModelImpl.java
@@ -0,0 +1,268 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import java.util.Collection;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Typed Model</b></em>'. <!--
+ * end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TypedModelImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TypedModelImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.TypedModelImpl#getTakesTypesFrom <em>Takes Types From</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypedModelImpl extends EObjectImpl implements TypedModel {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTakesTypesFrom() <em>Takes Types From</em>}' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getTakesTypesFrom()
+ * @generated
+ * @ordered
+ */
+ protected EList<EPackage> takesTypesFrom;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TypedModelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.TYPED_MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.TYPED_MODEL__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.TYPED_MODEL__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<EPackage> getTakesTypesFrom() {
+ if (takesTypesFrom == null) {
+ takesTypesFrom = new EObjectResolvingEList<EPackage>(EPackage.class, this,
+ CstPackage.TYPED_MODEL__TAKES_TYPES_FROM);
+ }
+ return takesTypesFrom;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CstPackage.TYPED_MODEL__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.TYPED_MODEL__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ return getTakesTypesFrom();
+ }
+ 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 CstPackage.TYPED_MODEL__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.TYPED_MODEL__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ getTakesTypesFrom().clear();
+ getTakesTypesFrom().addAll((Collection<? extends EPackage>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.TYPED_MODEL__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.TYPED_MODEL__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ getTakesTypesFrom().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.TYPED_MODEL__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.TYPED_MODEL__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.TYPED_MODEL__TAKES_TYPES_FROM:
+ return takesTypesFrom != null && !takesTypesFrom.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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TypedModelImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/VariableImpl.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/VariableImpl.java
new file mode 100644
index 0000000..12c8a3b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/impl/VariableImpl.java
@@ -0,0 +1,429 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.impl;
+
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Variable</b></em>'. <!-- end-user-doc
+ * -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl#getStartPosition <em>Start Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl#getEndPosition <em>End Position</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.acceleo.parser.cst.impl.VariableImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class VariableImpl extends EObjectImpl implements Variable {
+ /**
+ * The default value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getStartPosition() <em>Start Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartPosition()
+ * @generated
+ * @ordered
+ */
+ protected int startPosition = START_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_POSITION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getEndPosition() <em>End Position</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEndPosition()
+ * @generated
+ * @ordered
+ */
+ protected int endPosition = END_POSITION_EDEFAULT;
+
+ /**
+ * 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;
+
+ /**
+ * The cached value of the '{@link #getInitExpression() <em>Init Expression</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getInitExpression()
+ * @generated
+ * @ordered
+ */
+ protected ModelExpression initExpression;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected VariableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CstPackage.Literals.VARIABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStartPosition(int newStartPosition) {
+ int oldStartPosition = startPosition;
+ startPosition = newStartPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.VARIABLE__START_POSITION,
+ oldStartPosition, startPosition));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getEndPosition() {
+ return endPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEndPosition(int newEndPosition) {
+ int oldEndPosition = endPosition;
+ endPosition = newEndPosition;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.VARIABLE__END_POSITION,
+ oldEndPosition, endPosition));
+ }
+ }
+
+ /**
+ * <!-- 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, CstPackage.VARIABLE__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, CstPackage.VARIABLE__TYPE, oldType, type));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModelExpression getInitExpression() {
+ return initExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetInitExpression(ModelExpression newInitExpression, NotificationChain msgs) {
+ ModelExpression oldInitExpression = initExpression;
+ initExpression = newInitExpression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ CstPackage.VARIABLE__INIT_EXPRESSION, oldInitExpression, newInitExpression);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setInitExpression(ModelExpression newInitExpression) {
+ if (newInitExpression != initExpression) {
+ NotificationChain msgs = null;
+ if (initExpression != null) {
+ msgs = ((InternalEObject)initExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.VARIABLE__INIT_EXPRESSION, null, msgs);
+ }
+ if (newInitExpression != null) {
+ msgs = ((InternalEObject)newInitExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
+ - CstPackage.VARIABLE__INIT_EXPRESSION, null, msgs);
+ }
+ msgs = basicSetInitExpression(newInitExpression, msgs);
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, CstPackage.VARIABLE__INIT_EXPRESSION,
+ newInitExpression, newInitExpression));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CstPackage.VARIABLE__INIT_EXPRESSION:
+ return basicSetInitExpression(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 CstPackage.VARIABLE__START_POSITION:
+ return new Integer(getStartPosition());
+ case CstPackage.VARIABLE__END_POSITION:
+ return new Integer(getEndPosition());
+ case CstPackage.VARIABLE__NAME:
+ return getName();
+ case CstPackage.VARIABLE__TYPE:
+ return getType();
+ case CstPackage.VARIABLE__INIT_EXPRESSION:
+ return getInitExpression();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CstPackage.VARIABLE__START_POSITION:
+ setStartPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.VARIABLE__END_POSITION:
+ setEndPosition(((Integer)newValue).intValue());
+ return;
+ case CstPackage.VARIABLE__NAME:
+ setName((String)newValue);
+ return;
+ case CstPackage.VARIABLE__TYPE:
+ setType((String)newValue);
+ return;
+ case CstPackage.VARIABLE__INIT_EXPRESSION:
+ setInitExpression((ModelExpression)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CstPackage.VARIABLE__START_POSITION:
+ setStartPosition(START_POSITION_EDEFAULT);
+ return;
+ case CstPackage.VARIABLE__END_POSITION:
+ setEndPosition(END_POSITION_EDEFAULT);
+ return;
+ case CstPackage.VARIABLE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CstPackage.VARIABLE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ case CstPackage.VARIABLE__INIT_EXPRESSION:
+ setInitExpression((ModelExpression)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CstPackage.VARIABLE__START_POSITION:
+ return startPosition != START_POSITION_EDEFAULT;
+ case CstPackage.VARIABLE__END_POSITION:
+ return endPosition != END_POSITION_EDEFAULT;
+ case CstPackage.VARIABLE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CstPackage.VARIABLE__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ case CstPackage.VARIABLE__INIT_EXPRESSION:
+ return initExpression != 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(" (startPosition: "); //$NON-NLS-1$
+ result.append(startPosition);
+ result.append(", endPosition: "); //$NON-NLS-1$
+ result.append(endPosition);
+ result.append(", name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", type: "); //$NON-NLS-1$
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+} // VariableImpl
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstAdapterFactory.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstAdapterFactory.java
new file mode 100644
index 0000000..c98da8b
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstAdapterFactory.java
@@ -0,0 +1,608 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.util;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CSTNode;
+import org.eclipse.acceleo.parser.cst.Comment;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.FileBlock;
+import org.eclipse.acceleo.parser.cst.ForBlock;
+import org.eclipse.acceleo.parser.cst.IfBlock;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.LetBlock;
+import org.eclipse.acceleo.parser.cst.Macro;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Module;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.acceleo.parser.cst.ProtectedAreaBlock;
+import org.eclipse.acceleo.parser.cst.Query;
+import org.eclipse.acceleo.parser.cst.Template;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+import org.eclipse.acceleo.parser.cst.TextExpression;
+import org.eclipse.acceleo.parser.cst.TraceBlock;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+import org.eclipse.acceleo.parser.cst.Variable;
+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.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- 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.acceleo.parser.cst.CstPackage
+ * @generated
+ */
+public class CstAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static CstPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CstAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = CstPackage.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 CstSwitch<Adapter> modelSwitch = new CstSwitch<Adapter>() {
+ @Override
+ public Adapter caseCSTNode(CSTNode object) {
+ return createCSTNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseModule(Module object) {
+ return createModuleAdapter();
+ }
+
+ @Override
+ public Adapter caseModuleExtendsValue(ModuleExtendsValue object) {
+ return createModuleExtendsValueAdapter();
+ }
+
+ @Override
+ public Adapter caseModuleImportsValue(ModuleImportsValue object) {
+ return createModuleImportsValueAdapter();
+ }
+
+ @Override
+ public Adapter caseTypedModel(TypedModel object) {
+ return createTypedModelAdapter();
+ }
+
+ @Override
+ public Adapter caseModuleElement(ModuleElement object) {
+ return createModuleElementAdapter();
+ }
+
+ @Override
+ public Adapter caseComment(Comment object) {
+ return createCommentAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplate(Template object) {
+ return createTemplateAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplateOverridesValue(TemplateOverridesValue object) {
+ return createTemplateOverridesValueAdapter();
+ }
+
+ @Override
+ public Adapter caseVariable(Variable object) {
+ return createVariableAdapter();
+ }
+
+ @Override
+ public Adapter caseTemplateExpression(TemplateExpression object) {
+ return createTemplateExpressionAdapter();
+ }
+
+ @Override
+ public Adapter caseModelExpression(ModelExpression object) {
+ return createModelExpressionAdapter();
+ }
+
+ @Override
+ public Adapter caseTextExpression(TextExpression object) {
+ return createTextExpressionAdapter();
+ }
+
+ @Override
+ public Adapter caseBlock(Block object) {
+ return createBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseInitSection(InitSection object) {
+ return createInitSectionAdapter();
+ }
+
+ @Override
+ public Adapter caseProtectedAreaBlock(ProtectedAreaBlock object) {
+ return createProtectedAreaBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseForBlock(ForBlock object) {
+ return createForBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseIfBlock(IfBlock object) {
+ return createIfBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseLetBlock(LetBlock object) {
+ return createLetBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseFileBlock(FileBlock object) {
+ return createFileBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseTraceBlock(TraceBlock object) {
+ return createTraceBlockAdapter();
+ }
+
+ @Override
+ public Adapter caseMacro(Macro object) {
+ return createMacroAdapter();
+ }
+
+ @Override
+ public Adapter caseQuery(Query object) {
+ return createQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseEModelElement(EModelElement object) {
+ return createEModelElementAdapter();
+ }
+
+ @Override
+ public Adapter caseENamedElement(ENamedElement object) {
+ return createENamedElementAdapter();
+ }
+
+ @Override
+ public Adapter caseEPackage(EPackage object) {
+ return createEPackageAdapter();
+ }
+
+ @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.acceleo.parser.cst.CSTNode <em>CST Node</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.acceleo.parser.cst.CSTNode
+ * @generated
+ */
+ public Adapter createCSTNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Module <em>Module</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.acceleo.parser.cst.Module
+ * @generated
+ */
+ public Adapter createModuleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ModuleExtendsValue
+ * <em>Module Extends Value</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.acceleo.parser.cst.ModuleExtendsValue
+ * @generated
+ */
+ public Adapter createModuleExtendsValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ModuleImportsValue
+ * <em>Module Imports Value</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.acceleo.parser.cst.ModuleImportsValue
+ * @generated
+ */
+ public Adapter createModuleImportsValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.TypedModel
+ * <em>Typed Model</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.acceleo.parser.cst.TypedModel
+ * @generated
+ */
+ public Adapter createTypedModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ModuleElement
+ * <em>Module Element</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.acceleo.parser.cst.ModuleElement
+ * @generated
+ */
+ public Adapter createModuleElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Comment <em>Comment</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.acceleo.parser.cst.Comment
+ * @generated
+ */
+ public Adapter createCommentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Template <em>Template</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.acceleo.parser.cst.Template
+ * @generated
+ */
+ public Adapter createTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.TemplateOverridesValue
+ * <em>Template Overrides Value</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.acceleo.parser.cst.TemplateOverridesValue
+ * @generated
+ */
+ public Adapter createTemplateOverridesValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Variable <em>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.acceleo.parser.cst.Variable
+ * @generated
+ */
+ public Adapter createVariableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.TemplateExpression
+ * <em>Template 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.acceleo.parser.cst.TemplateExpression
+ * @generated
+ */
+ public Adapter createTemplateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ModelExpression
+ * <em>Model 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.acceleo.parser.cst.ModelExpression
+ * @generated
+ */
+ public Adapter createModelExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.TextExpression
+ * <em>Text 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.acceleo.parser.cst.TextExpression
+ * @generated
+ */
+ public Adapter createTextExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.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.acceleo.parser.cst.Block
+ * @generated
+ */
+ public Adapter createBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.InitSection
+ * <em>Init Section</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.acceleo.parser.cst.InitSection
+ * @generated
+ */
+ public Adapter createInitSectionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ProtectedAreaBlock
+ * <em>Protected Area 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.acceleo.parser.cst.ProtectedAreaBlock
+ * @generated
+ */
+ public Adapter createProtectedAreaBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.ForBlock <em>For 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.acceleo.parser.cst.ForBlock
+ * @generated
+ */
+ public Adapter createForBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.IfBlock <em>If 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.acceleo.parser.cst.IfBlock
+ * @generated
+ */
+ public Adapter createIfBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.LetBlock <em>Let 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.acceleo.parser.cst.LetBlock
+ * @generated
+ */
+ public Adapter createLetBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.FileBlock <em>File 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.acceleo.parser.cst.FileBlock
+ * @generated
+ */
+ public Adapter createFileBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.TraceBlock
+ * <em>Trace 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.acceleo.parser.cst.TraceBlock
+ * @generated
+ */
+ public Adapter createTraceBlockAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Macro <em>Macro</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.acceleo.parser.cst.Macro
+ * @generated
+ */
+ public Adapter createMacroAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.acceleo.parser.cst.Query <em>Query</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.acceleo.parser.cst.Query
+ * @generated
+ */
+ public Adapter createQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.EModelElement
+ * <em>EModel Element</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.emf.ecore.EModelElement
+ * @generated
+ */
+ public Adapter createEModelElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.ENamedElement
+ * <em>ENamed Element</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.emf.ecore.ENamedElement
+ * @generated
+ */
+ public Adapter createENamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecore.EPackage <em>EPackage</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.emf.ecore.EPackage
+ * @generated
+ */
+ public Adapter createEPackageAdapter() {
+ 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;
+ }
+
+} // CstAdapterFactory
diff --git a/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstSwitch.java b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstSwitch.java
new file mode 100644
index 0000000..aae0506
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src-gen/org/eclipse/acceleo/parser/cst/util/CstSwitch.java
@@ -0,0 +1,850 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.parser.cst.util;
+
+import java.util.List;
+
+import org.eclipse.acceleo.parser.cst.Block;
+import org.eclipse.acceleo.parser.cst.CSTNode;
+import org.eclipse.acceleo.parser.cst.Comment;
+import org.eclipse.acceleo.parser.cst.CstPackage;
+import org.eclipse.acceleo.parser.cst.FileBlock;
+import org.eclipse.acceleo.parser.cst.ForBlock;
+import org.eclipse.acceleo.parser.cst.IfBlock;
+import org.eclipse.acceleo.parser.cst.InitSection;
+import org.eclipse.acceleo.parser.cst.LetBlock;
+import org.eclipse.acceleo.parser.cst.Macro;
+import org.eclipse.acceleo.parser.cst.ModelExpression;
+import org.eclipse.acceleo.parser.cst.Module;
+import org.eclipse.acceleo.parser.cst.ModuleElement;
+import org.eclipse.acceleo.parser.cst.ModuleExtendsValue;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.acceleo.parser.cst.ProtectedAreaBlock;
+import org.eclipse.acceleo.parser.cst.Query;
+import org.eclipse.acceleo.parser.cst.Template;
+import org.eclipse.acceleo.parser.cst.TemplateExpression;
+import org.eclipse.acceleo.parser.cst.TemplateOverridesValue;
+import org.eclipse.acceleo.parser.cst.TextExpression;
+import org.eclipse.acceleo.parser.cst.TraceBlock;
+import org.eclipse.acceleo.parser.cst.TypedModel;
+import org.eclipse.acceleo.parser.cst.Variable;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- 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.acceleo.parser.cst.CstPackage
+ * @generated
+ */
+public class CstSwitch<T> {
+ /**
+ * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static CstPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CstSwitch() {
+ if (modelPackage == null) {
+ modelPackage = CstPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * 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
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * 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
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ } else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * 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
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case CstPackage.CST_NODE: {
+ CSTNode cstNode = (CSTNode)theEObject;
+ T result = caseCSTNode(cstNode);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MODULE: {
+ Module module = (Module)theEObject;
+ T result = caseModule(module);
+ if (result == null) {
+ result = caseEPackage(module);
+ }
+ if (result == null) {
+ result = caseCSTNode(module);
+ }
+ if (result == null) {
+ result = caseENamedElement(module);
+ }
+ if (result == null) {
+ result = caseEModelElement(module);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MODULE_EXTENDS_VALUE: {
+ ModuleExtendsValue moduleExtendsValue = (ModuleExtendsValue)theEObject;
+ T result = caseModuleExtendsValue(moduleExtendsValue);
+ if (result == null) {
+ result = caseCSTNode(moduleExtendsValue);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MODULE_IMPORTS_VALUE: {
+ ModuleImportsValue moduleImportsValue = (ModuleImportsValue)theEObject;
+ T result = caseModuleImportsValue(moduleImportsValue);
+ if (result == null) {
+ result = caseCSTNode(moduleImportsValue);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TYPED_MODEL: {
+ TypedModel typedModel = (TypedModel)theEObject;
+ T result = caseTypedModel(typedModel);
+ if (result == null) {
+ result = caseCSTNode(typedModel);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MODULE_ELEMENT: {
+ ModuleElement moduleElement = (ModuleElement)theEObject;
+ T result = caseModuleElement(moduleElement);
+ if (result == null) {
+ result = caseCSTNode(moduleElement);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.COMMENT: {
+ Comment comment = (Comment)theEObject;
+ T result = caseComment(comment);
+ if (result == null) {
+ result = caseModuleElement(comment);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(comment);
+ }
+ if (result == null) {
+ result = caseCSTNode(comment);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TEMPLATE: {
+ Template template = (Template)theEObject;
+ T result = caseTemplate(template);
+ if (result == null) {
+ result = caseBlock(template);
+ }
+ if (result == null) {
+ result = caseModuleElement(template);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(template);
+ }
+ if (result == null) {
+ result = caseCSTNode(template);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TEMPLATE_OVERRIDES_VALUE: {
+ TemplateOverridesValue templateOverridesValue = (TemplateOverridesValue)theEObject;
+ T result = caseTemplateOverridesValue(templateOverridesValue);
+ if (result == null) {
+ result = caseCSTNode(templateOverridesValue);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.VARIABLE: {
+ Variable variable = (Variable)theEObject;
+ T result = caseVariable(variable);
+ if (result == null) {
+ result = caseCSTNode(variable);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TEMPLATE_EXPRESSION: {
+ TemplateExpression templateExpression = (TemplateExpression)theEObject;
+ T result = caseTemplateExpression(templateExpression);
+ if (result == null) {
+ result = caseCSTNode(templateExpression);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MODEL_EXPRESSION: {
+ ModelExpression modelExpression = (ModelExpression)theEObject;
+ T result = caseModelExpression(modelExpression);
+ if (result == null) {
+ result = caseTemplateExpression(modelExpression);
+ }
+ if (result == null) {
+ result = caseCSTNode(modelExpression);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TEXT_EXPRESSION: {
+ TextExpression textExpression = (TextExpression)theEObject;
+ T result = caseTextExpression(textExpression);
+ if (result == null) {
+ result = caseTemplateExpression(textExpression);
+ }
+ if (result == null) {
+ result = caseCSTNode(textExpression);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.BLOCK: {
+ Block block = (Block)theEObject;
+ T result = caseBlock(block);
+ if (result == null) {
+ result = caseTemplateExpression(block);
+ }
+ if (result == null) {
+ result = caseCSTNode(block);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.INIT_SECTION: {
+ InitSection initSection = (InitSection)theEObject;
+ T result = caseInitSection(initSection);
+ if (result == null) {
+ result = caseCSTNode(initSection);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.PROTECTED_AREA_BLOCK: {
+ ProtectedAreaBlock protectedAreaBlock = (ProtectedAreaBlock)theEObject;
+ T result = caseProtectedAreaBlock(protectedAreaBlock);
+ if (result == null) {
+ result = caseBlock(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(protectedAreaBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.FOR_BLOCK: {
+ ForBlock forBlock = (ForBlock)theEObject;
+ T result = caseForBlock(forBlock);
+ if (result == null) {
+ result = caseBlock(forBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(forBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(forBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.IF_BLOCK: {
+ IfBlock ifBlock = (IfBlock)theEObject;
+ T result = caseIfBlock(ifBlock);
+ if (result == null) {
+ result = caseBlock(ifBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(ifBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(ifBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.LET_BLOCK: {
+ LetBlock letBlock = (LetBlock)theEObject;
+ T result = caseLetBlock(letBlock);
+ if (result == null) {
+ result = caseBlock(letBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(letBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(letBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.FILE_BLOCK: {
+ FileBlock fileBlock = (FileBlock)theEObject;
+ T result = caseFileBlock(fileBlock);
+ if (result == null) {
+ result = caseBlock(fileBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(fileBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(fileBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.TRACE_BLOCK: {
+ TraceBlock traceBlock = (TraceBlock)theEObject;
+ T result = caseTraceBlock(traceBlock);
+ if (result == null) {
+ result = caseBlock(traceBlock);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(traceBlock);
+ }
+ if (result == null) {
+ result = caseCSTNode(traceBlock);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.MACRO: {
+ Macro macro = (Macro)theEObject;
+ T result = caseMacro(macro);
+ if (result == null) {
+ result = caseBlock(macro);
+ }
+ if (result == null) {
+ result = caseModuleElement(macro);
+ }
+ if (result == null) {
+ result = caseTemplateExpression(macro);
+ }
+ if (result == null) {
+ result = caseCSTNode(macro);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case CstPackage.QUERY: {
+ Query query = (Query)theEObject;
+ T result = caseQuery(query);
+ if (result == null) {
+ result = caseModuleElement(query);
+ }
+ if (result == null) {
+ result = caseCSTNode(query);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>CST Node</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>CST Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCSTNode(CSTNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Module</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>Module</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModule(Module object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Module Extends Value</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>Module Extends Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModuleExtendsValue(ModuleExtendsValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Module Imports Value</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>Module Imports Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModuleImportsValue(ModuleImportsValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Typed Model</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>Typed Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypedModel(TypedModel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Module Element</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>Module Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModuleElement(ModuleElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comment</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>Comment</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComment(Comment object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template</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>Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplate(Template object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template Overrides Value</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>Template Overrides Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplateOverridesValue(TemplateOverridesValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>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>Variable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVariable(Variable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template 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>Template Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplateExpression(TemplateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model 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>Model Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseModelExpression(ModelExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Text 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>Text Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTextExpression(TextExpression 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>Init Section</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>Init Section</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInitSection(InitSection object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Protected Area 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>Protected Area Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProtectedAreaBlock(ProtectedAreaBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>For 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>For Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseForBlock(ForBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>If 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>If Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIfBlock(IfBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Let 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>Let Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLetBlock(LetBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>File 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>File Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFileBlock(FileBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Trace 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>Trace Block</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTraceBlock(TraceBlock object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Macro</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>Macro</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMacro(Macro object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Query</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>Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseQuery(Query object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EModel Element</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>EModel Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEModelElement(EModelElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>ENamed Element</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>ENamed Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseENamedElement(ENamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EPackage</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>EPackage</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEPackage(EPackage 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
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} // CstSwitch
diff --git a/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/AcceleoParserMessages.java b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/AcceleoParserMessages.java
new file mode 100644
index 0000000..e513307
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/AcceleoParserMessages.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007, 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.internal.parser;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class to access externalized Strings throughout the Acceleo user interface.
+ *
+ * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
+ */
+public final class AcceleoParserMessages {
+ /** Qualified path to the properties file in which to seek the keys. */
+ private static final String BUNDLE_NAME = "org.eclipse.acceleo.internal.parser.acceleoparsermessages"; //$NON-NLS-1$
+
+ /** Contains the locale specific {@link String}s needed by this plug-in. */
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+
+ /**
+ * Utility classes don't need to (and shouldn't) be instantiated.
+ */
+ private AcceleoParserMessages() {
+ // prevents instantiation
+ }
+
+ /**
+ * This will return an unformatted String from the resource bundle.
+ *
+ * @param key
+ * Key of the String we seek.
+ * @return An unformatted String from the bundle.
+ */
+ private static String internalGetString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+
+ /**
+ * Returns the specified {@link String} from the resource bundle.
+ *
+ * @param key
+ * Key of the String we seek.
+ * @return The String from the resource bundle associated with <code>key</code>.
+ * <code>'!' + key + '!'</code> will be returned in case we didn't find it in the bundle.
+ */
+ public static String getString(String key) {
+ // Pass through MessageFormat so that we're consistent in the handling of special chars such as the
+ // apostrophe
+ return MessageFormat.format(internalGetString(key), new Object[] {});
+ }
+
+ /**
+ * Returns a String from the resource bundle bound with the given arguments.
+ *
+ * @param key
+ * Key of the String we seek.
+ * @param arguments
+ * Arguments for the String formatting.
+ * @return formatted {@link String}.
+ * @see MessageFormat#format(String, Object[])
+ */
+ public static String getString(String key, Object... arguments) {
+ if (arguments == null) {
+ return getString(key);
+ }
+ return MessageFormat.format(internalGetString(key), arguments);
+ }
+}
diff --git a/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/IAcceleoParserProblemsConstants.java b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/IAcceleoParserProblemsConstants.java
new file mode 100644
index 0000000..56a77f3
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/IAcceleoParserProblemsConstants.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.internal.parser;
+
+/**
+ * The syntax problems of the parsing.
+ *
+ * @author <a href="mailto:jonathan.musset@obeo.fr">Jonathan Musset</a>
+ */
+public interface IAcceleoParserProblemsConstants {
+
+ /**
+ * Syntax problem message : The parenthesis are required.
+ */
+ String SYNTAX_PARENTHESIS_ARE_REQUIRED = AcceleoParserMessages
+ .getString("IAcceleoParserProblemsConstants.MissingParenthesis"); //$NON-NLS-1$
+
+ /**
+ * Syntax problem message : The parenthesis aren't terminated.
+ */
+ String SYNTAX_PARENTHESIS_NOT_TERMINATED = AcceleoParserMessages
+ .getString("IAcceleoParserProblemsConstants.MissingCloseParenthesis"); //$NON-NLS-1$
+
+ /**
+ * Syntax problem message : Text not valid.
+ */
+ String SYNTAX_TEXT_NOT_VALID = AcceleoParserMessages.getString("IAcceleoParserProblemsConstants.InvalidText"); //$NON-NLS-1$
+
+ /**
+ * Syntax problem message : Type not valid.
+ */
+ String SYNTAX_TYPE_NOT_VALID = AcceleoParserMessages.getString("IAcceleoParserProblemsConstants.InvalidType") + ':'; //$NON-NLS-1$
+
+ /**
+ * Syntax problem message : Name not valid.
+ */
+ String SYNTAX_NAME_NOT_VALID = AcceleoParserMessages
+ .getString("IAcceleoParserProblemsConstants.InvalidIdentifier") + ':'; //$NON-NLS-1$
+
+}
diff --git a/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/acceleoparsermessages.properties b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/acceleoparsermessages.properties
new file mode 100644
index 0000000..c5830a4
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/acceleoparsermessages.properties
@@ -0,0 +1,49 @@
+################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# 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:
+# Obeo - initial API and implementation
+################################################################################
+## note : apostrophes need to be doubled in these messages or they'll be ignored
+# org.eclipse.acceleo.parser
+IAcceleoParserProblemsConstants.MissingParenthesis = Parenthesis required on this expression
+IAcceleoParserProblemsConstants.MissingCloseParenthesis = Closing parenthesis '')'' missing in expression
+IAcceleoParserProblemsConstants.InvalidText = Invalid text
+IAcceleoParserProblemsConstants.InvalidType = Invalid Type
+IAcceleoParserProblemsConstants.InvalidIdentifier = Invalid identifier name : {0}
+
+AcceleoParser.Error.FileSaving = An error occured while saving {0} : {1}
+AcceleoParser.Error.InvalidAST = Invalid AST for {0}
+
+# org.eclipse.acceleo.parser.ast
+CST2ASTConverterWithResolver.MissingModule = Module {0} not found.
+CST2ASTConverterWithResolver.MissingTemplate = Template {0} not found.
+CST2ASTConverterWithResolver.UnavailableClause = The ''{0}'' clause is only available on template invocation.
+CST2ASTConverterWithResolver.InvalidClause = The ''{0}'' requires an ''{1}'' definition on the template.
+
+# org.eclipse.acceleo.parser.cst
+## keys uses by both parser and block parser
+Parser.MissingCharacter = ''{0}'' character is missing
+
+CSTParser.InvalidStatementHeader = {0} header isn''t closed
+CSTParser.InvalidStatement = {0} body isn''t terminated
+CSTParser.EmptyBuffer = Missing [module] definition
+CSTParser.MissingModule = The module is required
+CSTParser.MissingModuleEnd = The module isn''t closed
+CSTParser.MissingMetamodel = The metamodel is required
+CSTParser.InvalidModuleDefinition = Module {0} must be defined in its own file
+CSTParser.MetamodelNotFound = The metamodel couldn''t be resolved
+CSTParser.InvalidModel = Model content is invalid
+CSTParser.InvalidModuleElement = Module element is not valid
+CSTParser.InvalidQuery = A query shouldn''t have a body section defined
+CSTParser.MissingClosingBracket = Closing bracket missing for init section
+CSTParser.InvalidVariable = The variable {0} isn''t valid
+
+CSTParserBlock.InvalidBlockHeader = ''{0}'' block header isn''t closed
+CSTParserBlock.InvalidBlock = ''{0}'' block body isn''t terminated
+CSTParserBlock.MissingFileMode = The open mode is missing : ''true'' (append) or ''false'' (overwrite)
+CSTParserBlock.InvalidInvocation = The invocation isn''t terminated \ No newline at end of file
diff --git a/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ASTFactory.java b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ASTFactory.java
new file mode 100644
index 0000000..d6141dc
--- /dev/null
+++ b/plugins/org.eclipse.acceleo.parser/src/org/eclipse/acceleo/internal/parser/ast/ASTFactory.java
@@ -0,0 +1,553 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.internal.parser.ast;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.acceleo.internal.parser.ast.ocl.OCLParser;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.ocl.ParserException;
+
+/**
+ * The class used to create and store the objects of the AST model. You have to call 'initOCL' to initialize
+ * the OCL environment.
+ *
+ * @author <a href="mailto:jonathan.musset@obeo.fr">Jonathan Musset</a>
+ */
+public class ASTFactory {
+
+ /**
+ * To parse an OCL Expression with the OCL plug-in.
+ */
+ protected OCLParser pOCL;
+
+ /**
+ * A log Handler to save AST logging messages.
+ */
+ private IASTLogHandler logHandler;
+
+ /**
+ * To get an AST Module corresponding to a CST Module.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Module, org.eclipse.acceleo.model.mtl.Module> ioModule = new HashMap<org.eclipse.acceleo.parser.cst.Module, org.eclipse.acceleo.model.mtl.Module>();
+
+ /**
+ * To get an AST TypedModel corresponding to a CST TypedModel.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.TypedModel, org.eclipse.acceleo.model.mtl.TypedModel> ioTypedModel = new HashMap<org.eclipse.acceleo.parser.cst.TypedModel, org.eclipse.acceleo.model.mtl.TypedModel>();
+
+ /**
+ * To get an AST Template corresponding to a CST Template.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Template, org.eclipse.acceleo.model.mtl.Template> ioTemplate = new HashMap<org.eclipse.acceleo.parser.cst.Template, org.eclipse.acceleo.model.mtl.Template>();
+
+ /**
+ * To get an AST Variable corresponding to a CST Variable.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Variable, org.eclipse.ocl.ecore.Variable> ioVariable = new HashMap<org.eclipse.acceleo.parser.cst.Variable, org.eclipse.ocl.ecore.Variable>();
+
+ /**
+ * To get an AST TemplateExpression corresponding to a CST TemplateExpression. It is used as a temporary
+ * transformation. The final output model hasn't any 'org.eclipse.acceleo.model.mtl.TemplateExpression'.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.TemplateExpression, org.eclipse.acceleo.model.mtl.TemplateExpression> ioTemplateExpression = new HashMap<org.eclipse.acceleo.parser.cst.TemplateExpression, org.eclipse.acceleo.model.mtl.TemplateExpression>();
+
+ /**
+ * To get an AST OCLExpression corresponding to a CST ModelExpression.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.ModelExpression, org.eclipse.ocl.ecore.OCLExpression> ioModelExpression = new HashMap<org.eclipse.acceleo.parser.cst.ModelExpression, org.eclipse.ocl.ecore.OCLExpression>();
+
+ /**
+ * To get an AST StringLiteralExp corresponding to a CST TextExpression.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.TextExpression, org.eclipse.ocl.ecore.StringLiteralExp> ioTextExpression = new HashMap<org.eclipse.acceleo.parser.cst.TextExpression, org.eclipse.ocl.ecore.StringLiteralExp>();
+
+ /**
+ * To get an AST Block corresponding to a CST Block.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Block, org.eclipse.acceleo.model.mtl.Block> ioBlock = new HashMap<org.eclipse.acceleo.parser.cst.Block, org.eclipse.acceleo.model.mtl.Block>();
+
+ /**
+ * To get an AST InitSection corresponding to a CST InitSection.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.InitSection, org.eclipse.acceleo.model.mtl.InitSection> ioInitSection = new HashMap<org.eclipse.acceleo.parser.cst.InitSection, org.eclipse.acceleo.model.mtl.InitSection>();
+
+ /**
+ * To get an AST ProtectedAreaBlock corresponding to a CST ProtectedAreaBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.ProtectedAreaBlock, org.eclipse.acceleo.model.mtl.ProtectedAreaBlock> ioProtectedAreaBlock = new HashMap<org.eclipse.acceleo.parser.cst.ProtectedAreaBlock, org.eclipse.acceleo.model.mtl.ProtectedAreaBlock>();
+
+ /**
+ * To get an AST ForBlock corresponding to a CST ForBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.ForBlock, org.eclipse.acceleo.model.mtl.ForBlock> ioForBlock = new HashMap<org.eclipse.acceleo.parser.cst.ForBlock, org.eclipse.acceleo.model.mtl.ForBlock>();
+
+ /**
+ * To get an AST IfBlock corresponding to a CST IfBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.IfBlock, org.eclipse.acceleo.model.mtl.IfBlock> ioIfBlock = new HashMap<org.eclipse.acceleo.parser.cst.IfBlock, org.eclipse.acceleo.model.mtl.IfBlock>();
+
+ /**
+ * To get an AST LetBlock corresponding to a CST LetBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.LetBlock, org.eclipse.acceleo.model.mtl.LetBlock> ioLetBlock = new HashMap<org.eclipse.acceleo.parser.cst.LetBlock, org.eclipse.acceleo.model.mtl.LetBlock>();
+
+ /**
+ * To get an AST FileBlock corresponding to a CST FileBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.FileBlock, org.eclipse.acceleo.model.mtl.FileBlock> ioFileBlock = new HashMap<org.eclipse.acceleo.parser.cst.FileBlock, org.eclipse.acceleo.model.mtl.FileBlock>();
+
+ /**
+ * To get an AST TraceBlock corresponding to a CST TraceBlock.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.TraceBlock, org.eclipse.acceleo.model.mtl.TraceBlock> ioTraceBlock = new HashMap<org.eclipse.acceleo.parser.cst.TraceBlock, org.eclipse.acceleo.model.mtl.TraceBlock>();
+
+ /**
+ * To get an AST Macro corresponding to a CST Macro.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Macro, org.eclipse.acceleo.model.mtl.Macro> ioMacro = new HashMap<org.eclipse.acceleo.parser.cst.Macro, org.eclipse.acceleo.model.mtl.Macro>();
+
+ /**
+ * To get an AST Query corresponding to a CST Query.
+ */
+ private Map<org.eclipse.acceleo.parser.cst.Query, org.eclipse.acceleo.model.mtl.Query> ioQuery = new HashMap<org.eclipse.acceleo.parser.cst.Query, org.eclipse.acceleo.model.mtl.Query>();
+
+ /**
+ * Constructor.
+ */
+ public ASTFactory() {
+ }
+
+ /**
+ * Initializes the OCL environment.
+ *
+ * @param resourceOCL
+ * is the resource used to keep the OCL environment
+ */
+ public void initOCL(Resource resourceOCL) {
+ if (pOCL == null) {
+ pOCL = new OCLParser(resourceOCL);
+ } else {
+ pOCL.init(resourceOCL);
+ }
+ }
+
+ /**
+ * Gets the OCL parser (from the OCL plug-in).
+ *
+ * @return the OCL parser
+ */
+ public OCLParser getOCL() {
+ return pOCL;
+ }
+
+ /**
+ * Sets the log Handler to save AST logging messages.
+ *
+ * @param logHandler
+ * is the new log handler
+ */
+ public void setLogHandler(IASTLogHandler logHandler) {
+ this.logHandler = logHandler;
+ }
+
+ /**
+ * Gets or creates an AST Module corresponding to a CST Module.
+ *
+ * @param iModule
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.Module'
+ * @return the output object of type 'org.eclipse.acceleo.model.mtl.Module'
+ */
+ protected org.eclipse.acceleo.model.mtl.Module getOrCreateModule(org.eclipse.acceleo.parser.cst.Module iModule) {
+ if (iModule != null) {
+ org.eclipse.acceleo.model.mtl.Module oModule = ioModule.get(iModule);
+ if (oModule == null) {
+ oModule = org.eclipse.acceleo.model.mtl.MtlFactory.eINSTANCE.createModule();
+ ioModule.put(iModule, oModule);
+ }
+ return oModule;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets or creates an AST TypedModel corresponding to a CST TypedModel.
+ *
+ * @param iTypedModel
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.TypedModel'
+ * @return the output object of type 'org.eclipse.acceleo.model.mtl.TypedModel'
+ */
+ protected org.eclipse.acceleo.model.mtl.TypedModel getOrCreateTypedModel(org.eclipse.acceleo.parser.cst.TypedModel iTypedModel) {
+ if (iTypedModel != null) {
+ org.eclipse.acceleo.model.mtl.TypedModel oTypedModel = ioTypedModel.get(iTypedModel);
+ if (oTypedModel == null) {
+ oTypedModel = org.eclipse.acceleo.model.mtl.MtlFactory.eINSTANCE.createTypedModel();
+ ioTypedModel.put(iTypedModel, oTypedModel);
+ }
+ return oTypedModel;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets or creates an AST Template corresponding to a CST Template.
+ *
+ * @param iTemplate
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.Template'
+ * @return the output object of type 'org.eclipse.acceleo.model.mtl.Template'
+ */
+ protected org.eclipse.acceleo.model.mtl.Template getOrCreateTemplate(org.eclipse.acceleo.parser.cst.Template iTemplate) {
+ if (iTemplate != null) {
+ org.eclipse.acceleo.model.mtl.Template oTemplate = ioTemplate.get(iTemplate);
+ if (oTemplate == null) {
+ oTemplate = org.eclipse.acceleo.model.mtl.MtlFactory.eINSTANCE.createTemplate();
+ ioTemplate.put(iTemplate, oTemplate);
+ }
+ return oTemplate;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets or creates an AST Variable corresponding to a CST Variable.
+ *
+ * @param iVariable
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.Variable'
+ * @return the output object of type 'org.eclipse.ocl.ecore.Variable'
+ */
+ protected org.eclipse.ocl.ecore.Variable getOrCreateVariable(org.eclipse.acceleo.parser.cst.Variable iVariable) {
+ if (iVariable != null) {
+ org.eclipse.ocl.ecore.Variable oVariable = ioVariable.get(iVariable);
+ if (oVariable == null) {
+ oVariable = org.eclipse.ocl.ecore.EcoreFactory.eINSTANCE.createVariable();
+ ioVariable.put(iVariable, oVariable);
+ }
+ return oVariable;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets or creates an AST TemplateExpression corresponding to a CST TemplateExpression. The output object
+ * is a temporary object. It will be replaced by an OCL expression in the OCL step. It's a strategy to
+ * keep the good index in a list like 'Block.body'.
+ *
+ * @param iTemplateExpression
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.TemplateExpression'
+ * @return the output object of type 'org.eclipse.acceleo.model.mtl.TemplateExpression'
+ */
+ protected org.eclipse.acceleo.model.mtl.TemplateExpression getOrCreateTemporaryTemplateExpression(
+ org.eclipse.acceleo.parser.cst.TemplateExpression iTemplateExpression) {
+ if (iTemplateExpression != null) {
+ org.eclipse.acceleo.model.mtl.TemplateExpression oTemplateExpression = ioTemplateExpression
+ .get(iTemplateExpression);
+ if (oTemplateExpression == null) {
+ oTemplateExpression = org.eclipse.acceleo.model.mtl.MtlFactory.eINSTANCE.createTemplateExpression();
+ ioTemplateExpression.put(iTemplateExpression, oTemplateExpression);
+ }
+ return oTemplateExpression;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets (but not create) an AST TemplateExpression corresponding to a CST TemplateExpression. The output
+ * object is a temporary object. It will be replaced by an OCL expression in the OCL step. It's a strategy
+ * to keep the good index in a list like 'Block.body'.
+ *
+ * @param iTemplateExpression
+ * is the input object of type 'org.eclipse.acceleo.parser.cst.TemplateExpression'
+ * @return the output object of type 'org.eclipse.acceleo.model.mtl.TemplateExpression'
+ */
+ protected org.eclipse.acceleo.model.mtl.TemplateExpression getTemporaryTemplateExpression(
+ org.eclipse.acceleo.parser.cst.TemplateExpression iTemplateExpression) {
+ if (iTemplateExpression != null) {
+ org.eclipse.acceleo.model.mtl.TemplateExpression oTemplateExpression = ioTemplateExpression
+ .get(iTemplateExp