summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormclay2009-02-05 01:37:07 (EST)
committer sefftinge2009-02-05 01:37:07 (EST)
commitd908d9434e846499c349a2bbab4b280ed0b9cc43 (patch)
tree87738b8aeb625a9dcbd17710650020cf590a2b8f
parentf06f9e61f84795b667ba4f36ccdf05ce939fcfb8 (diff)
downloadorg.eclipse.xtext-d908d9434e846499c349a2bbab4b280ed0b9cc43.zip
org.eclipse.xtext-d908d9434e846499c349a2bbab4b280ed0b9cc43.tar.gz
org.eclipse.xtext-d908d9434e846499c349a2bbab4b280ed0b9cc43.tar.bz2
share ecoredsl under org.eclipse.tmf/org.eclipse.xtext/examples
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/.classpath8
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/.project28
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/META-INF/MANIFEST.MF16
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/build.properties3
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/plugin.xml25
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/AbstractEcoreDslRuntimeModule.java72
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDsl.xmi912
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDslStandaloneSetup.java59
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/IEcoreDsl.java24
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/ecoredsl.ecore27
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslAntlrTokenFileProvider.java15
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslParser.java44
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g3019
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens53
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslLexer.java2902
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslParser.java7418
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl__.g78
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/EcoreDslDelimiters.java31
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/EcoreDslPackratParser.java16
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/EcoreDslParserConfiguration.java517
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEAnnotationDeclConsumer.java326
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEAttributeDeclConsumer.java780
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEClassDeclConsumer.java807
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEClassifierDeclConsumer.java83
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEDataTypeDeclConsumer.java309
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEEnumDeclConsumer.java265
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEEnumLiteralDeclConsumer.java305
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEGenericTypeDeclConsumer.java564
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEGenericTypeReferenceDeclConsumer.java374
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEOperationDeclConsumer.java864
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEPackageDeclConsumer.java432
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEParameterDeclConsumer.java164
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEReferenceDeclConsumer.java818
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEStructuralFeatureDeclConsumer.java83
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslETypeParameterDeclConsumer.java182
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslEcoreDslConsumer.java124
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslImportStatementDeclConsumer.java241
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslMapEntryConsumer.java161
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslMapEntrySuperConsumer.java54
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslMultiplicityExprConsumer.java113
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslQIDConsumer.java200
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslSINTConsumer.java121
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslSTRING_OR_QIDConsumer.java94
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/packrat/consumers/EcoreDslSubEPackageDeclConsumer.java284
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parsetree/reconstr/EcoreDslParseTreeConstructor.java8168
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/services/EcoreDslGrammarAccess.java2108
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/services/EcoreDslMetamodelAccess.java53
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/services/EcoreDslResourceFactory.java27
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src/org/eclipse/xtext/example/EcoreDsl.java57
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src/org/eclipse/xtext/example/EcoreDsl.xtext105
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src/org/eclipse/xtext/example/EcoreDslRuntimeModule.java172
-rw-r--r--examples/org.eclipse.xtext.example.ecoredsl/src/org/eclipse/xtext/example/EcoredslChecks.chk7
52 files changed, 33712 insertions, 0 deletions
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/.classpath b/examples/org.eclipse.xtext.example.ecoredsl/.classpath
new file mode 100644
index 0000000..bcc32a0
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/.project b/examples/org.eclipse.xtext.example.ecoredsl/.project
new file mode 100644
index 0000000..0613d33
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.xtext.example.ecoredsl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/META-INF/MANIFEST.MF b/examples/org.eclipse.xtext.example.ecoredsl/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..962abf5
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Xtext DSL Example (Incubation)
+Bundle-Vendor: Eclipse.org
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.xtext.example.ecoredsl;singleton:=true
+Eclipse-RegisterBuddy: org.eclipse.xtext.log4j
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext,
+ org.eclipse.xtext.generator,
+ org.eclipse.xtext.log4j;bundle-version="1.2.15",
+ de.itemis.xtext.antlr;bundle-version="1.0.0"
+Export-Package: org.eclipse.xtext.example.parsetree.reconstr,
+ org.eclipse.xtext.example.services,
+ org.eclipse.xtext.example
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/build.properties b/examples/org.eclipse.xtext.example.ecoredsl/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+ .
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/plugin.xml b/examples/org.eclipse.xtext.example.ecoredsl/plugin.xml
new file mode 100644
index 0000000..95240cf
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+ <extension
+ point="org.eclipse.xtend.typesystem.emf.checks">
+
+ <metaModel
+ nsURI="http://example.xtext.org/EcoreDsl">
+ <checkFile
+ path="org/eclipse/xtext/example/EcoredslChecks.chk">
+ </checkFile>
+ </metaModel>
+
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.extension_parser">
+ <parser
+ class="org.eclipse.xtext.example.services.EcoreDslResourceFactory"
+ type="ecoredsl">
+ </parser>
+ </extension>
+
+
+</plugin>
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/AbstractEcoreDslRuntimeModule.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/AbstractEcoreDslRuntimeModule.java
new file mode 100644
index 0000000..a8cb260
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/AbstractEcoreDslRuntimeModule.java
@@ -0,0 +1,72 @@
+/*
+Generated with Xtext
+*/
+package org.eclipse.xtext.example;
+
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+import org.eclipse.xtext.service.IServiceScope;
+
+import com.google.inject.Binder;
+
+/**
+ * GENERATED! Manual modification goes to EcoreDslRuntimeModule
+ */
+public abstract class AbstractEcoreDslRuntimeModule extends DefaultRuntimeModule {
+
+ @Override
+ public void configure(Binder binder) {
+ super.configure(binder);
+ binder.bind(IServiceScope.class).toInstance(org.eclipse.xtext.example.IEcoreDsl.SCOPE);
+ }
+
+ public Class<? extends org.eclipse.xtext.IMetamodelAccess> bindIMetamodelAccess() {
+ return org.eclipse.xtext.example.services.EcoreDslMetamodelAccess.class;
+ }
+ public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+ return org.eclipse.xtext.example.services.EcoreDslGrammarAccess.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.IAstFactory> bindIAstFactory() {
+ return org.eclipse.xtext.parser.DefaultEcoreElementFactory.class;
+ }
+ public Class<? extends org.eclipse.xtext.resource.IResourceFactory> bindIResourceFactory() {
+ return org.eclipse.xtext.example.services.EcoreDslResourceFactory.class;
+ }
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor> bindIParseTreeConstructor() {
+ return org.eclipse.xtext.example.parsetree.reconstr.EcoreDslParseTreeConstructor.class;
+ }
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.ITokenSerializer> bindITokenSerializer() {
+ return org.eclipse.xtext.parsetree.reconstr.impl.WhitespacePreservingTokenSerializer.class;
+ }
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.ICrossReferenceSerializer> bindICrossReferenceSerializer() {
+ return org.eclipse.xtext.parsetree.reconstr.impl.SimpleCrossReferenceSerializer.class;
+ }
+ public Class<? extends org.eclipse.xtext.parsetree.reconstr.ITransientValueService> bindITransientValueService() {
+ return org.eclipse.xtext.parsetree.reconstr.impl.SimpleTransientValueService.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrParser> bindIAntlrParser() {
+ return org.eclipse.xtext.example.parser.antlr.EcoreDslParser.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+ return org.eclipse.xtext.example.parser.antlr.EcoreDslAntlrTokenFileProvider.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+ return org.eclipse.xtext.example.parser.antlr.internal.InternalEcoreDslLexer.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+ return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.packrat.IPackratParser> bindIPackratParser() {
+ return org.eclipse.xtext.example.parser.packrat.EcoreDslPackratParser.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.packrat.IParseResultFactory> bindIParseResultFactory() {
+ return org.eclipse.xtext.parser.packrat.ParseResultFactory.class;
+ }
+ public Class<? extends org.eclipse.xtext.parser.ISwitchingParser> bindISwitchingParser() {
+ return org.eclipse.xtext.parser.SwitchingParser.class;
+ }
+
+
+}
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDsl.xmi b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDsl.xmi
new file mode 100644
index 0000000..ef60502
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDsl.xmi
@@ -0,0 +1,912 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xtext:Grammar xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+ <idElements>org</idElements>
+ <idElements>eclipse</idElements>
+ <idElements>xtext</idElements>
+ <idElements>example</idElements>
+ <idElements>EcoreDsl</idElements>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="ecoredsl">
+ <ePackage href="http://example.xtext.org/EcoreDsl#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="EcoreDsl">
+ <type metamodel="//@metamodelDeclarations.1">
+ <type xsi:type="ecore:EClass" href="http://example.xtext.org/EcoreDsl#//EcoreDsl"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="imports" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.1"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="package" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.2"/>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ImportStatementDecl">
+ <type metamodel="//@metamodelDeclarations.1">
+ <type xsi:type="ecore:EClass" href="http://example.xtext.org/EcoreDsl#//ImportStatementDecl"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="import"/>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Assignment" feature="alias" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="importURI" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EPackageDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="package"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.21"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="nsURI"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="nsURI" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="nsPrefix"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="nsPrefix" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.21"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="{"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Assignment" feature="eSubpackages" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.3"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="eClassifiers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.4"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SubEPackageDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="package"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="{"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Assignment" feature="eSubpackages" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.3"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="eClassifiers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.4"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EClassifierDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EClassifier"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.7"/>
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.5"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EDataTypeDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EDataType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="?" feature="serializable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="!serializable"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="datatype"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=":"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="instanceClassName" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.22"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </abstractTokens>
+ </groups>
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.11"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EAnnotationDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EAnnotation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="@"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="source" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="?" feature="eModelElement" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EModelElement"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="("/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="contents" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.18"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="contents" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.18"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EClassDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="?" feature="abstract" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="abstract"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Assignment" feature="interface" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="interface"/>
+ </groups>
+ <groups xsi:type="xtext:Keyword" value="class"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="&lt;"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.13"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.13"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=">"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="extends"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericSuperTypes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericSuperTypes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value=":"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="instanceClassName" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.22"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="{"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Assignment" feature="eStructuralFeatures" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.8"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="eOperations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.16"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EStructuralFeatureDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.9"/>
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.10"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EAttributeDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EAttribute"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Assignment" feature="iD" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="ID"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="bag"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="ordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="random"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="changeable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="readonly"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="volatile" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="volatile"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="transient" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="transient"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="unsettable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unsettable"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="derived" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="derived"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="attr"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="["/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="lowerBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.1"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value=".."/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="upperBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.23"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="]"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EReferenceDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Assignment" feature="resolveProxies" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="local"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="bag"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="ordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="random"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="changeable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="readonly"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="volatile" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="volatile"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="transient" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="transient"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="unsettable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unsettable"/>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="derived" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="derived"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Assignment" feature="containment" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="val"/>
+ </groups>
+ <groups xsi:type="xtext:Keyword" value="ref"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="["/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="lowerBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.1"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value=".."/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="upperBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.23"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="]"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value="#"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eOpposite" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EEnumDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EEnum"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="enum"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="{"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="+" feature="eLiterals" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.12"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EEnumLiteralDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EEnumLiteral"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.1"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="?" feature="literal" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ETypeParameterDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//ETypeParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Keyword" value="extends"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eBounds" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EGenericTypeReferenceDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EGenericType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" feature="eClassifier" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EClassifier"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="&lt;"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=">"/>
+ </abstractTokens>
+ </groups>
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="#"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameter" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//ETypeParameter"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </groups>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EGenericTypeDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EGenericType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" feature="eClassifier" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EClassifier"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="&lt;"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=">"/>
+ </abstractTokens>
+ </groups>
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="#"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameter" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//ETypeParameter"/>
+ </type>
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </groups>
+ </groups>
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="?"/>
+ <abstractTokens xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="extends"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eUpperBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </groups>
+ <groups xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="super"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eLowerBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.15"/>
+ </abstractTokens>
+ </groups>
+ </abstractTokens>
+ </groups>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EOperationDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EOperation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives" cardinality="*">
+ <groups xsi:type="xtext:Assignment" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="bag"/>
+ </groups>
+ <groups xsi:type="xtext:Assignment" feature="ordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="random"/>
+ </groups>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="op"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Assignment" feature="eGenericType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </groups>
+ <groups xsi:type="xtext:Keyword" value="void"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="&lt;"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.13"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eTypeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.13"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=">"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="("/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Assignment" feature="eParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.17"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.17"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=")"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="?">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" value="throws"/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericExceptions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Keyword" value=","/>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericExceptions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value=";"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="EParameterDecl">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" cardinality="*" feature="eAnnotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.6"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="eGenericType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="//@rules.14"/>
+ </abstractTokens>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MapEntrySuper">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </type>
+ <alternatives xsi:type="xtext:RuleCall" rule="//@rules.19"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MapEntry">
+ <type metamodel="//@metamodelDeclarations.1">
+ <type xsi:type="ecore:EClass" href="http://example.xtext.org/EcoreDsl#//MapEntry"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Assignment" feature="detailKey" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </terminal>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Keyword" value="="/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Assignment" feature="detailValue" operator="=">
+ <terminal xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </terminal>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="MultiplicityExpr">
+ <type metamodel="//@metamodelDeclarations.1">
+ <type xsi:type="ecore:EClass" href="http://example.xtext.org/EcoreDsl#//MultiplicityExpr"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Keyword" value="+"/>
+ <groups xsi:type="xtext:Keyword" value="?"/>
+ </groups>
+ <groups xsi:type="xtext:Keyword" value="*"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="QID">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:Group" cardinality="*">
+ <abstractTokens xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:Keyword" value="."/>
+ <groups xsi:type="xtext:Keyword" value="$"/>
+ </abstractTokens>
+ <abstractTokens xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.0"/>
+ </abstractTokens>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="STRING_OR_QID">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <groups xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.2"/>
+ </groups>
+ <groups xsi:type="xtext:RuleCall" rule="//@rules.21"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="SINT">
+ <type metamodel="//@metamodelDeclarations.0">
+ <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <abstractTokens xsi:type="xtext:Keyword" cardinality="?" value="-"/>
+ <abstractTokens xsi:type="xtext:RuleCall">
+ <rule href="classpath:/org/eclipse/xtext/builtin/XtextBuiltin.xmi#//@rules.1"/>
+ </abstractTokens>
+ </alternatives>
+ </rules>
+</xtext:Grammar>
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDslStandaloneSetup.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDslStandaloneSetup.java
new file mode 100644
index 0000000..c41900f
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/EcoreDslStandaloneSetup.java
@@ -0,0 +1,59 @@
+/*
+Generated with Xtext
+*/
+package org.eclipse.xtext.example;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.service.IServiceScope;
+import org.eclipse.xtext.service.ServiceRegistry;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+import org.eclipse.xtext.example.IEcoreDsl;
+
+public abstract class EcoreDslStandaloneSetup {
+
+ private static boolean isInitialized = false;
+
+ public synchronized static void doSetup() {
+ if(!isInitialized) {
+
+ Injector injector = Guice.createInjector(new org.eclipse.xtext.example.EcoreDslRuntimeModule());
+ ServiceRegistry.registerInjector(org.eclipse.xtext.example.IEcoreDsl.SCOPE, injector);
+
+
+
+ org.eclipse.xtext.builtin.XtextBuiltinStandaloneSetup.doSetup();
+
+
+ // register resource factory to EMF
+ IResourceFactory resourceFactory = new org.eclipse.xtext.example.services.EcoreDslResourceFactory();
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecoredsl", resourceFactory);
+
+
+ // initialize EPackages
+
+ if (!EPackage.Registry.INSTANCE.containsKey("http://example.xtext.org/EcoreDsl")) {
+ EPackage ecoredsl = EcoreUtil2.loadEPackage(
+ "classpath:/org/eclipse/xtext/example/ecoredsl.ecore",
+ EcoreDslStandaloneSetup.class.getClassLoader());
+ if (ecoredsl == null)
+ throw new IllegalStateException(
+ "Couldn't load EPackage from 'classpath:/org/eclipse/xtext/example/ecoredsl.ecore'");
+ EPackage.Registry.INSTANCE.put("http://example.xtext.org/EcoreDsl", ecoredsl);
+ }
+
+ isInitialized = true;
+ }
+ }
+
+ public static IServiceScope getServiceScope() {
+ doSetup();
+ return org.eclipse.xtext.example.IEcoreDsl.SCOPE;
+ }
+
+}
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/IEcoreDsl.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/IEcoreDsl.java
new file mode 100644
index 0000000..040041b
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/IEcoreDsl.java
@@ -0,0 +1,24 @@
+/*
+Generated with Xtext
+*/
+package org.eclipse.xtext.example;
+
+import org.eclipse.xtext.service.IServiceScope;
+import org.eclipse.xtext.service.ServiceScopeFactory;
+import org.eclipse.xtext.ILanguage;
+
+public interface IEcoreDsl extends ILanguage {
+
+ /**
+ * the unique identifier of this language.
+ * To be used to get the language descriptor and related services from the registry.
+ * Within ILanguageServices it is encouraged to use dependency injection instead
+ * of directly accessing the ServiceRegistry
+ */
+ public static final String ID = "org.eclipse.xtext.example.EcoreDsl";
+ public static final String NAME = "EcoreDsl";
+ public static final String NAMESPACE = "org.eclipse.xtext.example";
+ public static final String[] FILE_EXTENSIONS = new String[]{"ecoredsl"};
+ public static final IServiceScope SCOPE = ServiceScopeFactory.createScope(ID);
+
+}
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/ecoredsl.ecore b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/ecoredsl.ecore
new file mode 100644
index 0000000..e26de04
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/ecoredsl.ecore
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ASCII"?>
+<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="ecoredsl" nsURI="http://example.xtext.org/EcoreDsl" nsPrefix="ecoredsl">
+ <eClassifiers xsi:type="ecore:EClass" name="EcoreDsl">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" unique="false" upperBound="-1" eType="//ImportStatementDecl" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" containment="true">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImportStatementDecl">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="importURI">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MapEntry">
+ <eSuperTypes href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="detailKey">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="detailValue">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiplicityExpr"/>
+</ecore:EPackage>
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslAntlrTokenFileProvider.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslAntlrTokenFileProvider.java
new file mode 100644
index 0000000..3cb39ed
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslAntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+Generated with Xtext
+*/
+package org.eclipse.xtext.example.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class EcoreDslAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+ public InputStream getAntlrTokenFile() {
+ ClassLoader classLoader = EcoreDslAntlrTokenFileProvider.class.getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens");
+ }
+}
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslParser.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslParser.java
new file mode 100644
index 0000000..760aa27
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/EcoreDslParser.java
@@ -0,0 +1,44 @@
+/*
+Generated with Xtext
+*/
+package org.eclipse.xtext.example.parser.antlr;
+
+import org.antlr.runtime.ANTLRInputStream;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.parser.ParseException;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.example.parser.antlr.internal.InternalEcoreDslLexer;
+import org.eclipse.xtext.example.parser.antlr.internal.InternalEcoreDslParser;
+
+public class EcoreDslParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+
+ @Inject
+ protected ITokenDefProvider antlrTokenDefProvider;
+
+ @Override
+ protected IParseResult parse(String ruleName, ANTLRInputStream in) {
+ InternalEcoreDslLexer lexer = new InternalEcoreDslLexer(in);
+ XtextTokenStream stream = new XtextTokenStream(lexer, antlrTokenDefProvider);
+ InternalEcoreDslParser parser = new InternalEcoreDslParser(
+ stream, getElementFactory(), grammarAccess.getGrammar());
+ parser.setTokenTypeMap(antlrTokenDefProvider.getTokenDefMap());
+ try {
+ if(ruleName != null) {
+ return parser.parse(ruleName);
+ } else {
+ return parser.parse();
+ }
+ } catch (Exception re) {
+ throw new ParseException(re.getMessage(),re);
+ }
+ }
+
+ @Override
+ protected String getDefaultRuleName() {
+ return "EcoreDsl";
+ }
+}
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g
new file mode 100644
index 0000000..ab4695d
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g
@@ -0,0 +1,3019 @@
+/*
+Generated with Xtext
+*/
+grammar InternalEcoreDsl;
+
+options {
+ superClass=AbstractInternalAntlrParser;
+}
+
+@lexer::header {
+package org.eclipse.xtext.example.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.xtext.example.parser.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.xtext.conversion.ValueConverterException;
+
+}
+
+@parser::members {
+
+ public InternalEcoreDslParser(TokenStream input, IAstFactory factory, Grammar g) {
+ this(input);
+ this.factory = factory;
+ grammar = g;
+ }
+
+ @Override
+ protected InputStream getTokenFile() {
+ ClassLoader classLoader = InternalEcoreDslParser.class.getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens");
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "EcoreDsl";
+ }
+}
+
+@rulecatch {
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+}
+
+
+
+
+
+// Entry rule entryRuleEcoreDsl
+entryRuleEcoreDsl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEcoreDsl=ruleEcoreDsl
+ { $current=$iv_ruleEcoreDsl.current; }
+ EOF
+;
+
+// Rule EcoreDsl
+ruleEcoreDsl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0/@alternatives/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_imports=ruleImportStatementDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EcoreDsl");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "imports", lv_imports, "ImportStatementDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_package=ruleEPackageDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EcoreDsl");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "package", lv_package, "EPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+));
+
+
+
+
+
+
+
+// Entry rule entryRuleImportStatementDecl
+entryRuleImportStatementDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1" /* xtext::ParserRule */, currentNode); }
+ iv_ruleImportStatementDecl=ruleImportStatementDecl
+ { $current=$iv_ruleImportStatementDecl.current; }
+ EOF
+;
+
+// Rule ImportStatementDecl
+ruleImportStatementDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((('import'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+((
+
+ lv_alias=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "alias");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("ImportStatementDecl");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "alias", lv_alias, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)'='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)(
+
+ lv_importURI=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "importURI");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("ImportStatementDecl");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "importURI", lv_importURI, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEPackageDecl
+entryRuleEPackageDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEPackageDecl=ruleEPackageDecl
+ { $current=$iv_ruleEPackageDecl.current; }
+ EOF
+;
+
+// Rule EPackageDecl
+ruleEPackageDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*'package'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_name=ruleQID
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))'nsURI'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)'='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+ lv_nsURI=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "nsURI");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "nsURI", lv_nsURI, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))'nsPrefix'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)'='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_nsPrefix=ruleQID
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "nsPrefix", lv_nsPrefix, "QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))'{'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eSubpackages=ruleSubEPackageDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eSubpackages", lv_eSubpackages, "SubEPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+ |(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eClassifiers=ruleEClassifierDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eClassifiers", lv_eClassifiers, "EClassifierDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'}'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleSubEPackageDecl
+entryRuleSubEPackageDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3" /* xtext::ParserRule */, currentNode); }
+ iv_ruleSubEPackageDecl=ruleSubEPackageDecl
+ { $current=$iv_ruleSubEPackageDecl.current; }
+ EOF
+;
+
+// Rule SubEPackageDecl
+ruleSubEPackageDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*'package'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))'{'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eSubpackages=ruleSubEPackageDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eSubpackages", lv_eSubpackages, "SubEPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+ |(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eClassifiers=ruleEClassifierDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eClassifiers", lv_eClassifiers, "EClassifierDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'}'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEClassifierDecl
+entryRuleEClassifierDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEClassifierDecl=ruleEClassifierDecl
+ { $current=$iv_ruleEClassifierDecl.current; }
+ EOF
+;
+
+// Rule EClassifierDecl
+ruleEClassifierDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4/@alternatives/@groups.0" /* xtext::RuleCall */, currentNode);
+ }
+ this_EClassDecl=ruleEClassDecl
+ {
+ $current = $this_EClassDecl.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+ }
+ this_EDataTypeDecl=ruleEDataTypeDecl
+ {
+ $current = $this_EDataTypeDecl.current;
+ currentNode = currentNode.getParent();
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEDataTypeDecl
+entryRuleEDataTypeDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEDataTypeDecl=ruleEDataTypeDecl
+ { $current=$iv_ruleEDataTypeDecl.current; }
+ EOF
+;
+
+// Rule EDataTypeDecl
+ruleEDataTypeDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*(
+
+ lv_serializable='!serializable'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::Keyword */, "serializable");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "serializable", true, "!serializable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)?)(((('datatype'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))':'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_instanceClassName=ruleSTRING_OR_QID
+ {
+ if ($current==null) {
+ $current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "instanceClassName", lv_instanceClassName, "STRING_OR_QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+))
+ |
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+ }
+ this_EEnumDecl=ruleEEnumDecl
+ {
+ $current = $this_EEnumDecl.current;
+ currentNode = currentNode.getParent();
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEAnnotationDecl
+entryRuleEAnnotationDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEAnnotationDecl=ruleEAnnotationDecl
+ { $current=$iv_ruleEAnnotationDecl.current; }
+ EOF
+;
+
+// Rule EAnnotationDecl
+ruleEAnnotationDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((((('@'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_source=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "source");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "source", lv_source, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))(
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eModelElement");
+ }
+)
+
+)?)'('
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_contents=ruleMapEntrySuper
+ {
+ if ($current==null) {
+ $current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "contents", lv_contents, "MapEntrySuper", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_contents=ruleMapEntrySuper
+ {
+ if ($current==null) {
+ $current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "contents", lv_contents, "MapEntrySuper", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)')'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEClassDecl
+entryRuleEClassDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEClassDecl=ruleEClassDecl
+ { $current=$iv_ruleEClassDecl.current; }
+ EOF
+;
+
+// Rule EClassDecl
+ruleEClassDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*(
+
+ lv_abstract='abstract'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::Keyword */, "abstract");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "abstract", true, "abstract", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)?)((
+
+ lv_interface='interface'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "interface");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "interface", true, "interface", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+ |'class'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+ }
+))(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))((('<'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeParameters=ruleETypeParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeParameters=ruleETypeParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'>'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)(('extends'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericSuperTypes=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eGenericSuperTypes", lv_eGenericSuperTypes, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericSuperTypes=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eGenericSuperTypes", lv_eGenericSuperTypes, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)?)(':'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_instanceClassName=ruleSTRING_OR_QID
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "instanceClassName", lv_instanceClassName, "STRING_OR_QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))?)'{'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eStructuralFeatures=ruleEStructuralFeatureDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eStructuralFeatures", lv_eStructuralFeatures, "EStructuralFeatureDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+ |(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eOperations=ruleEOperationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eOperations", lv_eOperations, "EOperationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'}'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEStructuralFeatureDecl
+entryRuleEStructuralFeatureDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEStructuralFeatureDecl=ruleEStructuralFeatureDecl
+ { $current=$iv_ruleEStructuralFeatureDecl.current; }
+ EOF
+;
+
+// Rule EStructuralFeatureDecl
+ruleEStructuralFeatureDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8/@alternatives/@groups.0" /* xtext::RuleCall */, currentNode);
+ }
+ this_EAttributeDecl=ruleEAttributeDecl
+ {
+ $current = $this_EAttributeDecl.current;
+ currentNode = currentNode.getParent();
+ }
+
+ |
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+ }
+ this_EReferenceDecl=ruleEReferenceDecl
+ {
+ $current = $this_EReferenceDecl.current;
+ currentNode = currentNode.getParent();
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEAttributeDecl
+entryRuleEAttributeDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEAttributeDecl=ruleEAttributeDecl
+ { $current=$iv_ruleEAttributeDecl.current; }
+ EOF
+;
+
+// Rule EAttributeDecl
+ruleEAttributeDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*((((((((
+
+ lv_iD='ID'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@terminal" /* xtext::Keyword */, "iD");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "iD", true, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+ |(
+
+ lv_unique='bag'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unique");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_ordered='random'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_changeable='readonly'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "changeable");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "changeable", true, "readonly", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_volatile='volatile'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "volatile");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "volatile", true, "volatile", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_transient='transient'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "transient");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "transient", true, "transient", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_unsettable='unsettable'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unsettable");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "unsettable", true, "unsettable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_derived='derived'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "derived");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "derived", true, "derived", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))*)'attr'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericType=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))((('['
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_lowerBound=RULE_INT
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "lowerBound");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "lowerBound", lv_lowerBound, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))('..'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_upperBound=ruleSINT
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "upperBound", lv_upperBound, "SINT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))?)']'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))('='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_defaultValueLiteral=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "defaultValueLiteral");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "defaultValueLiteral", lv_defaultValueLiteral, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))?)';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEReferenceDecl
+entryRuleEReferenceDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEReferenceDecl=ruleEReferenceDecl
+ { $current=$iv_ruleEReferenceDecl.current; }
+ EOF
+;
+
+// Rule EReferenceDecl
+ruleEReferenceDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*((((((((
+
+ lv_resolveProxies='local'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@terminal" /* xtext::Keyword */, "resolveProxies");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "resolveProxies", true, "local", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+ |(
+
+ lv_unique='bag'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unique");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_ordered='random'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_changeable='readonly'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "changeable");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "changeable", true, "readonly", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_volatile='volatile'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "volatile");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "volatile", true, "volatile", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_transient='transient'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "transient");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "transient", true, "transient", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_unsettable='unsettable'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unsettable");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "unsettable", true, "unsettable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))
+ |(
+
+ lv_derived='derived'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "derived");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "derived", true, "derived", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))*)((
+
+ lv_containment='val'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "containment");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "containment", true, "val", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+ |'ref'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+ }
+))(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericType=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))((('['
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_lowerBound=RULE_INT
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "lowerBound");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "lowerBound", lv_lowerBound, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))('..'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_upperBound=ruleSINT
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "upperBound", lv_upperBound, "SINT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))?)']'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)('#'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eOpposite");
+ }
+)
+
+))?)(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEEnumDecl
+entryRuleEEnumDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEEnumDecl=ruleEEnumDecl
+ { $current=$iv_ruleEEnumDecl.current; }
+ EOF
+;
+
+// Rule EEnumDecl
+ruleEEnumDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*'enum'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))'{'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eLiterals=ruleEEnumLiteralDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eLiterals", lv_eLiterals, "EEnumLiteralDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)+)'}'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEEnumLiteralDecl
+entryRuleEEnumLiteralDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEEnumLiteralDecl=ruleEEnumLiteralDecl
+ { $current=$iv_ruleEEnumLiteralDecl.current; }
+ EOF
+;
+
+// Rule EEnumLiteralDecl
+ruleEEnumLiteralDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))('='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+ lv_value=RULE_INT
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "value");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "value", lv_value, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))?)(
+
+ lv_literal=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "literal");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "literal", lv_literal, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)?)';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleETypeParameterDecl
+entryRuleETypeParameterDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13" /* xtext::ParserRule */, currentNode); }
+ iv_ruleETypeParameterDecl=ruleETypeParameterDecl
+ { $current=$iv_ruleETypeParameterDecl.current; }
+ EOF
+;
+
+// Rule ETypeParameterDecl
+ruleETypeParameterDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("ETypeParameter");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)('extends'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eBounds=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("ETypeParameter");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eBounds", lv_eBounds, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))?);
+
+
+
+
+
+
+
+// Entry rule entryRuleEGenericTypeReferenceDecl
+entryRuleEGenericTypeReferenceDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEGenericTypeReferenceDecl=ruleEGenericTypeReferenceDecl
+ { $current=$iv_ruleEGenericTypeReferenceDecl.current; }
+ EOF
+;
+
+// Rule EGenericTypeReferenceDecl
+ruleEGenericTypeReferenceDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.0/@terminal" /* xtext::CrossReference */, "eClassifier");
+ }
+)
+
+)((('<'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeArguments=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeArguments=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'>'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)
+ |('#'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eTypeParameter");
+ }
+)
+
+)));
+
+
+
+
+
+
+
+// Entry rule entryRuleEGenericTypeDecl
+entryRuleEGenericTypeDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEGenericTypeDecl=ruleEGenericTypeDecl
+ { $current=$iv_ruleEGenericTypeDecl.current; }
+ EOF
+;
+
+// Rule EGenericTypeDecl
+ruleEGenericTypeDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((((
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.0/@terminal" /* xtext::CrossReference */, "eClassifier");
+ }
+)
+
+)((('<'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeArguments=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeArguments=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'>'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)
+ |('#'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+ }
+(
+ RULE_ID {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eTypeParameter");
+ }
+)
+
+)))
+ |('?'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(('extends'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eUpperBound=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eUpperBound", lv_eUpperBound, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))
+ |('super'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eLowerBound=ruleEGenericTypeDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eLowerBound", lv_eLowerBound, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)))));
+
+
+
+
+
+
+
+// Entry rule entryRuleEOperationDecl
+entryRuleEOperationDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEOperationDecl=ruleEOperationDecl
+ { $current=$iv_ruleEOperationDecl.current; }
+ EOF
+;
+
+// Rule EOperationDecl
+ruleEOperationDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((((((((((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*((
+
+ lv_unique='bag'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "unique");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)
+ |(
+
+ lv_ordered='random'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))*)'op'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericType=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)
+ |'void'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+ }
+))(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+))((('<'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeParameters=ruleETypeParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eTypeParameters=ruleETypeParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)'>'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)?)'('
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eParameters=ruleEParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eParameters", lv_eParameters, "EParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eParameters=ruleEParameterDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eParameters", lv_eParameters, "EParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)?)')'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(('throws'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericExceptions=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eGenericExceptions", lv_eGenericExceptions, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(','
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericExceptions=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eGenericExceptions", lv_eGenericExceptions, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))*)?)';'
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+);
+
+
+
+
+
+
+
+// Entry rule entryRuleEParameterDecl
+entryRuleEParameterDecl returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17" /* xtext::ParserRule */, currentNode); }
+ iv_ruleEParameterDecl=ruleEParameterDecl
+ { $current=$iv_ruleEParameterDecl.current; }
+ EOF
+;
+
+// Rule EParameterDecl
+ruleEParameterDecl returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eAnnotations=ruleEAnnotationDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.add($current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+)*(
+
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+ }
+ lv_eGenericType=ruleEGenericTypeReferenceDecl
+ {
+ if ($current==null) {
+ $current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode.getParent(), $current);
+ }
+
+ try {
+ factory.set($current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+ }
+
+))(
+
+ lv_name=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+));
+
+
+
+
+
+
+
+// Entry rule entryRuleMapEntrySuper
+entryRuleMapEntrySuper returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.18" /* xtext::ParserRule */, currentNode); }
+ iv_ruleMapEntrySuper=ruleMapEntrySuper
+ { $current=$iv_ruleMapEntrySuper.current; }
+ EOF
+;
+
+// Rule MapEntrySuper
+ruleMapEntrySuper returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.18/@alternatives" /* xtext::RuleCall */, currentNode);
+ }
+ this_MapEntry=ruleMapEntry
+ {
+ $current = $this_MapEntry.current;
+ currentNode = currentNode.getParent();
+ }
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleMapEntry
+entryRuleMapEntry returns [EObject current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19" /* xtext::ParserRule */, currentNode); }
+ iv_ruleMapEntry=ruleMapEntry
+ { $current=$iv_ruleMapEntry.current; }
+ EOF
+;
+
+// Rule MapEntry
+ruleMapEntry returns [EObject current=null]
+ @init { EObject temp=null; setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+(((
+
+ lv_detailKey=RULE_ID
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "detailKey");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("MapEntry");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "detailKey", lv_detailKey, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+)'='
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+ }
+)(
+
+ lv_detailValue=RULE_STRING
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "detailValue");
+ }
+
+ {
+ if ($current==null) {
+ $current = factory.create("MapEntry");
+ associateNodeWithAstElement(currentNode, $current);
+ }
+
+ try {
+ factory.set($current, "detailValue", lv_detailValue, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ }
+
+));
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleQID
+entryRuleQID returns [String current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21" /* xtext::ParserRule */, currentNode); }
+ iv_ruleQID=ruleQID
+ { $current=$iv_ruleQID.current.getText(); }
+ EOF
+;
+
+// Rule QID
+ruleQID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+( this_ID=RULE_ID {
+ $current.merge(this_ID);
+ }
+
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.0" /* xtext::RuleCall */, null);
+ }
+((
+ kw='.'
+ {
+ $current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.0/@groups.0" /* xtext::Keyword */, null);
+ }
+
+ |
+ kw='$'
+ {
+ $current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.0/@groups.1" /* xtext::Keyword */, null);
+ }
+) this_ID=RULE_ID {
+ $current.merge(this_ID);
+ }
+
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.1" /* xtext::RuleCall */, null);
+ }
+)*)
+ ;
+
+
+
+
+
+
+
+// Entry rule entryRuleSTRING_OR_QID
+entryRuleSTRING_OR_QID returns [String current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22" /* xtext::ParserRule */, currentNode); }
+ iv_ruleSTRING_OR_QID=ruleSTRING_OR_QID
+ { $current=$iv_ruleSTRING_OR_QID.current.getText(); }
+ EOF
+;
+
+// Rule STRING_OR_QID
+ruleSTRING_OR_QID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+( this_STRING=RULE_STRING {
+ $current.merge(this_STRING);
+ }
+
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22/@alternatives/@groups.0" /* xtext::RuleCall */, null);
+ }
+
+ |
+ {
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+ }
+ this_QID=ruleQID {
+ $current.merge(this_QID);
+ }
+
+ {
+ currentNode = currentNode.getParent();
+ }
+)
+ ;
+
+
+
+
+
+
+
+// Entry rule entryRuleSINT
+entryRuleSINT returns [String current=null] :
+ { currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23" /* xtext::ParserRule */, currentNode); }
+ iv_ruleSINT=ruleSINT
+ { $current=$iv_ruleSINT.current.getText(); }
+ EOF
+;
+
+// Rule SINT
+ruleSINT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+ @init { setCurrentLookahead(); resetLookahead();
+ }
+ @after { resetLookahead();
+ }:
+((
+ kw='-'
+ {
+ $current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23/@alternatives/@abstractTokens.0" /* xtext::Keyword */, null);
+ }
+)? this_INT=RULE_INT {
+ $current.merge(this_INT);
+ }
+
+ {
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23/@alternatives/@abstractTokens.1" /* xtext::RuleCall */, null);
+ }
+)
+ ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RULE_ID : ('^')?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : '"' ( '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') | ~('\\'|'"') )* '"' | '\'' ( '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') | ~('\\'|'\'') )* '\'';
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;};
+
+RULE_SL_COMMENT : '//' ~('\n'|'\r')* ('\r'? '\n')? {$channel=HIDDEN;};
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+ {$channel=HIDDEN;};
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens
new file mode 100644
index 0000000..f681c81
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens
@@ -0,0 +1,53 @@
+RULE_ML_COMMENT=7
+RULE_ID=4
+RULE_WS=9
+RULE_INT=6
+RULE_STRING=5
+RULE_ANY_OTHER=10
+RULE_SL_COMMENT=8
+'<'=29
+'readonly'=35
+'..'=42
+'interface'=27
+'>'=30
+'$'=55
+'val'=45
+'package'=14
+'-'=56
+';'=13
+'?'=49
+']'=43
+','=24
+'nsURI'=15
+'op'=51
+'ID'=32
+'ref'=46
+'='=12
+'['=41
+'derived'=39
+'volatile'=36
+'enum'=48
+'unsettable'=38
+'local'=44
+')'=25
+'super'=50
+'random'=34
+'datatype'=20
+'@'=22
+'!serializable'=19
+'{'=17
+'import'=11
+'void'=52
+'('=23
+'throws'=53
+'transient'=37
+'nsPrefix'=16
+':'=21
+'#'=47
+'attr'=40
+'.'=54
+'extends'=31
+'bag'=33
+'class'=28
+'}'=18
+'abstract'=26
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslLexer.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslLexer.java
new file mode 100644
index 0000000..115bbc2
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslLexer.java
@@ -0,0 +1,2902 @@
+package org.eclipse.xtext.example.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class InternalEcoreDslLexer extends Lexer {
+ public static final int T14=14;
+ public static final int T29=29;
+ public static final int T36=36;
+ public static final int RULE_STRING=5;
+ public static final int T35=35;
+ public static final int T45=45;
+ public static final int T20=20;
+ public static final int T34=34;
+ public static final int T25=25;
+ public static final int T18=18;
+ public static final int T37=37;
+ public static final int T26=26;
+ public static final int RULE_INT=6;
+ public static final int T32=32;
+ public static final int T17=17;
+ public static final int T51=51;
+ public static final int T46=46;
+ public static final int T16=16;
+ public static final int T38=38;
+ public static final int T41=41;
+ public static final int T24=24;
+ public static final int T19=19;
+ public static final int T39=39;
+ public static final int T21=21;
+ public static final int T44=44;
+ public static final int T55=55;
+ public static final int RULE_ML_COMMENT=7;
+ public static final int RULE_ID=4;
+ public static final int T33=33;
+ public static final int T11=11;
+ public static final int T22=22;
+ public static final int T50=50;
+ public static final int T43=43;
+ public static final int T12=12;
+ public static final int T23=23;
+ public static final int T28=28;
+ public static final int T42=42;
+ public static final int T40=40;
+ public static final int T13=13;
+ public static final int T56=56;
+ public static final int RULE_WS=9;
+ public static final int T48=48;
+ public static final int T15=15;
+ public static final int T54=54;
+ public static final int EOF=-1;
+ public static final int T47=47;
+ public static final int Tokens=57;
+ public static final int T53=53;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int T31=31;
+ public static final int T49=49;
+ public static final int RULE_SL_COMMENT=8;
+ public static final int T27=27;
+ public static final int T52=52;
+ public static final int T30=30;
+ public InternalEcoreDslLexer() {;}
+ public InternalEcoreDslLexer(CharStream input) {
+ super(input);
+ }
+ public String getGrammarFileName() { return "./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g"; }
+
+ // $ANTLR start T11
+ public final void mT11() throws RecognitionException {
+ try {
+ int _type = T11;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:10:5: ( 'import' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:10:7: 'import'
+ {
+ match("import");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T11
+
+ // $ANTLR start T12
+ public final void mT12() throws RecognitionException {
+ try {
+ int _type = T12;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:11:5: ( '=' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:11:7: '='
+ {
+ match('=');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T12
+
+ // $ANTLR start T13
+ public final void mT13() throws RecognitionException {
+ try {
+ int _type = T13;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:12:5: ( ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:12:7: ';'
+ {
+ match(';');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T13
+
+ // $ANTLR start T14
+ public final void mT14() throws RecognitionException {
+ try {
+ int _type = T14;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:13:5: ( 'package' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:13:7: 'package'
+ {
+ match("package");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T14
+
+ // $ANTLR start T15
+ public final void mT15() throws RecognitionException {
+ try {
+ int _type = T15;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:14:5: ( 'nsURI' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:14:7: 'nsURI'
+ {
+ match("nsURI");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T15
+
+ // $ANTLR start T16
+ public final void mT16() throws RecognitionException {
+ try {
+ int _type = T16;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:15:5: ( 'nsPrefix' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:15:7: 'nsPrefix'
+ {
+ match("nsPrefix");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T16
+
+ // $ANTLR start T17
+ public final void mT17() throws RecognitionException {
+ try {
+ int _type = T17;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:16:5: ( '{' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:16:7: '{'
+ {
+ match('{');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T17
+
+ // $ANTLR start T18
+ public final void mT18() throws RecognitionException {
+ try {
+ int _type = T18;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:17:5: ( '}' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:17:7: '}'
+ {
+ match('}');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T18
+
+ // $ANTLR start T19
+ public final void mT19() throws RecognitionException {
+ try {
+ int _type = T19;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:18:5: ( '!serializable' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:18:7: '!serializable'
+ {
+ match("!serializable");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T19
+
+ // $ANTLR start T20
+ public final void mT20() throws RecognitionException {
+ try {
+ int _type = T20;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:19:5: ( 'datatype' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:19:7: 'datatype'
+ {
+ match("datatype");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T20
+
+ // $ANTLR start T21
+ public final void mT21() throws RecognitionException {
+ try {
+ int _type = T21;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:20:5: ( ':' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:20:7: ':'
+ {
+ match(':');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T21
+
+ // $ANTLR start T22
+ public final void mT22() throws RecognitionException {
+ try {
+ int _type = T22;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:21:5: ( '@' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:21:7: '@'
+ {
+ match('@');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T22
+
+ // $ANTLR start T23
+ public final void mT23() throws RecognitionException {
+ try {
+ int _type = T23;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:22:5: ( '(' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:22:7: '('
+ {
+ match('(');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T23
+
+ // $ANTLR start T24
+ public final void mT24() throws RecognitionException {
+ try {
+ int _type = T24;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:23:5: ( ',' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:23:7: ','
+ {
+ match(',');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T24
+
+ // $ANTLR start T25
+ public final void mT25() throws RecognitionException {
+ try {
+ int _type = T25;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:24:5: ( ')' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:24:7: ')'
+ {
+ match(')');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T25
+
+ // $ANTLR start T26
+ public final void mT26() throws RecognitionException {
+ try {
+ int _type = T26;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:25:5: ( 'abstract' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:25:7: 'abstract'
+ {
+ match("abstract");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T26
+
+ // $ANTLR start T27
+ public final void mT27() throws RecognitionException {
+ try {
+ int _type = T27;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:26:5: ( 'interface' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:26:7: 'interface'
+ {
+ match("interface");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T27
+
+ // $ANTLR start T28
+ public final void mT28() throws RecognitionException {
+ try {
+ int _type = T28;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:27:5: ( 'class' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:27:7: 'class'
+ {
+ match("class");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T28
+
+ // $ANTLR start T29
+ public final void mT29() throws RecognitionException {
+ try {
+ int _type = T29;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:28:5: ( '<' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:28:7: '<'
+ {
+ match('<');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T29
+
+ // $ANTLR start T30
+ public final void mT30() throws RecognitionException {
+ try {
+ int _type = T30;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:29:5: ( '>' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:29:7: '>'
+ {
+ match('>');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T30
+
+ // $ANTLR start T31
+ public final void mT31() throws RecognitionException {
+ try {
+ int _type = T31;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:30:5: ( 'extends' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:30:7: 'extends'
+ {
+ match("extends");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T31
+
+ // $ANTLR start T32
+ public final void mT32() throws RecognitionException {
+ try {
+ int _type = T32;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:31:5: ( 'ID' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:31:7: 'ID'
+ {
+ match("ID");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T32
+
+ // $ANTLR start T33
+ public final void mT33() throws RecognitionException {
+ try {
+ int _type = T33;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:32:5: ( 'bag' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:32:7: 'bag'
+ {
+ match("bag");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T33
+
+ // $ANTLR start T34
+ public final void mT34() throws RecognitionException {
+ try {
+ int _type = T34;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:33:5: ( 'random' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:33:7: 'random'
+ {
+ match("random");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T34
+
+ // $ANTLR start T35
+ public final void mT35() throws RecognitionException {
+ try {
+ int _type = T35;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:34:5: ( 'readonly' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:34:7: 'readonly'
+ {
+ match("readonly");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T35
+
+ // $ANTLR start T36
+ public final void mT36() throws RecognitionException {
+ try {
+ int _type = T36;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:35:5: ( 'volatile' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:35:7: 'volatile'
+ {
+ match("volatile");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T36
+
+ // $ANTLR start T37
+ public final void mT37() throws RecognitionException {
+ try {
+ int _type = T37;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:36:5: ( 'transient' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:36:7: 'transient'
+ {
+ match("transient");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T37
+
+ // $ANTLR start T38
+ public final void mT38() throws RecognitionException {
+ try {
+ int _type = T38;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:37:5: ( 'unsettable' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:37:7: 'unsettable'
+ {
+ match("unsettable");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T38
+
+ // $ANTLR start T39
+ public final void mT39() throws RecognitionException {
+ try {
+ int _type = T39;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:38:5: ( 'derived' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:38:7: 'derived'
+ {
+ match("derived");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T39
+
+ // $ANTLR start T40
+ public final void mT40() throws RecognitionException {
+ try {
+ int _type = T40;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:39:5: ( 'attr' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:39:7: 'attr'
+ {
+ match("attr");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T40
+
+ // $ANTLR start T41
+ public final void mT41() throws RecognitionException {
+ try {
+ int _type = T41;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:40:5: ( '[' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:40:7: '['
+ {
+ match('[');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T41
+
+ // $ANTLR start T42
+ public final void mT42() throws RecognitionException {
+ try {
+ int _type = T42;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:41:5: ( '..' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:41:7: '..'
+ {
+ match("..");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T42
+
+ // $ANTLR start T43
+ public final void mT43() throws RecognitionException {
+ try {
+ int _type = T43;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:42:5: ( ']' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:42:7: ']'
+ {
+ match(']');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T43
+
+ // $ANTLR start T44
+ public final void mT44() throws RecognitionException {
+ try {
+ int _type = T44;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:43:5: ( 'local' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:43:7: 'local'
+ {
+ match("local");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T44
+
+ // $ANTLR start T45
+ public final void mT45() throws RecognitionException {
+ try {
+ int _type = T45;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:44:5: ( 'val' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:44:7: 'val'
+ {
+ match("val");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T45
+
+ // $ANTLR start T46
+ public final void mT46() throws RecognitionException {
+ try {
+ int _type = T46;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:45:5: ( 'ref' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:45:7: 'ref'
+ {
+ match("ref");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T46
+
+ // $ANTLR start T47
+ public final void mT47() throws RecognitionException {
+ try {
+ int _type = T47;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:46:5: ( '#' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:46:7: '#'
+ {
+ match('#');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T47
+
+ // $ANTLR start T48
+ public final void mT48() throws RecognitionException {
+ try {
+ int _type = T48;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:47:5: ( 'enum' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:47:7: 'enum'
+ {
+ match("enum");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T48
+
+ // $ANTLR start T49
+ public final void mT49() throws RecognitionException {
+ try {
+ int _type = T49;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:48:5: ( '?' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:48:7: '?'
+ {
+ match('?');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T49
+
+ // $ANTLR start T50
+ public final void mT50() throws RecognitionException {
+ try {
+ int _type = T50;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:49:5: ( 'super' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:49:7: 'super'
+ {
+ match("super");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T50
+
+ // $ANTLR start T51
+ public final void mT51() throws RecognitionException {
+ try {
+ int _type = T51;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:50:5: ( 'op' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:50:7: 'op'
+ {
+ match("op");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T51
+
+ // $ANTLR start T52
+ public final void mT52() throws RecognitionException {
+ try {
+ int _type = T52;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:51:5: ( 'void' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:51:7: 'void'
+ {
+ match("void");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T52
+
+ // $ANTLR start T53
+ public final void mT53() throws RecognitionException {
+ try {
+ int _type = T53;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:52:5: ( 'throws' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:52:7: 'throws'
+ {
+ match("throws");
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T53
+
+ // $ANTLR start T54
+ public final void mT54() throws RecognitionException {
+ try {
+ int _type = T54;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:53:5: ( '.' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:53:7: '.'
+ {
+ match('.');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T54
+
+ // $ANTLR start T55
+ public final void mT55() throws RecognitionException {
+ try {
+ int _type = T55;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:54:5: ( '$' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:54:7: '$'
+ {
+ match('$');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T55
+
+ // $ANTLR start T56
+ public final void mT56() throws RecognitionException {
+ try {
+ int _type = T56;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:55:5: ( '-' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:55:7: '-'
+ {
+ match('-');
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T56
+
+ // $ANTLR start RULE_ID
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3005:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3005:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3005:11: ( '^' )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='^') ) {
+ alt1=1;
+ }
+ switch (alt1) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3005:12: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3005:41: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ID
+
+ // $ANTLR start RULE_INT
+ public final void mRULE_INT() throws RecognitionException {
+ try {
+ int _type = RULE_INT;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3007:10: ( ( '0' .. '9' )+ )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3007:12: ( '0' .. '9' )+
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3007:12: ( '0' .. '9' )+
+ int cnt3=0;
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3007:13: '0' .. '9'
+ {
+ matchRange('0','9');
+
+ }
+ break;
+
+ default :
+ if ( cnt3 >= 1 ) break loop3;
+ EarlyExitException eee =
+ new EarlyExitException(3, input);
+ throw eee;
+ }
+ cnt3++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_INT
+
+ // $ANTLR start RULE_STRING
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:13: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\"' ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0=='\"') ) {
+ alt6=1;
+ }
+ else if ( (LA6_0=='\'') ) {
+ alt6=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("3009:1: RULE_STRING : ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\"' ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\\'' ) )* '\\'' );", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:15: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\"' ) )* '\"'
+ {
+ match('\"');
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:19: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\"' ) )*
+ loop4:
+ do {
+ int alt4=3;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='\\') ) {
+ alt4=1;
+ }
+ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFE')) ) {
+ alt4=2;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:65: ~ ( '\\\\' | '\"' )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+ match('\"');
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:101: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\\'' ) )* '\\''
+ {
+ match('\'');
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:106: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | ~ ( '\\\\' | '\\'' ) )*
+ loop5:
+ do {
+ int alt5=3;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='\\') ) {
+ alt5=1;
+ }
+ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFE')) ) {
+ alt5=2;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:108: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+ {
+ match('\\');
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3009:152: ~ ( '\\\\' | '\\'' )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ match('\'');
+
+ }
+ break;
+
+ }
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_STRING
+
+ // $ANTLR start RULE_ML_COMMENT
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3011:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3011:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3011:24: ( options {greedy=false; } : . )*
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='*') ) {
+ int LA7_1 = input.LA(2);
+
+ if ( (LA7_1=='/') ) {
+ alt7=2;
+ }
+ else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ }
+ else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFE')) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3011:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop7;
+ }
+ } while (true);
+
+ match("*/");
+
+ channel=HIDDEN;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ML_COMMENT
+
+ // $ANTLR start RULE_SL_COMMENT
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:17: ( '//' (~ ( '\\n' | '\\r' ) )* ( ( '\\r' )? '\\n' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:19: '//' (~ ( '\\n' | '\\r' ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:24: (~ ( '\\n' | '\\r' ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFE')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:24: ~ ( '\\n' | '\\r' )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:38: ( ( '\\r' )? '\\n' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:39: ( '\\r' )? '\\n'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:39: ( '\\r' )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='\r') ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3013:39: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+ channel=HIDDEN;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_SL_COMMENT
+
+ // $ANTLR start RULE_WS
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3015:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3015:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3015:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt11=0;
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt11 >= 1 ) break loop11;
+ EarlyExitException eee =
+ new EarlyExitException(11, input);
+ throw eee;
+ }
+ cnt11++;
+ } while (true);
+
+ channel=HIDDEN;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_WS
+
+ // $ANTLR start RULE_ANY_OTHER
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3017:16: ( . )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:3017:18: .
+ {
+ matchAny();
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RULE_ANY_OTHER
+
+ public void mTokens() throws RecognitionException {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:8: ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt12=53;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='i') ) {
+ switch ( input.LA(2) ) {
+ case 'm':
+ {
+ int LA12_44 = input.LA(3);
+
+ if ( (LA12_44=='p') ) {
+ int LA12_93 = input.LA(4);
+
+ if ( (LA12_93=='o') ) {
+ int LA12_119 = input.LA(5);
+
+ if ( (LA12_119=='r') ) {
+ int LA12_143 = input.LA(6);
+
+ if ( (LA12_143=='t') ) {
+ int LA12_164 = input.LA(7);
+
+ if ( ((LA12_164>='0' && LA12_164<='9')||(LA12_164>='A' && LA12_164<='Z')||LA12_164=='_'||(LA12_164>='a' && LA12_164<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=1;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_45 = input.LA(3);
+
+ if ( (LA12_45=='t') ) {
+ int LA12_94 = input.LA(4);
+
+ if ( (LA12_94=='e') ) {
+ int LA12_120 = input.LA(5);
+
+ if ( (LA12_120=='r') ) {
+ int LA12_144 = input.LA(6);
+
+ if ( (LA12_144=='f') ) {
+ int LA12_165 = input.LA(7);
+
+ if ( (LA12_165=='a') ) {
+ int LA12_183 = input.LA(8);
+
+ if ( (LA12_183=='c') ) {
+ int LA12_196 = input.LA(9);
+
+ if ( (LA12_196=='e') ) {
+ int LA12_207 = input.LA(10);
+
+ if ( ((LA12_207>='0' && LA12_207<='9')||(LA12_207>='A' && LA12_207<='Z')||LA12_207=='_'||(LA12_207>='a' && LA12_207<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=17;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='=') ) {
+ alt12=2;
+ }
+ else if ( (LA12_0==';') ) {
+ alt12=3;
+ }
+ else if ( (LA12_0=='p') ) {
+ int LA12_4 = input.LA(2);
+
+ if ( (LA12_4=='a') ) {
+ int LA12_49 = input.LA(3);
+
+ if ( (LA12_49=='c') ) {
+ int LA12_95 = input.LA(4);
+
+ if ( (LA12_95=='k') ) {
+ int LA12_121 = input.LA(5);
+
+ if ( (LA12_121=='a') ) {
+ int LA12_145 = input.LA(6);
+
+ if ( (LA12_145=='g') ) {
+ int LA12_166 = input.LA(7);
+
+ if ( (LA12_166=='e') ) {
+ int LA12_184 = input.LA(8);
+
+ if ( ((LA12_184>='0' && LA12_184<='9')||(LA12_184>='A' && LA12_184<='Z')||LA12_184=='_'||(LA12_184>='a' && LA12_184<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=4;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='n') ) {
+ int LA12_5 = input.LA(2);
+
+ if ( (LA12_5=='s') ) {
+ switch ( input.LA(3) ) {
+ case 'P':
+ {
+ int LA12_96 = input.LA(4);
+
+ if ( (LA12_96=='r') ) {
+ int LA12_122 = input.LA(5);
+
+ if ( (LA12_122=='e') ) {
+ int LA12_146 = input.LA(6);
+
+ if ( (LA12_146=='f') ) {
+ int LA12_167 = input.LA(7);
+
+ if ( (LA12_167=='i') ) {
+ int LA12_185 = input.LA(8);
+
+ if ( (LA12_185=='x') ) {
+ int LA12_198 = input.LA(9);
+
+ if ( ((LA12_198>='0' && LA12_198<='9')||(LA12_198>='A' && LA12_198<='Z')||LA12_198=='_'||(LA12_198>='a' && LA12_198<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=6;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'U':
+ {
+ int LA12_97 = input.LA(4);
+
+ if ( (LA12_97=='R') ) {
+ int LA12_123 = input.LA(5);
+
+ if ( (LA12_123=='I') ) {
+ int LA12_147 = input.LA(6);
+
+ if ( ((LA12_147>='0' && LA12_147<='9')||(LA12_147>='A' && LA12_147<='Z')||LA12_147=='_'||(LA12_147>='a' && LA12_147<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=5;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='{') ) {
+ alt12=7;
+ }
+ else if ( (LA12_0=='}') ) {
+ alt12=8;
+ }
+ else if ( (LA12_0=='!') ) {
+ int LA12_8 = input.LA(2);
+
+ if ( (LA12_8=='s') ) {
+ alt12=9;
+ }
+ else {
+ alt12=53;}
+ }
+ else if ( (LA12_0=='d') ) {
+ switch ( input.LA(2) ) {
+ case 'e':
+ {
+ int LA12_54 = input.LA(3);
+
+ if ( (LA12_54=='r') ) {
+ int LA12_98 = input.LA(4);
+
+ if ( (LA12_98=='i') ) {
+ int LA12_124 = input.LA(5);
+
+ if ( (LA12_124=='v') ) {
+ int LA12_148 = input.LA(6);
+
+ if ( (LA12_148=='e') ) {
+ int LA12_169 = input.LA(7);
+
+ if ( (LA12_169=='d') ) {
+ int LA12_186 = input.LA(8);
+
+ if ( ((LA12_186>='0' && LA12_186<='9')||(LA12_186>='A' && LA12_186<='Z')||LA12_186=='_'||(LA12_186>='a' && LA12_186<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=29;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'a':
+ {
+ int LA12_55 = input.LA(3);
+
+ if ( (LA12_55=='t') ) {
+ int LA12_99 = input.LA(4);
+
+ if ( (LA12_99=='a') ) {
+ int LA12_125 = input.LA(5);
+
+ if ( (LA12_125=='t') ) {
+ int LA12_149 = input.LA(6);
+
+ if ( (LA12_149=='y') ) {
+ int LA12_170 = input.LA(7);
+
+ if ( (LA12_170=='p') ) {
+ int LA12_187 = input.LA(8);
+
+ if ( (LA12_187=='e') ) {
+ int LA12_200 = input.LA(9);
+
+ if ( ((LA12_200>='0' && LA12_200<='9')||(LA12_200>='A' && LA12_200<='Z')||LA12_200=='_'||(LA12_200>='a' && LA12_200<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=10;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0==':') ) {
+ alt12=11;
+ }
+ else if ( (LA12_0=='@') ) {
+ alt12=12;
+ }
+ else if ( (LA12_0=='(') ) {
+ alt12=13;
+ }
+ else if ( (LA12_0==',') ) {
+ alt12=14;
+ }
+ else if ( (LA12_0==')') ) {
+ alt12=15;
+ }
+ else if ( (LA12_0=='a') ) {
+ switch ( input.LA(2) ) {
+ case 't':
+ {
+ int LA12_61 = input.LA(3);
+
+ if ( (LA12_61=='t') ) {
+ int LA12_100 = input.LA(4);
+
+ if ( (LA12_100=='r') ) {
+ int LA12_126 = input.LA(5);
+
+ if ( ((LA12_126>='0' && LA12_126<='9')||(LA12_126>='A' && LA12_126<='Z')||LA12_126=='_'||(LA12_126>='a' && LA12_126<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=30;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'b':
+ {
+ int LA12_62 = input.LA(3);
+
+ if ( (LA12_62=='s') ) {
+ int LA12_101 = input.LA(4);
+
+ if ( (LA12_101=='t') ) {
+ int LA12_127 = input.LA(5);
+
+ if ( (LA12_127=='r') ) {
+ int LA12_151 = input.LA(6);
+
+ if ( (LA12_151=='a') ) {
+ int LA12_171 = input.LA(7);
+
+ if ( (LA12_171=='c') ) {
+ int LA12_188 = input.LA(8);
+
+ if ( (LA12_188=='t') ) {
+ int LA12_201 = input.LA(9);
+
+ if ( ((LA12_201>='0' && LA12_201<='9')||(LA12_201>='A' && LA12_201<='Z')||LA12_201=='_'||(LA12_201>='a' && LA12_201<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=16;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='c') ) {
+ int LA12_16 = input.LA(2);
+
+ if ( (LA12_16=='l') ) {
+ int LA12_63 = input.LA(3);
+
+ if ( (LA12_63=='a') ) {
+ int LA12_102 = input.LA(4);
+
+ if ( (LA12_102=='s') ) {
+ int LA12_128 = input.LA(5);
+
+ if ( (LA12_128=='s') ) {
+ int LA12_152 = input.LA(6);
+
+ if ( ((LA12_152>='0' && LA12_152<='9')||(LA12_152>='A' && LA12_152<='Z')||LA12_152=='_'||(LA12_152>='a' && LA12_152<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=18;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='<') ) {
+ alt12=19;
+ }
+ else if ( (LA12_0=='>') ) {
+ alt12=20;
+ }
+ else if ( (LA12_0=='e') ) {
+ switch ( input.LA(2) ) {
+ case 'x':
+ {
+ int LA12_66 = input.LA(3);
+
+ if ( (LA12_66=='t') ) {
+ int LA12_103 = input.LA(4);
+
+ if ( (LA12_103=='e') ) {
+ int LA12_129 = input.LA(5);
+
+ if ( (LA12_129=='n') ) {
+ int LA12_153 = input.LA(6);
+
+ if ( (LA12_153=='d') ) {
+ int LA12_173 = input.LA(7);
+
+ if ( (LA12_173=='s') ) {
+ int LA12_189 = input.LA(8);
+
+ if ( ((LA12_189>='0' && LA12_189<='9')||(LA12_189>='A' && LA12_189<='Z')||LA12_189=='_'||(LA12_189>='a' && LA12_189<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=21;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'n':
+ {
+ int LA12_67 = input.LA(3);
+
+ if ( (LA12_67=='u') ) {
+ int LA12_104 = input.LA(4);
+
+ if ( (LA12_104=='m') ) {
+ int LA12_130 = input.LA(5);
+
+ if ( ((LA12_130>='0' && LA12_130<='9')||(LA12_130>='A' && LA12_130<='Z')||LA12_130=='_'||(LA12_130>='a' && LA12_130<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=38;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='I') ) {
+ int LA12_20 = input.LA(2);
+
+ if ( (LA12_20=='D') ) {
+ int LA12_68 = input.LA(3);
+
+ if ( ((LA12_68>='0' && LA12_68<='9')||(LA12_68>='A' && LA12_68<='Z')||LA12_68=='_'||(LA12_68>='a' && LA12_68<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=22;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='b') ) {
+ int LA12_21 = input.LA(2);
+
+ if ( (LA12_21=='a') ) {
+ int LA12_69 = input.LA(3);
+
+ if ( (LA12_69=='g') ) {
+ int LA12_106 = input.LA(4);
+
+ if ( ((LA12_106>='0' && LA12_106<='9')||(LA12_106>='A' && LA12_106<='Z')||LA12_106=='_'||(LA12_106>='a' && LA12_106<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=23;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='r') ) {
+ switch ( input.LA(2) ) {
+ case 'e':
+ {
+ switch ( input.LA(3) ) {
+ case 'f':
+ {
+ int LA12_107 = input.LA(4);
+
+ if ( ((LA12_107>='0' && LA12_107<='9')||(LA12_107>='A' && LA12_107<='Z')||LA12_107=='_'||(LA12_107>='a' && LA12_107<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=36;}
+ }
+ break;
+ case 'a':
+ {
+ int LA12_108 = input.LA(4);
+
+ if ( (LA12_108=='d') ) {
+ int LA12_133 = input.LA(5);
+
+ if ( (LA12_133=='o') ) {
+ int LA12_155 = input.LA(6);
+
+ if ( (LA12_155=='n') ) {
+ int LA12_174 = input.LA(7);
+
+ if ( (LA12_174=='l') ) {
+ int LA12_190 = input.LA(8);
+
+ if ( (LA12_190=='y') ) {
+ int LA12_203 = input.LA(9);
+
+ if ( ((LA12_203>='0' && LA12_203<='9')||(LA12_203>='A' && LA12_203<='Z')||LA12_203=='_'||(LA12_203>='a' && LA12_203<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=25;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ break;
+ case 'a':
+ {
+ int LA12_71 = input.LA(3);
+
+ if ( (LA12_71=='n') ) {
+ int LA12_109 = input.LA(4);
+
+ if ( (LA12_109=='d') ) {
+ int LA12_134 = input.LA(5);
+
+ if ( (LA12_134=='o') ) {
+ int LA12_156 = input.LA(6);
+
+ if ( (LA12_156=='m') ) {
+ int LA12_175 = input.LA(7);
+
+ if ( ((LA12_175>='0' && LA12_175<='9')||(LA12_175>='A' && LA12_175<='Z')||LA12_175=='_'||(LA12_175>='a' && LA12_175<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=24;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='v') ) {
+ switch ( input.LA(2) ) {
+ case 'o':
+ {
+ switch ( input.LA(3) ) {
+ case 'i':
+ {
+ int LA12_110 = input.LA(4);
+
+ if ( (LA12_110=='d') ) {
+ int LA12_135 = input.LA(5);
+
+ if ( ((LA12_135>='0' && LA12_135<='9')||(LA12_135>='A' && LA12_135<='Z')||LA12_135=='_'||(LA12_135>='a' && LA12_135<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=42;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'l':
+ {
+ int LA12_111 = input.LA(4);
+
+ if ( (LA12_111=='a') ) {
+ int LA12_136 = input.LA(5);
+
+ if ( (LA12_136=='t') ) {
+ int LA12_158 = input.LA(6);
+
+ if ( (LA12_158=='i') ) {
+ int LA12_176 = input.LA(7);
+
+ if ( (LA12_176=='l') ) {
+ int LA12_192 = input.LA(8);
+
+ if ( (LA12_192=='e') ) {
+ int LA12_204 = input.LA(9);
+
+ if ( ((LA12_204>='0' && LA12_204<='9')||(LA12_204>='A' && LA12_204<='Z')||LA12_204=='_'||(LA12_204>='a' && LA12_204<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=26;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ break;
+ case 'a':
+ {
+ int LA12_73 = input.LA(3);
+
+ if ( (LA12_73=='l') ) {
+ int LA12_112 = input.LA(4);
+
+ if ( ((LA12_112>='0' && LA12_112<='9')||(LA12_112>='A' && LA12_112<='Z')||LA12_112=='_'||(LA12_112>='a' && LA12_112<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=35;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='t') ) {
+ switch ( input.LA(2) ) {
+ case 'r':
+ {
+ int LA12_74 = input.LA(3);
+
+ if ( (LA12_74=='a') ) {
+ int LA12_113 = input.LA(4);
+
+ if ( (LA12_113=='n') ) {
+ int LA12_138 = input.LA(5);
+
+ if ( (LA12_138=='s') ) {
+ int LA12_159 = input.LA(6);
+
+ if ( (LA12_159=='i') ) {
+ int LA12_177 = input.LA(7);
+
+ if ( (LA12_177=='e') ) {
+ int LA12_193 = input.LA(8);
+
+ if ( (LA12_193=='n') ) {
+ int LA12_205 = input.LA(9);
+
+ if ( (LA12_205=='t') ) {
+ int LA12_213 = input.LA(10);
+
+ if ( ((LA12_213>='0' && LA12_213<='9')||(LA12_213>='A' && LA12_213<='Z')||LA12_213=='_'||(LA12_213>='a' && LA12_213<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=27;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ case 'h':
+ {
+ int LA12_75 = input.LA(3);
+
+ if ( (LA12_75=='r') ) {
+ int LA12_114 = input.LA(4);
+
+ if ( (LA12_114=='o') ) {
+ int LA12_139 = input.LA(5);
+
+ if ( (LA12_139=='w') ) {
+ int LA12_160 = input.LA(6);
+
+ if ( (LA12_160=='s') ) {
+ int LA12_178 = input.LA(7);
+
+ if ( ((LA12_178>='0' && LA12_178<='9')||(LA12_178>='A' && LA12_178<='Z')||LA12_178=='_'||(LA12_178>='a' && LA12_178<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=43;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ break;
+ default:
+ alt12=47;}
+
+ }
+ else if ( (LA12_0=='u') ) {
+ int LA12_25 = input.LA(2);
+
+ if ( (LA12_25=='n') ) {
+ int LA12_76 = input.LA(3);
+
+ if ( (LA12_76=='s') ) {
+ int LA12_115 = input.LA(4);
+
+ if ( (LA12_115=='e') ) {
+ int LA12_140 = input.LA(5);
+
+ if ( (LA12_140=='t') ) {
+ int LA12_161 = input.LA(6);
+
+ if ( (LA12_161=='t') ) {
+ int LA12_179 = input.LA(7);
+
+ if ( (LA12_179=='a') ) {
+ int LA12_195 = input.LA(8);
+
+ if ( (LA12_195=='b') ) {
+ int LA12_206 = input.LA(9);
+
+ if ( (LA12_206=='l') ) {
+ int LA12_214 = input.LA(10);
+
+ if ( (LA12_214=='e') ) {
+ int LA12_217 = input.LA(11);
+
+ if ( ((LA12_217>='0' && LA12_217<='9')||(LA12_217>='A' && LA12_217<='Z')||LA12_217=='_'||(LA12_217>='a' && LA12_217<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=28;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='[') ) {
+ alt12=31;
+ }
+ else if ( (LA12_0=='.') ) {
+ int LA12_27 = input.LA(2);
+
+ if ( (LA12_27=='.') ) {
+ alt12=32;
+ }
+ else {
+ alt12=44;}
+ }
+ else if ( (LA12_0==']') ) {
+ alt12=33;
+ }
+ else if ( (LA12_0=='l') ) {
+ int LA12_29 = input.LA(2);
+
+ if ( (LA12_29=='o') ) {
+ int LA12_81 = input.LA(3);
+
+ if ( (LA12_81=='c') ) {
+ int LA12_116 = input.LA(4);
+
+ if ( (LA12_116=='a') ) {
+ int LA12_141 = input.LA(5);
+
+ if ( (LA12_141=='l') ) {
+ int LA12_162 = input.LA(6);
+
+ if ( ((LA12_162>='0' && LA12_162<='9')||(LA12_162>='A' && LA12_162<='Z')||LA12_162=='_'||(LA12_162>='a' && LA12_162<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=34;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='#') ) {
+ alt12=37;
+ }
+ else if ( (LA12_0=='?') ) {
+ alt12=39;
+ }
+ else if ( (LA12_0=='s') ) {
+ int LA12_32 = input.LA(2);
+
+ if ( (LA12_32=='u') ) {
+ int LA12_84 = input.LA(3);
+
+ if ( (LA12_84=='p') ) {
+ int LA12_117 = input.LA(4);
+
+ if ( (LA12_117=='e') ) {
+ int LA12_142 = input.LA(5);
+
+ if ( (LA12_142=='r') ) {
+ int LA12_163 = input.LA(6);
+
+ if ( ((LA12_163>='0' && LA12_163<='9')||(LA12_163>='A' && LA12_163<='Z')||LA12_163=='_'||(LA12_163>='a' && LA12_163<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=40;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='o') ) {
+ int LA12_33 = input.LA(2);
+
+ if ( (LA12_33=='p') ) {
+ int LA12_85 = input.LA(3);
+
+ if ( ((LA12_85>='0' && LA12_85<='9')||(LA12_85>='A' && LA12_85<='Z')||LA12_85=='_'||(LA12_85>='a' && LA12_85<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=41;}
+ }
+ else {
+ alt12=47;}
+ }
+ else if ( (LA12_0=='$') ) {
+ alt12=45;
+ }
+ else if ( (LA12_0=='-') ) {
+ alt12=46;
+ }
+ else if ( (LA12_0=='^') ) {
+ int LA12_36 = input.LA(2);
+
+ if ( ((LA12_36>='A' && LA12_36<='Z')||LA12_36=='_'||(LA12_36>='a' && LA12_36<='z')) ) {
+ alt12=47;
+ }
+ else {
+ alt12=53;}
+ }
+ else if ( ((LA12_0>='A' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='f' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='k')||LA12_0=='m'||LA12_0=='q'||(LA12_0>='w' && LA12_0<='z')) ) {
+ alt12=47;
+ }
+ else if ( ((LA12_0>='0' && LA12_0<='9')) ) {
+ alt12=48;
+ }
+ else if ( (LA12_0=='\"') ) {
+ int LA12_39 = input.LA(2);
+
+ if ( ((LA12_39>='\u0000' && LA12_39<='\uFFFE')) ) {
+ alt12=49;
+ }
+ else {
+ alt12=53;}
+ }
+ else if ( (LA12_0=='\'') ) {
+ int LA12_40 = input.LA(2);
+
+ if ( ((LA12_40>='\u0000' && LA12_40<='\uFFFE')) ) {
+ alt12=49;
+ }
+ else {
+ alt12=53;}
+ }
+ else if ( (LA12_0=='/') ) {
+ switch ( input.LA(2) ) {
+ case '*':
+ {
+ alt12=50;
+ }
+ break;
+ case '/':
+ {
+ alt12=51;
+ }
+ break;
+ default:
+ alt12=53;}
+
+ }
+ else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
+ alt12=52;
+ }
+ else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||(LA12_0>='%' && LA12_0<='&')||(LA12_0>='*' && LA12_0<='+')||LA12_0=='\\'||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFE')) ) {
+ alt12=53;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1:1: Tokens : ( T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );", 12, 0, input);
+
+ throw nvae;
+ }
+ switch (alt12) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:10: T11
+ {
+ mT11();
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:14: T12
+ {
+ mT12();
+
+ }
+ break;
+ case 3 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:18: T13
+ {
+ mT13();
+
+ }
+ break;
+ case 4 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:22: T14
+ {
+ mT14();
+
+ }
+ break;
+ case 5 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:26: T15
+ {
+ mT15();
+
+ }
+ break;
+ case 6 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:30: T16
+ {
+ mT16();
+
+ }
+ break;
+ case 7 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:34: T17
+ {
+ mT17();
+
+ }
+ break;
+ case 8 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:38: T18
+ {
+ mT18();
+
+ }
+ break;
+ case 9 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:42: T19
+ {
+ mT19();
+
+ }
+ break;
+ case 10 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:46: T20
+ {
+ mT20();
+
+ }
+ break;
+ case 11 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:50: T21
+ {
+ mT21();
+
+ }
+ break;
+ case 12 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:54: T22
+ {
+ mT22();
+
+ }
+ break;
+ case 13 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:58: T23
+ {
+ mT23();
+
+ }
+ break;
+ case 14 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:62: T24
+ {
+ mT24();
+
+ }
+ break;
+ case 15 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:66: T25
+ {
+ mT25();
+
+ }
+ break;
+ case 16 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:70: T26
+ {
+ mT26();
+
+ }
+ break;
+ case 17 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:74: T27
+ {
+ mT27();
+
+ }
+ break;
+ case 18 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:78: T28
+ {
+ mT28();
+
+ }
+ break;
+ case 19 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:82: T29
+ {
+ mT29();
+
+ }
+ break;
+ case 20 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:86: T30
+ {
+ mT30();
+
+ }
+ break;
+ case 21 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:90: T31
+ {
+ mT31();
+
+ }
+ break;
+ case 22 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:94: T32
+ {
+ mT32();
+
+ }
+ break;
+ case 23 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:98: T33
+ {
+ mT33();
+
+ }
+ break;
+ case 24 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:102: T34
+ {
+ mT34();
+
+ }
+ break;
+ case 25 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:106: T35
+ {
+ mT35();
+
+ }
+ break;
+ case 26 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:110: T36
+ {
+ mT36();
+
+ }
+ break;
+ case 27 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:114: T37
+ {
+ mT37();
+
+ }
+ break;
+ case 28 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:118: T38
+ {
+ mT38();
+
+ }
+ break;
+ case 29 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:122: T39
+ {
+ mT39();
+
+ }
+ break;
+ case 30 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:126: T40
+ {
+ mT40();
+
+ }
+ break;
+ case 31 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:130: T41
+ {
+ mT41();
+
+ }
+ break;
+ case 32 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:134: T42
+ {
+ mT42();
+
+ }
+ break;
+ case 33 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:138: T43
+ {
+ mT43();
+
+ }
+ break;
+ case 34 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:142: T44
+ {
+ mT44();
+
+ }
+ break;
+ case 35 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:146: T45
+ {
+ mT45();
+
+ }
+ break;
+ case 36 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:150: T46
+ {
+ mT46();
+
+ }
+ break;
+ case 37 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:154: T47
+ {
+ mT47();
+
+ }
+ break;
+ case 38 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:158: T48
+ {
+ mT48();
+
+ }
+ break;
+ case 39 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:162: T49
+ {
+ mT49();
+
+ }
+ break;
+ case 40 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:166: T50
+ {
+ mT50();
+
+ }
+ break;
+ case 41 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:170: T51
+ {
+ mT51();
+
+ }
+ break;
+ case 42 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:174: T52
+ {
+ mT52();
+
+ }
+ break;
+ case 43 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:178: T53
+ {
+ mT53();
+
+ }
+ break;
+ case 44 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:182: T54
+ {
+ mT54();
+
+ }
+ break;
+ case 45 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:186: T55
+ {
+ mT55();
+
+ }
+ break;
+ case 46 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:190: T56
+ {
+ mT56();
+
+ }
+ break;
+ case 47 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:194: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 48 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:202: RULE_INT
+ {
+ mRULE_INT();
+
+ }
+ break;
+ case 49 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:211: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 50 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:223: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 51 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:239: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 52 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:255: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 53 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1:263: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslParser.java b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslParser.java
new file mode 100644
index 0000000..87d580a
--- /dev/null
+++ b/examples/org.eclipse.xtext.example.ecoredsl/src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDslParser.java
@@ -0,0 +1,7418 @@
+package org.eclipse.xtext.example.parser.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.xtext.parsetree.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.xtext.conversion.ValueConverterException;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class InternalEcoreDslParser extends AbstractInternalAntlrParser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'import'", "'='", "';'", "'package'", "'nsURI'", "'nsPrefix'", "'{'", "'}'", "'!serializable'", "'datatype'", "':'", "'@'", "'('", "','", "')'", "'abstract'", "'interface'", "'class'", "'<'", "'>'", "'extends'", "'ID'", "'bag'", "'random'", "'readonly'", "'volatile'", "'transient'", "'unsettable'", "'derived'", "'attr'", "'['", "'..'", "']'", "'local'", "'val'", "'ref'", "'#'", "'enum'", "'?'", "'super'", "'op'", "'void'", "'throws'", "'.'", "'$'", "'-'"
+ };
+ public static final int RULE_ML_COMMENT=7;
+ public static final int RULE_ID=4;
+ public static final int RULE_WS=9;
+ public static final int EOF=-1;
+ public static final int RULE_INT=6;
+ public static final int RULE_STRING=5;
+ public static final int RULE_ANY_OTHER=10;
+ public static final int RULE_SL_COMMENT=8;
+
+ public InternalEcoreDslParser(TokenStream input) {
+ super(input);
+ }
+
+
+ public String[] getTokenNames() { return tokenNames; }
+ public String getGrammarFileName() { return "./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g"; }
+
+
+
+ public InternalEcoreDslParser(TokenStream input, IAstFactory factory, Grammar g) {
+ this(input);
+ this.factory = factory;
+ grammar = g;
+ }
+
+ @Override
+ protected InputStream getTokenFile() {
+ ClassLoader classLoader = InternalEcoreDslParser.class.getClassLoader();
+ return classLoader.getResourceAsStream("org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.tokens");
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "EcoreDsl";
+ }
+
+
+
+ // $ANTLR start entryRuleEcoreDsl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:68:1: entryRuleEcoreDsl returns [EObject current=null] : iv_ruleEcoreDsl= ruleEcoreDsl EOF ;
+ public final EObject entryRuleEcoreDsl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEcoreDsl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:68:50: (iv_ruleEcoreDsl= ruleEcoreDsl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:69:2: iv_ruleEcoreDsl= ruleEcoreDsl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEcoreDsl_in_entryRuleEcoreDsl72);
+ iv_ruleEcoreDsl=ruleEcoreDsl();
+ _fsp--;
+
+ current =iv_ruleEcoreDsl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEcoreDsl82);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEcoreDsl
+
+
+ // $ANTLR start ruleEcoreDsl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:76:1: ruleEcoreDsl returns [EObject current=null] : ( (lv_imports= ruleImportStatementDecl )* (lv_package= ruleEPackageDecl ) ) ;
+ public final EObject ruleEcoreDsl() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_imports = null;
+
+ EObject lv_package = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:80:6: ( ( (lv_imports= ruleImportStatementDecl )* (lv_package= ruleEPackageDecl ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:81:1: ( (lv_imports= ruleImportStatementDecl )* (lv_package= ruleEPackageDecl ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:81:1: ( (lv_imports= ruleImportStatementDecl )* (lv_package= ruleEPackageDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:81:2: (lv_imports= ruleImportStatementDecl )* (lv_package= ruleEPackageDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:81:2: (lv_imports= ruleImportStatementDecl )*
+ loop1:
+ do {
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==11) ) {
+ alt1=1;
+ }
+
+
+ switch (alt1) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:84:6: lv_imports= ruleImportStatementDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0/@alternatives/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleImportStatementDecl_in_ruleEcoreDsl141);
+ lv_imports=ruleImportStatementDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EcoreDsl");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "imports", lv_imports, "ImportStatementDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop1;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:102:3: (lv_package= ruleEPackageDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:105:6: lv_package= ruleEPackageDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.0/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEPackageDecl_in_ruleEcoreDsl180);
+ lv_package=ruleEPackageDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EcoreDsl");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "package", lv_package, "EPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEcoreDsl
+
+
+ // $ANTLR start entryRuleImportStatementDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:132:1: entryRuleImportStatementDecl returns [EObject current=null] : iv_ruleImportStatementDecl= ruleImportStatementDecl EOF ;
+ public final EObject entryRuleImportStatementDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleImportStatementDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:132:61: (iv_ruleImportStatementDecl= ruleImportStatementDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:133:2: iv_ruleImportStatementDecl= ruleImportStatementDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleImportStatementDecl_in_entryRuleImportStatementDecl219);
+ iv_ruleImportStatementDecl=ruleImportStatementDecl();
+ _fsp--;
+
+ current =iv_ruleImportStatementDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleImportStatementDecl229);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleImportStatementDecl
+
+
+ // $ANTLR start ruleImportStatementDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:140:1: ruleImportStatementDecl returns [EObject current=null] : ( ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) ) ';' ) ;
+ public final EObject ruleImportStatementDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_alias=null;
+ Token lv_importURI=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:144:6: ( ( ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:1: ( ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:1: ( ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:2: ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:2: ( ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:3: ( 'import' ( (lv_alias= RULE_ID ) '=' )? ) (lv_importURI= RULE_STRING )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:3: ( 'import' ( (lv_alias= RULE_ID ) '=' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:145:4: 'import' ( (lv_alias= RULE_ID ) '=' )?
+ {
+ match(input,11,FOLLOW_11_in_ruleImportStatementDecl265);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:149:1: ( (lv_alias= RULE_ID ) '=' )?
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==RULE_ID) ) {
+ alt2=1;
+ }
+ switch (alt2) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:149:2: (lv_alias= RULE_ID ) '='
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:149:2: (lv_alias= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:151:6: lv_alias= RULE_ID
+ {
+ lv_alias=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImportStatementDecl287);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "alias");
+
+
+ if (current==null) {
+ current = factory.create("ImportStatementDecl");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "alias", lv_alias, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleImportStatementDecl307);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:173:4: (lv_importURI= RULE_STRING )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:175:6: lv_importURI= RULE_STRING
+ {
+ lv_importURI=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImportStatementDecl331);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "importURI");
+
+
+ if (current==null) {
+ current = factory.create("ImportStatementDecl");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "importURI", lv_importURI, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleImportStatementDecl352);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.1/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleImportStatementDecl
+
+
+ // $ANTLR start entryRuleEPackageDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:206:1: entryRuleEPackageDecl returns [EObject current=null] : iv_ruleEPackageDecl= ruleEPackageDecl EOF ;
+ public final EObject entryRuleEPackageDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEPackageDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:206:54: (iv_ruleEPackageDecl= ruleEPackageDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:207:2: iv_ruleEPackageDecl= ruleEPackageDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEPackageDecl_in_entryRuleEPackageDecl387);
+ iv_ruleEPackageDecl=ruleEPackageDecl();
+ _fsp--;
+
+ current =iv_ruleEPackageDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEPackageDecl397);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEPackageDecl
+
+
+ // $ANTLR start ruleEPackageDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:214:1: ruleEPackageDecl returns [EObject current=null] : ( ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' ) ;
+ public final EObject ruleEPackageDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_nsURI=null;
+ EObject lv_eAnnotations = null;
+
+ AntlrDatatypeRuleToken lv_name = null;
+
+ AntlrDatatypeRuleToken lv_nsPrefix = null;
+
+ EObject lv_eSubpackages = null;
+
+ EObject lv_eClassifiers = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:218:6: ( ( ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:1: ( ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:1: ( ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:2: ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:2: ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:3: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:3: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:4: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) ) '{'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:4: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:5: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' ) (lv_nsPrefix= ruleQID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:5: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '=' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:6: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' ) '='
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:6: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:7: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) ) 'nsPrefix'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:7: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:8: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' ) (lv_nsURI= RULE_STRING )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:8: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '=' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:9: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' ) '='
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:9: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:10: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) ) 'nsURI'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:10: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:11: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= ruleQID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:11: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:12: (lv_eAnnotations= ruleEAnnotationDecl )* 'package'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:219:12: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==22) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:222:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEPackageDecl466);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+ match(input,14,FOLLOW_14_in_ruleEPackageDecl480);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:244:2: (lv_name= ruleQID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:247:6: lv_name= ruleQID
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleQID_in_ruleEPackageDecl515);
+ lv_name=ruleQID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,15,FOLLOW_15_in_ruleEPackageDecl529);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleEPackageDecl539);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:273:2: (lv_nsURI= RULE_STRING )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:275:6: lv_nsURI= RULE_STRING
+ {
+ lv_nsURI=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEPackageDecl561);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "nsURI");
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "nsURI", lv_nsURI, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,16,FOLLOW_16_in_ruleEPackageDecl582);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleEPackageDecl592);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:301:2: (lv_nsPrefix= ruleQID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:304:6: lv_nsPrefix= ruleQID
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleQID_in_ruleEPackageDecl627);
+ lv_nsPrefix=ruleQID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "nsPrefix", lv_nsPrefix, "QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,17,FOLLOW_17_in_ruleEPackageDecl641);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:326:2: ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*
+ loop4:
+ do {
+ int alt4=3;
+ alt4 = dfa4.predict(input);
+ switch (alt4) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:326:3: (lv_eSubpackages= ruleSubEPackageDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:326:3: (lv_eSubpackages= ruleSubEPackageDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:329:6: lv_eSubpackages= ruleSubEPackageDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSubEPackageDecl_in_ruleEPackageDecl677);
+ lv_eSubpackages=ruleSubEPackageDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eSubpackages", lv_eSubpackages, "SubEPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:348:6: (lv_eClassifiers= ruleEClassifierDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:348:6: (lv_eClassifiers= ruleEClassifierDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:351:6: lv_eClassifiers= ruleEClassifierDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEClassifierDecl_in_ruleEPackageDecl721);
+ lv_eClassifiers=ruleEClassifierDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eClassifiers", lv_eClassifiers, "EClassifierDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,18,FOLLOW_18_in_ruleEPackageDecl737);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.2/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEPackageDecl
+
+
+ // $ANTLR start entryRuleSubEPackageDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:382:1: entryRuleSubEPackageDecl returns [EObject current=null] : iv_ruleSubEPackageDecl= ruleSubEPackageDecl EOF ;
+ public final EObject entryRuleSubEPackageDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleSubEPackageDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:382:57: (iv_ruleSubEPackageDecl= ruleSubEPackageDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:383:2: iv_ruleSubEPackageDecl= ruleSubEPackageDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleSubEPackageDecl_in_entryRuleSubEPackageDecl772);
+ iv_ruleSubEPackageDecl=ruleSubEPackageDecl();
+ _fsp--;
+
+ current =iv_ruleSubEPackageDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSubEPackageDecl782);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSubEPackageDecl
+
+
+ // $ANTLR start ruleSubEPackageDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:390:1: ruleSubEPackageDecl returns [EObject current=null] : ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' ) ;
+ public final EObject ruleSubEPackageDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eSubpackages = null;
+
+ EObject lv_eClassifiers = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:394:6: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:1: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:1: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:2: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* ) '}'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:2: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:3: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' ) ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:3: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:4: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) ) '{'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:4: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:5: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:5: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'package' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:6: (lv_eAnnotations= ruleEAnnotationDecl )* 'package'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:395:6: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==22) ) {
+ alt5=1;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:398:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleSubEPackageDecl845);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ match(input,14,FOLLOW_14_in_ruleSubEPackageDecl859);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:420:2: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:422:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSubEPackageDecl881);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,17,FOLLOW_17_in_ruleSubEPackageDecl902);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:444:2: ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*
+ loop6:
+ do {
+ int alt6=3;
+ alt6 = dfa6.predict(input);
+ switch (alt6) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:444:3: (lv_eSubpackages= ruleSubEPackageDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:444:3: (lv_eSubpackages= ruleSubEPackageDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:447:6: lv_eSubpackages= ruleSubEPackageDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSubEPackageDecl_in_ruleSubEPackageDecl938);
+ lv_eSubpackages=ruleSubEPackageDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eSubpackages", lv_eSubpackages, "SubEPackageDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:466:6: (lv_eClassifiers= ruleEClassifierDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:466:6: (lv_eClassifiers= ruleEClassifierDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:469:6: lv_eClassifiers= ruleEClassifierDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEClassifierDecl_in_ruleSubEPackageDecl982);
+ lv_eClassifiers=ruleEClassifierDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EPackage");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eClassifiers", lv_eClassifiers, "EClassifierDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop6;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,18,FOLLOW_18_in_ruleSubEPackageDecl998);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.3/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSubEPackageDecl
+
+
+ // $ANTLR start entryRuleEClassifierDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:500:1: entryRuleEClassifierDecl returns [EObject current=null] : iv_ruleEClassifierDecl= ruleEClassifierDecl EOF ;
+ public final EObject entryRuleEClassifierDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEClassifierDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:500:57: (iv_ruleEClassifierDecl= ruleEClassifierDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:501:2: iv_ruleEClassifierDecl= ruleEClassifierDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEClassifierDecl_in_entryRuleEClassifierDecl1033);
+ iv_ruleEClassifierDecl=ruleEClassifierDecl();
+ _fsp--;
+
+ current =iv_ruleEClassifierDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEClassifierDecl1043);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEClassifierDecl
+
+
+ // $ANTLR start ruleEClassifierDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:508:1: ruleEClassifierDecl returns [EObject current=null] : (this_EClassDecl= ruleEClassDecl | this_EDataTypeDecl= ruleEDataTypeDecl ) ;
+ public final EObject ruleEClassifierDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_EClassDecl = null;
+
+ EObject this_EDataTypeDecl = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:512:6: ( (this_EClassDecl= ruleEClassDecl | this_EDataTypeDecl= ruleEDataTypeDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:513:1: (this_EClassDecl= ruleEClassDecl | this_EDataTypeDecl= ruleEDataTypeDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:513:1: (this_EClassDecl= ruleEClassDecl | this_EDataTypeDecl= ruleEDataTypeDecl )
+ int alt7=2;
+ alt7 = dfa7.predict(input);
+ switch (alt7) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:514:5: this_EClassDecl= ruleEClassDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4/@alternatives/@groups.0" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEClassDecl_in_ruleEClassifierDecl1090);
+ this_EClassDecl=ruleEClassDecl();
+ _fsp--;
+
+
+ current = this_EClassDecl;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:524:5: this_EDataTypeDecl= ruleEDataTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.4/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEDataTypeDecl_in_ruleEClassifierDecl1117);
+ this_EDataTypeDecl=ruleEDataTypeDecl();
+ _fsp--;
+
+
+ current = this_EDataTypeDecl;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEClassifierDecl
+
+
+ // $ANTLR start entryRuleEDataTypeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:541:1: entryRuleEDataTypeDecl returns [EObject current=null] : iv_ruleEDataTypeDecl= ruleEDataTypeDecl EOF ;
+ public final EObject entryRuleEDataTypeDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEDataTypeDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:541:55: (iv_ruleEDataTypeDecl= ruleEDataTypeDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:542:2: iv_ruleEDataTypeDecl= ruleEDataTypeDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEDataTypeDecl_in_entryRuleEDataTypeDecl1151);
+ iv_ruleEDataTypeDecl=ruleEDataTypeDecl();
+ _fsp--;
+
+ current =iv_ruleEDataTypeDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEDataTypeDecl1161);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEDataTypeDecl
+
+
+ // $ANTLR start ruleEDataTypeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:549:1: ruleEDataTypeDecl returns [EObject current=null] : ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) ) | this_EEnumDecl= ruleEEnumDecl ) ;
+ public final EObject ruleEDataTypeDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_serializable=null;
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ AntlrDatatypeRuleToken lv_instanceClassName = null;
+
+ EObject this_EEnumDecl = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:553:6: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) ) | this_EEnumDecl= ruleEEnumDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:1: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) ) | this_EEnumDecl= ruleEEnumDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:1: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) ) | this_EEnumDecl= ruleEEnumDecl )
+ int alt10=2;
+ alt10 = dfa10.predict(input);
+ switch (alt10) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:2: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:2: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:3: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:3: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:4: (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:554:4: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==22) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:557:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEDataTypeDecl1222);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:575:3: (lv_serializable= '!serializable' )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==19) ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:577:6: lv_serializable= '!serializable'
+ {
+ lv_serializable=(Token)input.LT(1);
+ match(input,19,FOLLOW_19_in_ruleEDataTypeDecl1248);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::Keyword */, "serializable");
+
+
+ if (current==null) {
+ current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "serializable", true, "!serializable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:4: ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:5: ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:5: ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:6: ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:6: ( ( 'datatype' (lv_name= RULE_ID ) ) ':' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:7: ( 'datatype' (lv_name= RULE_ID ) ) ':'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:7: ( 'datatype' (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:595:8: 'datatype' (lv_name= RULE_ID )
+ {
+ match(input,20,FOLLOW_20_in_ruleEDataTypeDecl1275);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:599:1: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:601:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEDataTypeDecl1296);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,21,FOLLOW_21_in_ruleEDataTypeDecl1317);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:623:2: (lv_instanceClassName= ruleSTRING_OR_QID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:626:6: lv_instanceClassName= ruleSTRING_OR_QID
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSTRING_OR_QID_in_ruleEDataTypeDecl1352);
+ lv_instanceClassName=ruleSTRING_OR_QID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EDataType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "instanceClassName", lv_instanceClassName, "STRING_OR_QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleEDataTypeDecl1366);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:650:5: this_EEnumDecl= ruleEEnumDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.5/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEEnumDecl_in_ruleEDataTypeDecl1396);
+ this_EEnumDecl=ruleEEnumDecl();
+ _fsp--;
+
+
+ current = this_EEnumDecl;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEDataTypeDecl
+
+
+ // $ANTLR start entryRuleEAnnotationDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:667:1: entryRuleEAnnotationDecl returns [EObject current=null] : iv_ruleEAnnotationDecl= ruleEAnnotationDecl EOF ;
+ public final EObject entryRuleEAnnotationDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEAnnotationDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:667:57: (iv_ruleEAnnotationDecl= ruleEAnnotationDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:668:2: iv_ruleEAnnotationDecl= ruleEAnnotationDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_entryRuleEAnnotationDecl1430);
+ iv_ruleEAnnotationDecl=ruleEAnnotationDecl();
+ _fsp--;
+
+ current =iv_ruleEAnnotationDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEAnnotationDecl1440);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEAnnotationDecl
+
+
+ // $ANTLR start ruleEAnnotationDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:675:1: ruleEAnnotationDecl returns [EObject current=null] : ( ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* ) ')' ) ;
+ public final EObject ruleEAnnotationDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_source=null;
+ EObject lv_contents = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:679:6: ( ( ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* ) ')' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:1: ( ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* ) ')' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:1: ( ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* ) ')' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:2: ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* ) ')'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:2: ( ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:3: ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) ) ( ',' (lv_contents= ruleMapEntrySuper ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:3: ( ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:4: ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' ) (lv_contents= ruleMapEntrySuper )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:4: ( ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '(' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:5: ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? ) '('
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:5: ( ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:6: ( '@' (lv_source= RULE_STRING ) ) ( ( RULE_ID ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:6: ( '@' (lv_source= RULE_STRING ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:680:7: '@' (lv_source= RULE_STRING )
+ {
+ match(input,22,FOLLOW_22_in_ruleEAnnotationDecl1479);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:684:1: (lv_source= RULE_STRING )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:686:6: lv_source= RULE_STRING
+ {
+ lv_source=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEAnnotationDecl1500);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "source");
+
+
+ if (current==null) {
+ current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "source", lv_source, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:704:3: ( ( RULE_ID ) )?
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==RULE_ID) ) {
+ alt11=1;
+ }
+ switch (alt11) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:707:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:713:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:714:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEAnnotationDecl1536);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eModelElement");
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,23,FOLLOW_23_in_ruleEAnnotationDecl1551);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:723:2: (lv_contents= ruleMapEntrySuper )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:726:6: lv_contents= ruleMapEntrySuper
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleMapEntrySuper_in_ruleEAnnotationDecl1586);
+ lv_contents=ruleMapEntrySuper();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "contents", lv_contents, "MapEntrySuper", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:744:3: ( ',' (lv_contents= ruleMapEntrySuper ) )*
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0==24) ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:744:4: ',' (lv_contents= ruleMapEntrySuper )
+ {
+ match(input,24,FOLLOW_24_in_ruleEAnnotationDecl1601);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:748:1: (lv_contents= ruleMapEntrySuper )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:751:6: lv_contents= ruleMapEntrySuper
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleMapEntrySuper_in_ruleEAnnotationDecl1635);
+ lv_contents=ruleMapEntrySuper();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EAnnotation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "contents", lv_contents, "MapEntrySuper", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,25,FOLLOW_25_in_ruleEAnnotationDecl1651);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.6/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEAnnotationDecl
+
+
+ // $ANTLR start entryRuleEClassDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:782:1: entryRuleEClassDecl returns [EObject current=null] : iv_ruleEClassDecl= ruleEClassDecl EOF ;
+ public final EObject entryRuleEClassDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEClassDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:782:52: (iv_ruleEClassDecl= ruleEClassDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:783:2: iv_ruleEClassDecl= ruleEClassDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEClassDecl_in_entryRuleEClassDecl1686);
+ iv_ruleEClassDecl=ruleEClassDecl();
+ _fsp--;
+
+ current =iv_ruleEClassDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEClassDecl1696);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEClassDecl
+
+
+ // $ANTLR start ruleEClassDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:790:1: ruleEClassDecl returns [EObject current=null] : ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* ) '}' ) ;
+ public final EObject ruleEClassDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_abstract=null;
+ Token lv_interface=null;
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eTypeParameters = null;
+
+ EObject lv_eGenericSuperTypes = null;
+
+ AntlrDatatypeRuleToken lv_instanceClassName = null;
+
+ EObject lv_eStructuralFeatures = null;
+
+ EObject lv_eOperations = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:794:6: ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* ) '}' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:1: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* ) '}' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:1: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* ) '}' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:2: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* ) '}'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:2: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:3: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' ) ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:3: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:4: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? ) '{'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:4: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:5: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? ) ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:5: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:6: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:6: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:7: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:7: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:8: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:8: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:9: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? ) ( (lv_interface= 'interface' ) | 'class' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:9: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:10: (lv_eAnnotations= ruleEAnnotationDecl )* (lv_abstract= 'abstract' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:795:10: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop13:
+ do {
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==22) ) {
+ alt13=1;
+ }
+
+
+ switch (alt13) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:798:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEClassDecl1763);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop13;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:816:3: (lv_abstract= 'abstract' )?
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==26) ) {
+ alt14=1;
+ }
+ switch (alt14) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:818:6: lv_abstract= 'abstract'
+ {
+ lv_abstract=(Token)input.LT(1);
+ match(input,26,FOLLOW_26_in_ruleEClassDecl1789);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::Keyword */, "abstract");
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "abstract", true, "abstract", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:836:4: ( (lv_interface= 'interface' ) | 'class' )
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==27) ) {
+ alt15=1;
+ }
+ else if ( (LA15_0==28) ) {
+ alt15=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("836:4: ( (lv_interface= 'interface' ) | 'class' )", 15, 0, input);
+
+ throw nvae;
+ }
+ switch (alt15) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:836:5: (lv_interface= 'interface' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:836:5: (lv_interface= 'interface' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:838:6: lv_interface= 'interface'
+ {
+ lv_interface=(Token)input.LT(1);
+ match(input,27,FOLLOW_27_in_ruleEClassDecl1825);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "interface");
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "interface", true, "interface", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:857:6: 'class'
+ {
+ match(input,28,FOLLOW_28_in_ruleEClassDecl1852);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:861:3: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:863:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEClassDecl1875);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:3: ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==29) ) {
+ alt17=1;
+ }
+ switch (alt17) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:4: ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:4: ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:5: ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:5: ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:881:6: '<' (lv_eTypeParameters= ruleETypeParameterDecl )
+ {
+ match(input,29,FOLLOW_29_in_ruleEClassDecl1899);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:885:1: (lv_eTypeParameters= ruleETypeParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:888:6: lv_eTypeParameters= ruleETypeParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleETypeParameterDecl_in_ruleEClassDecl1933);
+ lv_eTypeParameters=ruleETypeParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:906:3: ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )*
+ loop16:
+ do {
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==24) ) {
+ alt16=1;
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:906:4: ',' (lv_eTypeParameters= ruleETypeParameterDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEClassDecl1948);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:910:1: (lv_eTypeParameters= ruleETypeParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:913:6: lv_eTypeParameters= ruleETypeParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleETypeParameterDecl_in_ruleEClassDecl1982);
+ lv_eTypeParameters=ruleETypeParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,30,FOLLOW_30_in_ruleEClassDecl1998);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:935:4: ( ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )* )?
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==31) ) {
+ alt19=1;
+ }
+ switch (alt19) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:935:5: ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:935:5: ( 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:935:6: 'extends' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl )
+ {
+ match(input,31,FOLLOW_31_in_ruleEClassDecl2012);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:939:1: (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:942:6: lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEClassDecl2046);
+ lv_eGenericSuperTypes=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eGenericSuperTypes", lv_eGenericSuperTypes, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:960:3: ( ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl ) )*
+ loop18:
+ do {
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0==24) ) {
+ alt18=1;
+ }
+
+
+ switch (alt18) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:960:4: ',' (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEClassDecl2061);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:964:1: (lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:967:6: lv_eGenericSuperTypes= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEClassDecl2095);
+ lv_eGenericSuperTypes=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eGenericSuperTypes", lv_eGenericSuperTypes, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop18;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:985:7: ( ':' (lv_instanceClassName= ruleSTRING_OR_QID ) )?
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0==21) ) {
+ alt20=1;
+ }
+ switch (alt20) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:985:8: ':' (lv_instanceClassName= ruleSTRING_OR_QID )
+ {
+ match(input,21,FOLLOW_21_in_ruleEClassDecl2114);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:989:1: (lv_instanceClassName= ruleSTRING_OR_QID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:992:6: lv_instanceClassName= ruleSTRING_OR_QID
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSTRING_OR_QID_in_ruleEClassDecl2148);
+ lv_instanceClassName=ruleSTRING_OR_QID();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "instanceClassName", lv_instanceClassName, "STRING_OR_QID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,17,FOLLOW_17_in_ruleEClassDecl2164);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1014:2: ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )*
+ loop21:
+ do {
+ int alt21=3;
+ alt21 = dfa21.predict(input);
+ switch (alt21) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1014:3: (lv_eStructuralFeatures= ruleEStructuralFeatureDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1014:3: (lv_eStructuralFeatures= ruleEStructuralFeatureDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1017:6: lv_eStructuralFeatures= ruleEStructuralFeatureDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEStructuralFeatureDecl_in_ruleEClassDecl2200);
+ lv_eStructuralFeatures=ruleEStructuralFeatureDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eStructuralFeatures", lv_eStructuralFeatures, "EStructuralFeatureDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1036:6: (lv_eOperations= ruleEOperationDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1036:6: (lv_eOperations= ruleEOperationDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1039:6: lv_eOperations= ruleEOperationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEOperationDecl_in_ruleEClassDecl2244);
+ lv_eOperations=ruleEOperationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EClass");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eOperations", lv_eOperations, "EOperationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop21;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,18,FOLLOW_18_in_ruleEClassDecl2260);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.7/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEClassDecl
+
+
+ // $ANTLR start entryRuleEStructuralFeatureDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1070:1: entryRuleEStructuralFeatureDecl returns [EObject current=null] : iv_ruleEStructuralFeatureDecl= ruleEStructuralFeatureDecl EOF ;
+ public final EObject entryRuleEStructuralFeatureDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEStructuralFeatureDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1070:64: (iv_ruleEStructuralFeatureDecl= ruleEStructuralFeatureDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1071:2: iv_ruleEStructuralFeatureDecl= ruleEStructuralFeatureDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEStructuralFeatureDecl_in_entryRuleEStructuralFeatureDecl2295);
+ iv_ruleEStructuralFeatureDecl=ruleEStructuralFeatureDecl();
+ _fsp--;
+
+ current =iv_ruleEStructuralFeatureDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEStructuralFeatureDecl2305);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEStructuralFeatureDecl
+
+
+ // $ANTLR start ruleEStructuralFeatureDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1078:1: ruleEStructuralFeatureDecl returns [EObject current=null] : (this_EAttributeDecl= ruleEAttributeDecl | this_EReferenceDecl= ruleEReferenceDecl ) ;
+ public final EObject ruleEStructuralFeatureDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_EAttributeDecl = null;
+
+ EObject this_EReferenceDecl = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1082:6: ( (this_EAttributeDecl= ruleEAttributeDecl | this_EReferenceDecl= ruleEReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1083:1: (this_EAttributeDecl= ruleEAttributeDecl | this_EReferenceDecl= ruleEReferenceDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1083:1: (this_EAttributeDecl= ruleEAttributeDecl | this_EReferenceDecl= ruleEReferenceDecl )
+ int alt22=2;
+ alt22 = dfa22.predict(input);
+ switch (alt22) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1084:5: this_EAttributeDecl= ruleEAttributeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8/@alternatives/@groups.0" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAttributeDecl_in_ruleEStructuralFeatureDecl2352);
+ this_EAttributeDecl=ruleEAttributeDecl();
+ _fsp--;
+
+
+ current = this_EAttributeDecl;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1094:5: this_EReferenceDecl= ruleEReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.8/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEReferenceDecl_in_ruleEStructuralFeatureDecl2379);
+ this_EReferenceDecl=ruleEReferenceDecl();
+ _fsp--;
+
+
+ current = this_EReferenceDecl;
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEStructuralFeatureDecl
+
+
+ // $ANTLR start entryRuleEAttributeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1111:1: entryRuleEAttributeDecl returns [EObject current=null] : iv_ruleEAttributeDecl= ruleEAttributeDecl EOF ;
+ public final EObject entryRuleEAttributeDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEAttributeDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1111:56: (iv_ruleEAttributeDecl= ruleEAttributeDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1112:2: iv_ruleEAttributeDecl= ruleEAttributeDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEAttributeDecl_in_entryRuleEAttributeDecl2413);
+ iv_ruleEAttributeDecl=ruleEAttributeDecl();
+ _fsp--;
+
+ current =iv_ruleEAttributeDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEAttributeDecl2423);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEAttributeDecl
+
+
+ // $ANTLR start ruleEAttributeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1119:1: ruleEAttributeDecl returns [EObject current=null] : ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? ) ';' ) ;
+ public final EObject ruleEAttributeDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_iD=null;
+ Token lv_unique=null;
+ Token lv_ordered=null;
+ Token lv_changeable=null;
+ Token lv_volatile=null;
+ Token lv_transient=null;
+ Token lv_unsettable=null;
+ Token lv_derived=null;
+ Token lv_lowerBound=null;
+ Token lv_name=null;
+ Token lv_defaultValueLiteral=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eGenericType = null;
+
+ AntlrDatatypeRuleToken lv_upperBound = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1123:6: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:1: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:1: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:2: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:2: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:3: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) ) ( '=' (lv_defaultValueLiteral= RULE_STRING ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:3: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:4: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:4: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:5: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:5: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:6: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' ) (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:6: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:7: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) 'attr'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:7: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:8: (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1124:8: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop23:
+ do {
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==22) ) {
+ alt23=1;
+ }
+
+
+ switch (alt23) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1127:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEAttributeDecl2488);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop23;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:3: ( ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )*
+ loop30:
+ do {
+ int alt30=3;
+ int LA30_0 = input.LA(1);
+
+ if ( ((LA30_0>=32 && LA30_0<=38)) ) {
+ alt30=1;
+ }
+ else if ( (LA30_0==39) ) {
+ alt30=2;
+ }
+
+
+ switch (alt30) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:4: ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:4: ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )
+ int alt29=2;
+ int LA29_0 = input.LA(1);
+
+ if ( ((LA29_0>=32 && LA29_0<=37)) ) {
+ alt29=1;
+ }
+ else if ( (LA29_0==38) ) {
+ alt29=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:4: ( ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )", 29, 0, input);
+
+ throw nvae;
+ }
+ switch (alt29) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:5: ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:5: ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( ((LA28_0>=32 && LA28_0<=36)) ) {
+ alt28=1;
+ }
+ else if ( (LA28_0==37) ) {
+ alt28=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:5: ( ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )", 28, 0, input);
+
+ throw nvae;
+ }
+ switch (alt28) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:6: ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:6: ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( ((LA27_0>=32 && LA27_0<=35)) ) {
+ alt27=1;
+ }
+ else if ( (LA27_0==36) ) {
+ alt27=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:6: ( ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )", 27, 0, input);
+
+ throw nvae;
+ }
+ switch (alt27) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:7: ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:7: ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )
+ int alt26=2;
+ int LA26_0 = input.LA(1);
+
+ if ( ((LA26_0>=32 && LA26_0<=34)) ) {
+ alt26=1;
+ }
+ else if ( (LA26_0==35) ) {
+ alt26=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:7: ( ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )", 26, 0, input);
+
+ throw nvae;
+ }
+ switch (alt26) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:8: ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:8: ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( ((LA25_0>=32 && LA25_0<=33)) ) {
+ alt25=1;
+ }
+ else if ( (LA25_0==34) ) {
+ alt25=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:8: ( ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )", 25, 0, input);
+
+ throw nvae;
+ }
+ switch (alt25) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:9: ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:9: ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) )
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==32) ) {
+ alt24=1;
+ }
+ else if ( (LA24_0==33) ) {
+ alt24=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1145:9: ( (lv_iD= 'ID' ) | (lv_unique= 'bag' ) )", 24, 0, input);
+
+ throw nvae;
+ }
+ switch (alt24) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:10: (lv_iD= 'ID' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1145:10: (lv_iD= 'ID' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1147:6: lv_iD= 'ID'
+ {
+ lv_iD=(Token)input.LT(1);
+ match(input,32,FOLLOW_32_in_ruleEAttributeDecl2521);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@terminal" /* xtext::Keyword */, "iD");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "iD", true, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1166:6: (lv_unique= 'bag' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1166:6: (lv_unique= 'bag' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1168:6: lv_unique= 'bag'
+ {
+ lv_unique=(Token)input.LT(1);
+ match(input,33,FOLLOW_33_in_ruleEAttributeDecl2560);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unique");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1187:6: (lv_ordered= 'random' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1187:6: (lv_ordered= 'random' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1189:6: lv_ordered= 'random'
+ {
+ lv_ordered=(Token)input.LT(1);
+ match(input,34,FOLLOW_34_in_ruleEAttributeDecl2600);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1208:6: (lv_changeable= 'readonly' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1208:6: (lv_changeable= 'readonly' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1210:6: lv_changeable= 'readonly'
+ {
+ lv_changeable=(Token)input.LT(1);
+ match(input,35,FOLLOW_35_in_ruleEAttributeDecl2640);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "changeable");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "changeable", true, "readonly", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1229:6: (lv_volatile= 'volatile' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1229:6: (lv_volatile= 'volatile' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1231:6: lv_volatile= 'volatile'
+ {
+ lv_volatile=(Token)input.LT(1);
+ match(input,36,FOLLOW_36_in_ruleEAttributeDecl2680);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "volatile");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "volatile", true, "volatile", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1250:6: (lv_transient= 'transient' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1250:6: (lv_transient= 'transient' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1252:6: lv_transient= 'transient'
+ {
+ lv_transient=(Token)input.LT(1);
+ match(input,37,FOLLOW_37_in_ruleEAttributeDecl2720);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "transient");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "transient", true, "transient", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1271:6: (lv_unsettable= 'unsettable' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1271:6: (lv_unsettable= 'unsettable' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1273:6: lv_unsettable= 'unsettable'
+ {
+ lv_unsettable=(Token)input.LT(1);
+ match(input,38,FOLLOW_38_in_ruleEAttributeDecl2760);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unsettable");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "unsettable", true, "unsettable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1292:6: (lv_derived= 'derived' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1292:6: (lv_derived= 'derived' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1294:6: lv_derived= 'derived'
+ {
+ lv_derived=(Token)input.LT(1);
+ match(input,39,FOLLOW_39_in_ruleEAttributeDecl2800);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "derived");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "derived", true, "derived", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop30;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,40,FOLLOW_40_in_ruleEAttributeDecl2824);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1316:2: (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1319:6: lv_eGenericType= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEAttributeDecl2859);
+ lv_eGenericType=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:3: ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )?
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0==41) ) {
+ alt32=1;
+ }
+ switch (alt32) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:4: ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:4: ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:5: ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:5: ( '[' (lv_lowerBound= RULE_INT ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1337:6: '[' (lv_lowerBound= RULE_INT )
+ {
+ match(input,41,FOLLOW_41_in_ruleEAttributeDecl2876);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1341:1: (lv_lowerBound= RULE_INT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1343:6: lv_lowerBound= RULE_INT
+ {
+ lv_lowerBound=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEAttributeDecl2897);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "lowerBound");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "lowerBound", lv_lowerBound, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1361:3: ( '..' (lv_upperBound= ruleSINT ) )?
+ int alt31=2;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0==42) ) {
+ alt31=1;
+ }
+ switch (alt31) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1361:4: '..' (lv_upperBound= ruleSINT )
+ {
+ match(input,42,FOLLOW_42_in_ruleEAttributeDecl2919);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1365:1: (lv_upperBound= ruleSINT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1368:6: lv_upperBound= ruleSINT
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSINT_in_ruleEAttributeDecl2953);
+ lv_upperBound=ruleSINT();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "upperBound", lv_upperBound, "SINT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,43,FOLLOW_43_in_ruleEAttributeDecl2969);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1390:4: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1392:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEAttributeDecl2993);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1410:3: ( '=' (lv_defaultValueLiteral= RULE_STRING ) )?
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( (LA33_0==12) ) {
+ alt33=1;
+ }
+ switch (alt33) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1410:4: '=' (lv_defaultValueLiteral= RULE_STRING )
+ {
+ match(input,12,FOLLOW_12_in_ruleEAttributeDecl3015);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1414:1: (lv_defaultValueLiteral= RULE_STRING )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1416:6: lv_defaultValueLiteral= RULE_STRING
+ {
+ lv_defaultValueLiteral=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEAttributeDecl3036);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "defaultValueLiteral");
+
+
+ if (current==null) {
+ current = factory.create("EAttribute");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "defaultValueLiteral", lv_defaultValueLiteral, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleEAttributeDecl3059);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.9/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEAttributeDecl
+
+
+ // $ANTLR start entryRuleEReferenceDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1447:1: entryRuleEReferenceDecl returns [EObject current=null] : iv_ruleEReferenceDecl= ruleEReferenceDecl EOF ;
+ public final EObject entryRuleEReferenceDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEReferenceDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1447:56: (iv_ruleEReferenceDecl= ruleEReferenceDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1448:2: iv_ruleEReferenceDecl= ruleEReferenceDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEReferenceDecl_in_entryRuleEReferenceDecl3094);
+ iv_ruleEReferenceDecl=ruleEReferenceDecl();
+ _fsp--;
+
+ current =iv_ruleEReferenceDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEReferenceDecl3104);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEReferenceDecl
+
+
+ // $ANTLR start ruleEReferenceDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1455:1: ruleEReferenceDecl returns [EObject current=null] : ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) ) ';' ) ;
+ public final EObject ruleEReferenceDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_resolveProxies=null;
+ Token lv_unique=null;
+ Token lv_ordered=null;
+ Token lv_changeable=null;
+ Token lv_volatile=null;
+ Token lv_transient=null;
+ Token lv_unsettable=null;
+ Token lv_derived=null;
+ Token lv_containment=null;
+ Token lv_lowerBound=null;
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eGenericType = null;
+
+ AntlrDatatypeRuleToken lv_upperBound = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1459:6: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:1: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:1: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:2: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:2: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:3: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:3: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:4: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? ) ( '#' ( ( RULE_ID ) ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:4: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:5: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:5: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:6: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) ) (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:6: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:7: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* ) ( (lv_containment= 'val' ) | 'ref' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:7: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:8: (lv_eAnnotations= ruleEAnnotationDecl )* ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1460:8: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop34:
+ do {
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( (LA34_0==22) ) {
+ alt34=1;
+ }
+
+
+ switch (alt34) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1463:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEReferenceDecl3169);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop34;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:3: ( ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) ) | (lv_derived= 'derived' ) )*
+ loop41:
+ do {
+ int alt41=3;
+ int LA41_0 = input.LA(1);
+
+ if ( ((LA41_0>=33 && LA41_0<=38)||LA41_0==44) ) {
+ alt41=1;
+ }
+ else if ( (LA41_0==39) ) {
+ alt41=2;
+ }
+
+
+ switch (alt41) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:4: ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:4: ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )
+ int alt40=2;
+ int LA40_0 = input.LA(1);
+
+ if ( ((LA40_0>=33 && LA40_0<=37)||LA40_0==44) ) {
+ alt40=1;
+ }
+ else if ( (LA40_0==38) ) {
+ alt40=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:4: ( ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) ) | (lv_unsettable= 'unsettable' ) )", 40, 0, input);
+
+ throw nvae;
+ }
+ switch (alt40) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:5: ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:5: ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )
+ int alt39=2;
+ int LA39_0 = input.LA(1);
+
+ if ( ((LA39_0>=33 && LA39_0<=36)||LA39_0==44) ) {
+ alt39=1;
+ }
+ else if ( (LA39_0==37) ) {
+ alt39=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:5: ( ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) ) | (lv_transient= 'transient' ) )", 39, 0, input);
+
+ throw nvae;
+ }
+ switch (alt39) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:6: ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:6: ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )
+ int alt38=2;
+ int LA38_0 = input.LA(1);
+
+ if ( ((LA38_0>=33 && LA38_0<=35)||LA38_0==44) ) {
+ alt38=1;
+ }
+ else if ( (LA38_0==36) ) {
+ alt38=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:6: ( ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) ) | (lv_volatile= 'volatile' ) )", 38, 0, input);
+
+ throw nvae;
+ }
+ switch (alt38) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:7: ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:7: ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( ((LA37_0>=33 && LA37_0<=34)||LA37_0==44) ) {
+ alt37=1;
+ }
+ else if ( (LA37_0==35) ) {
+ alt37=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:7: ( ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) ) | (lv_changeable= 'readonly' ) )", 37, 0, input);
+
+ throw nvae;
+ }
+ switch (alt37) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:8: ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:8: ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0==33||LA36_0==44) ) {
+ alt36=1;
+ }
+ else if ( (LA36_0==34) ) {
+ alt36=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:8: ( ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) ) | (lv_ordered= 'random' ) )", 36, 0, input);
+
+ throw nvae;
+ }
+ switch (alt36) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:9: ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:9: ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) )
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0==44) ) {
+ alt35=1;
+ }
+ else if ( (LA35_0==33) ) {
+ alt35=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1481:9: ( (lv_resolveProxies= 'local' ) | (lv_unique= 'bag' ) )", 35, 0, input);
+
+ throw nvae;
+ }
+ switch (alt35) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:10: (lv_resolveProxies= 'local' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1481:10: (lv_resolveProxies= 'local' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1483:6: lv_resolveProxies= 'local'
+ {
+ lv_resolveProxies=(Token)input.LT(1);
+ match(input,44,FOLLOW_44_in_ruleEReferenceDecl3202);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@terminal" /* xtext::Keyword */, "resolveProxies");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "resolveProxies", true, "local", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1502:6: (lv_unique= 'bag' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1502:6: (lv_unique= 'bag' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1504:6: lv_unique= 'bag'
+ {
+ lv_unique=(Token)input.LT(1);
+ match(input,33,FOLLOW_33_in_ruleEReferenceDecl3241);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unique");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1523:6: (lv_ordered= 'random' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1523:6: (lv_ordered= 'random' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1525:6: lv_ordered= 'random'
+ {
+ lv_ordered=(Token)input.LT(1);
+ match(input,34,FOLLOW_34_in_ruleEReferenceDecl3281);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1544:6: (lv_changeable= 'readonly' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1544:6: (lv_changeable= 'readonly' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1546:6: lv_changeable= 'readonly'
+ {
+ lv_changeable=(Token)input.LT(1);
+ match(input,35,FOLLOW_35_in_ruleEReferenceDecl3321);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "changeable");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "changeable", true, "readonly", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1565:6: (lv_volatile= 'volatile' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1565:6: (lv_volatile= 'volatile' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1567:6: lv_volatile= 'volatile'
+ {
+ lv_volatile=(Token)input.LT(1);
+ match(input,36,FOLLOW_36_in_ruleEReferenceDecl3361);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "volatile");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "volatile", true, "volatile", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1586:6: (lv_transient= 'transient' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1586:6: (lv_transient= 'transient' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1588:6: lv_transient= 'transient'
+ {
+ lv_transient=(Token)input.LT(1);
+ match(input,37,FOLLOW_37_in_ruleEReferenceDecl3401);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "transient");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "transient", true, "transient", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1607:6: (lv_unsettable= 'unsettable' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1607:6: (lv_unsettable= 'unsettable' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1609:6: lv_unsettable= 'unsettable'
+ {
+ lv_unsettable=(Token)input.LT(1);
+ match(input,38,FOLLOW_38_in_ruleEReferenceDecl3441);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@groups.1/@terminal" /* xtext::Keyword */, "unsettable");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "unsettable", true, "unsettable", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1628:6: (lv_derived= 'derived' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1628:6: (lv_derived= 'derived' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1630:6: lv_derived= 'derived'
+ {
+ lv_derived=(Token)input.LT(1);
+ match(input,39,FOLLOW_39_in_ruleEReferenceDecl3481);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "derived");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "derived", true, "derived", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop41;
+ }
+ } while (true);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1648:5: ( (lv_containment= 'val' ) | 'ref' )
+ int alt42=2;
+ int LA42_0 = input.LA(1);
+
+ if ( (LA42_0==45) ) {
+ alt42=1;
+ }
+ else if ( (LA42_0==46) ) {
+ alt42=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("1648:5: ( (lv_containment= 'val' ) | 'ref' )", 42, 0, input);
+
+ throw nvae;
+ }
+ switch (alt42) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1648:6: (lv_containment= 'val' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1648:6: (lv_containment= 'val' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1650:6: lv_containment= 'val'
+ {
+ lv_containment=(Token)input.LT(1);
+ match(input,45,FOLLOW_45_in_ruleEReferenceDecl3518);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "containment");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "containment", true, "val", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1669:6: 'ref'
+ {
+ match(input,46,FOLLOW_46_in_ruleEReferenceDecl3545);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1673:3: (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1676:6: lv_eGenericType= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEReferenceDecl3581);
+ lv_eGenericType=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:3: ( ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']' )?
+ int alt44=2;
+ int LA44_0 = input.LA(1);
+
+ if ( (LA44_0==41) ) {
+ alt44=1;
+ }
+ switch (alt44) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:4: ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? ) ']'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:4: ( ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:5: ( '[' (lv_lowerBound= RULE_INT ) ) ( '..' (lv_upperBound= ruleSINT ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:5: ( '[' (lv_lowerBound= RULE_INT ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1694:6: '[' (lv_lowerBound= RULE_INT )
+ {
+ match(input,41,FOLLOW_41_in_ruleEReferenceDecl3598);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1698:1: (lv_lowerBound= RULE_INT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1700:6: lv_lowerBound= RULE_INT
+ {
+ lv_lowerBound=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEReferenceDecl3619);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "lowerBound");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "lowerBound", lv_lowerBound, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1718:3: ( '..' (lv_upperBound= ruleSINT ) )?
+ int alt43=2;
+ int LA43_0 = input.LA(1);
+
+ if ( (LA43_0==42) ) {
+ alt43=1;
+ }
+ switch (alt43) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1718:4: '..' (lv_upperBound= ruleSINT )
+ {
+ match(input,42,FOLLOW_42_in_ruleEReferenceDecl3641);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1722:1: (lv_upperBound= ruleSINT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1725:6: lv_upperBound= ruleSINT
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleSINT_in_ruleEReferenceDecl3675);
+ lv_upperBound=ruleSINT();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "upperBound", lv_upperBound, "SINT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,43,FOLLOW_43_in_ruleEReferenceDecl3691);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1747:4: ( '#' ( ( RULE_ID ) ) )?
+ int alt45=2;
+ int LA45_0 = input.LA(1);
+
+ if ( (LA45_0==47) ) {
+ alt45=1;
+ }
+ switch (alt45) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1747:5: '#' ( ( RULE_ID ) )
+ {
+ match(input,47,FOLLOW_47_in_ruleEReferenceDecl3704);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1751:1: ( ( RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1754:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1760:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1761:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEReferenceDecl3728);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eOpposite");
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1766:5: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1768:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEReferenceDecl3756);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EReference");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleEReferenceDecl3777);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.10/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEReferenceDecl
+
+
+ // $ANTLR start entryRuleEEnumDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1799:1: entryRuleEEnumDecl returns [EObject current=null] : iv_ruleEEnumDecl= ruleEEnumDecl EOF ;
+ public final EObject entryRuleEEnumDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEEnumDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1799:51: (iv_ruleEEnumDecl= ruleEEnumDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1800:2: iv_ruleEEnumDecl= ruleEEnumDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEEnumDecl_in_entryRuleEEnumDecl3812);
+ iv_ruleEEnumDecl=ruleEEnumDecl();
+ _fsp--;
+
+ current =iv_ruleEEnumDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEEnumDecl3822);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEEnumDecl
+
+
+ // $ANTLR start ruleEEnumDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1807:1: ruleEEnumDecl returns [EObject current=null] : ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ ) '}' ) ;
+ public final EObject ruleEEnumDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eLiterals = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1811:6: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ ) '}' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:1: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ ) '}' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:1: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ ) '}' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:2: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ ) '}'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:2: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+ )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:3: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' ) (lv_eLiterals= ruleEEnumLiteralDecl )+
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:3: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:4: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) ) '{'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:4: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:5: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:5: ( (lv_eAnnotations= ruleEAnnotationDecl )* 'enum' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:6: (lv_eAnnotations= ruleEAnnotationDecl )* 'enum'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1812:6: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop46:
+ do {
+ int alt46=2;
+ int LA46_0 = input.LA(1);
+
+ if ( (LA46_0==22) ) {
+ alt46=1;
+ }
+
+
+ switch (alt46) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1815:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEEnumDecl3885);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop46;
+ }
+ } while (true);
+
+ match(input,48,FOLLOW_48_in_ruleEEnumDecl3899);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1837:2: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1839:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEEnumDecl3921);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ match(input,17,FOLLOW_17_in_ruleEEnumDecl3942);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1861:2: (lv_eLiterals= ruleEEnumLiteralDecl )+
+ int cnt47=0;
+ loop47:
+ do {
+ int alt47=2;
+ int LA47_0 = input.LA(1);
+
+ if ( (LA47_0==RULE_ID||LA47_0==22) ) {
+ alt47=1;
+ }
+
+
+ switch (alt47) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1864:6: lv_eLiterals= ruleEEnumLiteralDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEEnumLiteralDecl_in_ruleEEnumDecl3977);
+ lv_eLiterals=ruleEEnumLiteralDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EEnum");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eLiterals", lv_eLiterals, "EEnumLiteralDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ if ( cnt47 >= 1 ) break loop47;
+ EarlyExitException eee =
+ new EarlyExitException(47, input);
+ throw eee;
+ }
+ cnt47++;
+ } while (true);
+
+
+ }
+
+ match(input,18,FOLLOW_18_in_ruleEEnumDecl3992);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.11/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEEnumDecl
+
+
+ // $ANTLR start entryRuleEEnumLiteralDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1895:1: entryRuleEEnumLiteralDecl returns [EObject current=null] : iv_ruleEEnumLiteralDecl= ruleEEnumLiteralDecl EOF ;
+ public final EObject entryRuleEEnumLiteralDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEEnumLiteralDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1895:58: (iv_ruleEEnumLiteralDecl= ruleEEnumLiteralDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1896:2: iv_ruleEEnumLiteralDecl= ruleEEnumLiteralDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEEnumLiteralDecl_in_entryRuleEEnumLiteralDecl4027);
+ iv_ruleEEnumLiteralDecl=ruleEEnumLiteralDecl();
+ _fsp--;
+
+ current =iv_ruleEEnumLiteralDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEEnumLiteralDecl4037);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEEnumLiteralDecl
+
+
+ // $ANTLR start ruleEEnumLiteralDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1903:1: ruleEEnumLiteralDecl returns [EObject current=null] : ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? ) ';' ) ;
+ public final EObject ruleEEnumLiteralDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name=null;
+ Token lv_value=null;
+ Token lv_literal=null;
+ EObject lv_eAnnotations = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1907:6: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:1: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:1: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:2: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:2: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:3: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? ) (lv_literal= RULE_STRING )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:3: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:4: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) ) ( '=' (lv_value= RULE_INT ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:4: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:5: (lv_eAnnotations= ruleEAnnotationDecl )* (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1908:5: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop48:
+ do {
+ int alt48=2;
+ int LA48_0 = input.LA(1);
+
+ if ( (LA48_0==22) ) {
+ alt48=1;
+ }
+
+
+ switch (alt48) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1911:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEEnumLiteralDecl4099);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop48;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1929:3: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1931:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEEnumLiteralDecl4125);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1949:3: ( '=' (lv_value= RULE_INT ) )?
+ int alt49=2;
+ int LA49_0 = input.LA(1);
+
+ if ( (LA49_0==12) ) {
+ alt49=1;
+ }
+ switch (alt49) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1949:4: '=' (lv_value= RULE_INT )
+ {
+ match(input,12,FOLLOW_12_in_ruleEEnumLiteralDecl4147);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1953:1: (lv_value= RULE_INT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1955:6: lv_value= RULE_INT
+ {
+ lv_value=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEEnumLiteralDecl4168);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "value");
+
+
+ if (current==null) {
+ current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "value", lv_value, "INT", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1973:5: (lv_literal= RULE_STRING )?
+ int alt50=2;
+ int LA50_0 = input.LA(1);
+
+ if ( (LA50_0==RULE_STRING) ) {
+ alt50=1;
+ }
+ switch (alt50) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:1975:6: lv_literal= RULE_STRING
+ {
+ lv_literal=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEEnumLiteralDecl4203);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "literal");
+
+
+ if (current==null) {
+ current = factory.create("EEnumLiteral");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "literal", lv_literal, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleEEnumLiteralDecl4225);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.12/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEEnumLiteralDecl
+
+
+ // $ANTLR start entryRuleETypeParameterDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2006:1: entryRuleETypeParameterDecl returns [EObject current=null] : iv_ruleETypeParameterDecl= ruleETypeParameterDecl EOF ;
+ public final EObject entryRuleETypeParameterDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleETypeParameterDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2006:60: (iv_ruleETypeParameterDecl= ruleETypeParameterDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2007:2: iv_ruleETypeParameterDecl= ruleETypeParameterDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleETypeParameterDecl_in_entryRuleETypeParameterDecl4260);
+ iv_ruleETypeParameterDecl=ruleETypeParameterDecl();
+ _fsp--;
+
+ current =iv_ruleETypeParameterDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleETypeParameterDecl4270);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleETypeParameterDecl
+
+
+ // $ANTLR start ruleETypeParameterDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2014:1: ruleETypeParameterDecl returns [EObject current=null] : ( (lv_name= RULE_ID ) ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )? ) ;
+ public final EObject ruleETypeParameterDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name=null;
+ EObject lv_eBounds = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2018:6: ( ( (lv_name= RULE_ID ) ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )? ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2019:1: ( (lv_name= RULE_ID ) ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )? )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2019:1: ( (lv_name= RULE_ID ) ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2019:2: (lv_name= RULE_ID ) ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2019:2: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2021:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleETypeParameterDecl4316);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("ETypeParameter");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2039:2: ( 'extends' (lv_eBounds= ruleEGenericTypeDecl ) )?
+ int alt51=2;
+ int LA51_0 = input.LA(1);
+
+ if ( (LA51_0==31) ) {
+ alt51=1;
+ }
+ switch (alt51) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2039:3: 'extends' (lv_eBounds= ruleEGenericTypeDecl )
+ {
+ match(input,31,FOLLOW_31_in_ruleETypeParameterDecl4337);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2043:1: (lv_eBounds= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2046:6: lv_eBounds= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.13/@alternatives/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleETypeParameterDecl4371);
+ lv_eBounds=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("ETypeParameter");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eBounds", lv_eBounds, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleETypeParameterDecl
+
+
+ // $ANTLR start entryRuleEGenericTypeReferenceDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2073:1: entryRuleEGenericTypeReferenceDecl returns [EObject current=null] : iv_ruleEGenericTypeReferenceDecl= ruleEGenericTypeReferenceDecl EOF ;
+ public final EObject entryRuleEGenericTypeReferenceDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEGenericTypeReferenceDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2073:67: (iv_ruleEGenericTypeReferenceDecl= ruleEGenericTypeReferenceDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2074:2: iv_ruleEGenericTypeReferenceDecl= ruleEGenericTypeReferenceDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_entryRuleEGenericTypeReferenceDecl4412);
+ iv_ruleEGenericTypeReferenceDecl=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+ current =iv_ruleEGenericTypeReferenceDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEGenericTypeReferenceDecl4422);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEGenericTypeReferenceDecl
+
+
+ // $ANTLR start ruleEGenericTypeReferenceDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2081:1: ruleEGenericTypeReferenceDecl returns [EObject current=null] : ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) ;
+ public final EObject ruleEGenericTypeReferenceDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_eTypeArguments = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2085:6: ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:1: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:1: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )
+ int alt54=2;
+ int LA54_0 = input.LA(1);
+
+ if ( (LA54_0==RULE_ID) ) {
+ alt54=1;
+ }
+ else if ( (LA54_0==47) ) {
+ alt54=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2086:1: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )", 54, 0, input);
+
+ throw nvae;
+ }
+ switch (alt54) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:2: ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:2: ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:3: ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2086:3: ( ( RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2089:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2095:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2096:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEGenericTypeReferenceDecl4472);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.0/@terminal" /* xtext::CrossReference */, "eClassifier");
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:2: ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )?
+ int alt53=2;
+ int LA53_0 = input.LA(1);
+
+ if ( (LA53_0==29) ) {
+ alt53=1;
+ }
+ switch (alt53) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:3: ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:3: ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:4: ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:4: ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2101:5: '<' (lv_eTypeArguments= ruleEGenericTypeDecl )
+ {
+ match(input,29,FOLLOW_29_in_ruleEGenericTypeReferenceDecl4488);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2105:1: (lv_eTypeArguments= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2108:6: lv_eTypeArguments= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeReferenceDecl4522);
+ lv_eTypeArguments=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2126:3: ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )*
+ loop52:
+ do {
+ int alt52=2;
+ int LA52_0 = input.LA(1);
+
+ if ( (LA52_0==24) ) {
+ alt52=1;
+ }
+
+
+ switch (alt52) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2126:4: ',' (lv_eTypeArguments= ruleEGenericTypeDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEGenericTypeReferenceDecl4537);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2130:1: (lv_eTypeArguments= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2133:6: lv_eTypeArguments= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeReferenceDecl4571);
+ lv_eTypeArguments=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop52;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,30,FOLLOW_30_in_ruleEGenericTypeReferenceDecl4587);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2156:6: ( '#' ( ( RULE_ID ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2156:6: ( '#' ( ( RULE_ID ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2156:7: '#' ( ( RULE_ID ) )
+ {
+ match(input,47,FOLLOW_47_in_ruleEGenericTypeReferenceDecl4606);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2160:1: ( ( RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2163:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2169:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2170:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEGenericTypeReferenceDecl4630);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.14/@alternatives/@groups.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eTypeParameter");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEGenericTypeReferenceDecl
+
+
+ // $ANTLR start entryRuleEGenericTypeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2184:1: entryRuleEGenericTypeDecl returns [EObject current=null] : iv_ruleEGenericTypeDecl= ruleEGenericTypeDecl EOF ;
+ public final EObject entryRuleEGenericTypeDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEGenericTypeDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2184:58: (iv_ruleEGenericTypeDecl= ruleEGenericTypeDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2185:2: iv_ruleEGenericTypeDecl= ruleEGenericTypeDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_entryRuleEGenericTypeDecl4670);
+ iv_ruleEGenericTypeDecl=ruleEGenericTypeDecl();
+ _fsp--;
+
+ current =iv_ruleEGenericTypeDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEGenericTypeDecl4680);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEGenericTypeDecl
+
+
+ // $ANTLR start ruleEGenericTypeDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2192:1: ruleEGenericTypeDecl returns [EObject current=null] : ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) | ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) ) ) ;
+ public final EObject ruleEGenericTypeDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject lv_eTypeArguments = null;
+
+ EObject lv_eUpperBound = null;
+
+ EObject lv_eLowerBound = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2196:6: ( ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) | ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:1: ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) | ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:1: ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) | ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) ) )
+ int alt59=2;
+ int LA59_0 = input.LA(1);
+
+ if ( (LA59_0==RULE_ID||LA59_0==47) ) {
+ alt59=1;
+ }
+ else if ( (LA59_0==49) ) {
+ alt59=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2197:1: ( ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) ) | ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) ) )", 59, 0, input);
+
+ throw nvae;
+ }
+ switch (alt59) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:2: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:2: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )
+ int alt57=2;
+ int LA57_0 = input.LA(1);
+
+ if ( (LA57_0==RULE_ID) ) {
+ alt57=1;
+ }
+ else if ( (LA57_0==47) ) {
+ alt57=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2197:2: ( ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? ) | ( '#' ( ( RULE_ID ) ) ) )", 57, 0, input);
+
+ throw nvae;
+ }
+ switch (alt57) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:3: ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:3: ( ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:4: ( ( RULE_ID ) ) ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2197:4: ( ( RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2200:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2206:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2207:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEGenericTypeDecl4731);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.0/@terminal" /* xtext::CrossReference */, "eClassifier");
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:2: ( ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>' )?
+ int alt56=2;
+ int LA56_0 = input.LA(1);
+
+ if ( (LA56_0==29) ) {
+ alt56=1;
+ }
+ switch (alt56) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:3: ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* ) '>'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:3: ( ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:4: ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) ) ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:4: ( '<' (lv_eTypeArguments= ruleEGenericTypeDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2212:5: '<' (lv_eTypeArguments= ruleEGenericTypeDecl )
+ {
+ match(input,29,FOLLOW_29_in_ruleEGenericTypeDecl4747);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2216:1: (lv_eTypeArguments= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2219:6: lv_eTypeArguments= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeDecl4781);
+ lv_eTypeArguments=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2237:3: ( ',' (lv_eTypeArguments= ruleEGenericTypeDecl ) )*
+ loop55:
+ do {
+ int alt55=2;
+ int LA55_0 = input.LA(1);
+
+ if ( (LA55_0==24) ) {
+ alt55=1;
+ }
+
+
+ switch (alt55) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2237:4: ',' (lv_eTypeArguments= ruleEGenericTypeDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEGenericTypeDecl4796);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2241:1: (lv_eTypeArguments= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2244:6: lv_eTypeArguments= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeDecl4830);
+ lv_eTypeArguments=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeArguments", lv_eTypeArguments, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop55;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,30,FOLLOW_30_in_ruleEGenericTypeDecl4846);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2267:6: ( '#' ( ( RULE_ID ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2267:6: ( '#' ( ( RULE_ID ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2267:7: '#' ( ( RULE_ID ) )
+ {
+ match(input,47,FOLLOW_47_in_ruleEGenericTypeDecl4865);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2271:1: ( ( RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2274:3: ( RULE_ID )
+ {
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2280:1: ( RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2281:2: RULE_ID
+ {
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEGenericTypeDecl4889);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.0/@groups.1/@abstractTokens.1/@terminal" /* xtext::CrossReference */, "eTypeParameter");
+
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2287:6: ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2287:6: ( '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2287:7: '?' ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) )
+ {
+ match(input,49,FOLLOW_49_in_ruleEGenericTypeDecl4911);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2291:1: ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) )
+ int alt58=2;
+ int LA58_0 = input.LA(1);
+
+ if ( (LA58_0==31) ) {
+ alt58=1;
+ }
+ else if ( (LA58_0==50) ) {
+ alt58=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2291:1: ( ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) ) | ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) ) )", 58, 0, input);
+
+ throw nvae;
+ }
+ switch (alt58) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2291:2: ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2291:2: ( 'extends' (lv_eUpperBound= ruleEGenericTypeDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2291:3: 'extends' (lv_eUpperBound= ruleEGenericTypeDecl )
+ {
+ match(input,31,FOLLOW_31_in_ruleEGenericTypeDecl4922);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2295:1: (lv_eUpperBound= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2298:6: lv_eUpperBound= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeDecl4956);
+ lv_eUpperBound=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eUpperBound", lv_eUpperBound, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2317:6: ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2317:6: ( 'super' (lv_eLowerBound= ruleEGenericTypeDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2317:7: 'super' (lv_eLowerBound= ruleEGenericTypeDecl )
+ {
+ match(input,50,FOLLOW_50_in_ruleEGenericTypeDecl4977);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2321:1: (lv_eLowerBound= ruleEGenericTypeDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2324:6: lv_eLowerBound= ruleEGenericTypeDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.15/@alternatives/@groups.1/@abstractTokens.1/@groups.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeDecl_in_ruleEGenericTypeDecl5011);
+ lv_eLowerBound=ruleEGenericTypeDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EGenericType");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eLowerBound", lv_eLowerBound, "EGenericTypeDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEGenericTypeDecl
+
+
+ // $ANTLR start entryRuleEOperationDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2351:1: entryRuleEOperationDecl returns [EObject current=null] : iv_ruleEOperationDecl= ruleEOperationDecl EOF ;
+ public final EObject entryRuleEOperationDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEOperationDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2351:56: (iv_ruleEOperationDecl= ruleEOperationDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2352:2: iv_ruleEOperationDecl= ruleEOperationDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEOperationDecl_in_entryRuleEOperationDecl5053);
+ iv_ruleEOperationDecl=ruleEOperationDecl();
+ _fsp--;
+
+ current =iv_ruleEOperationDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEOperationDecl5063);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEOperationDecl
+
+
+ // $ANTLR start ruleEOperationDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2359:1: ruleEOperationDecl returns [EObject current=null] : ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? ) ';' ) ;
+ public final EObject ruleEOperationDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_unique=null;
+ Token lv_ordered=null;
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eGenericType = null;
+
+ EObject lv_eTypeParameters = null;
+
+ EObject lv_eParameters = null;
+
+ EObject lv_eGenericExceptions = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2363:6: ( ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? ) ';' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:1: ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? ) ';' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:1: ( ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? ) ';' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:2: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? ) ';'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:2: ( ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:3: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' ) ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:3: ( ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:4: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? ) ')'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:4: ( ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:5: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' ) ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:5: ( ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '(' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:6: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? ) '('
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:6: ( ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )? )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:7: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) ) ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )?
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:7: ( ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:8: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:8: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:9: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' ) ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:9: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:10: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* ) 'op'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:10: ( (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:11: (lv_eAnnotations= ruleEAnnotationDecl )* ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2364:11: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop60:
+ do {
+ int alt60=2;
+ int LA60_0 = input.LA(1);
+
+ if ( (LA60_0==22) ) {
+ alt60=1;
+ }
+
+
+ switch (alt60) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2367:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEOperationDecl5131);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop60;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2385:3: ( (lv_unique= 'bag' ) | (lv_ordered= 'random' ) )*
+ loop61:
+ do {
+ int alt61=3;
+ int LA61_0 = input.LA(1);
+
+ if ( (LA61_0==33) ) {
+ alt61=1;
+ }
+ else if ( (LA61_0==34) ) {
+ alt61=2;
+ }
+
+
+ switch (alt61) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2385:4: (lv_unique= 'bag' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2385:4: (lv_unique= 'bag' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2387:6: lv_unique= 'bag'
+ {
+ lv_unique=(Token)input.LT(1);
+ match(input,33,FOLLOW_33_in_ruleEOperationDecl5158);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::Keyword */, "unique");
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "unique", true, "bag", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2406:6: (lv_ordered= 'random' )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2406:6: (lv_ordered= 'random' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2408:6: lv_ordered= 'random'
+ {
+ lv_ordered=(Token)input.LT(1);
+ match(input,34,FOLLOW_34_in_ruleEOperationDecl5197);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1/@terminal" /* xtext::Keyword */, "ordered");
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "ordered", true, "random", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop61;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,51,FOLLOW_51_in_ruleEOperationDecl5221);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2430:2: ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' )
+ int alt62=2;
+ int LA62_0 = input.LA(1);
+
+ if ( (LA62_0==RULE_ID||LA62_0==47) ) {
+ alt62=1;
+ }
+ else if ( (LA62_0==52) ) {
+ alt62=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2430:2: ( (lv_eGenericType= ruleEGenericTypeReferenceDecl ) | 'void' )", 62, 0, input);
+
+ throw nvae;
+ }
+ switch (alt62) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2430:3: (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2430:3: (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2433:6: lv_eGenericType= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEOperationDecl5257);
+ lv_eGenericType=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2452:6: 'void'
+ {
+ match(input,52,FOLLOW_52_in_ruleEOperationDecl5276);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@groups.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2456:3: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2458:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEOperationDecl5299);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:3: ( ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>' )?
+ int alt64=2;
+ int LA64_0 = input.LA(1);
+
+ if ( (LA64_0==29) ) {
+ alt64=1;
+ }
+ switch (alt64) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:4: ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* ) '>'
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:4: ( ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:5: ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) ) ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:5: ( '<' (lv_eTypeParameters= ruleETypeParameterDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2476:6: '<' (lv_eTypeParameters= ruleETypeParameterDecl )
+ {
+ match(input,29,FOLLOW_29_in_ruleEOperationDecl5323);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2480:1: (lv_eTypeParameters= ruleETypeParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2483:6: lv_eTypeParameters= ruleETypeParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleETypeParameterDecl_in_ruleEOperationDecl5357);
+ lv_eTypeParameters=ruleETypeParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2501:3: ( ',' (lv_eTypeParameters= ruleETypeParameterDecl ) )*
+ loop63:
+ do {
+ int alt63=2;
+ int LA63_0 = input.LA(1);
+
+ if ( (LA63_0==24) ) {
+ alt63=1;
+ }
+
+
+ switch (alt63) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2501:4: ',' (lv_eTypeParameters= ruleETypeParameterDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEOperationDecl5372);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2505:1: (lv_eTypeParameters= ruleETypeParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2508:6: lv_eTypeParameters= ruleETypeParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleETypeParameterDecl_in_ruleEOperationDecl5406);
+ lv_eTypeParameters=ruleETypeParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eTypeParameters", lv_eTypeParameters, "ETypeParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop63;
+ }
+ } while (true);
+
+
+ }
+
+ match(input,30,FOLLOW_30_in_ruleEOperationDecl5422);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,23,FOLLOW_23_in_ruleEOperationDecl5434);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2534:2: ( (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )* )?
+ int alt66=2;
+ int LA66_0 = input.LA(1);
+
+ if ( (LA66_0==RULE_ID||LA66_0==22||LA66_0==47) ) {
+ alt66=1;
+ }
+ switch (alt66) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2534:3: (lv_eParameters= ruleEParameterDecl ) ( ',' (lv_eParameters= ruleEParameterDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2534:3: (lv_eParameters= ruleEParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2537:6: lv_eParameters= ruleEParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEParameterDecl_in_ruleEOperationDecl5470);
+ lv_eParameters=ruleEParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eParameters", lv_eParameters, "EParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2555:2: ( ',' (lv_eParameters= ruleEParameterDecl ) )*
+ loop65:
+ do {
+ int alt65=2;
+ int LA65_0 = input.LA(1);
+
+ if ( (LA65_0==24) ) {
+ alt65=1;
+ }
+
+
+ switch (alt65) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2555:3: ',' (lv_eParameters= ruleEParameterDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEOperationDecl5484);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2559:1: (lv_eParameters= ruleEParameterDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2562:6: lv_eParameters= ruleEParameterDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEParameterDecl_in_ruleEOperationDecl5518);
+ lv_eParameters=ruleEParameterDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eParameters", lv_eParameters, "EParameterDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop65;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,25,FOLLOW_25_in_ruleEOperationDecl5536);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2584:2: ( ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )* )?
+ int alt68=2;
+ int LA68_0 = input.LA(1);
+
+ if ( (LA68_0==53) ) {
+ alt68=1;
+ }
+ switch (alt68) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2584:3: ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) ) ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )*
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2584:3: ( 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2584:4: 'throws' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl )
+ {
+ match(input,53,FOLLOW_53_in_ruleEOperationDecl5548);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2588:1: (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2591:6: lv_eGenericExceptions= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEOperationDecl5582);
+ lv_eGenericExceptions=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eGenericExceptions", lv_eGenericExceptions, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2609:3: ( ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl ) )*
+ loop67:
+ do {
+ int alt67=2;
+ int LA67_0 = input.LA(1);
+
+ if ( (LA67_0==24) ) {
+ alt67=1;
+ }
+
+
+ switch (alt67) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2609:4: ',' (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl )
+ {
+ match(input,24,FOLLOW_24_in_ruleEOperationDecl5597);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.0" /* xtext::Keyword */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2613:1: (lv_eGenericExceptions= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2616:6: lv_eGenericExceptions= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.0/@abstractTokens.1/@abstractTokens.1/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEOperationDecl5631);
+ lv_eGenericExceptions=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EOperation");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eGenericExceptions", lv_eGenericExceptions, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop67;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ match(input,13,FOLLOW_13_in_ruleEOperationDecl5649);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.16/@alternatives/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEOperationDecl
+
+
+ // $ANTLR start entryRuleEParameterDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2647:1: entryRuleEParameterDecl returns [EObject current=null] : iv_ruleEParameterDecl= ruleEParameterDecl EOF ;
+ public final EObject entryRuleEParameterDecl() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEParameterDecl = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2647:56: (iv_ruleEParameterDecl= ruleEParameterDecl EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2648:2: iv_ruleEParameterDecl= ruleEParameterDecl EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleEParameterDecl_in_entryRuleEParameterDecl5684);
+ iv_ruleEParameterDecl=ruleEParameterDecl();
+ _fsp--;
+
+ current =iv_ruleEParameterDecl;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleEParameterDecl5694);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleEParameterDecl
+
+
+ // $ANTLR start ruleEParameterDecl
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2655:1: ruleEParameterDecl returns [EObject current=null] : ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) (lv_name= RULE_ID ) ) ;
+ public final EObject ruleEParameterDecl() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name=null;
+ EObject lv_eAnnotations = null;
+
+ EObject lv_eGenericType = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2659:6: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) (lv_name= RULE_ID ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:1: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) (lv_name= RULE_ID ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:1: ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) (lv_name= RULE_ID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:2: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) ) (lv_name= RULE_ID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:2: ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:3: (lv_eAnnotations= ruleEAnnotationDecl )* (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2660:3: (lv_eAnnotations= ruleEAnnotationDecl )*
+ loop69:
+ do {
+ int alt69=2;
+ int LA69_0 = input.LA(1);
+
+ if ( (LA69_0==22) ) {
+ alt69=1;
+ }
+
+
+ switch (alt69) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2663:6: lv_eAnnotations= ruleEAnnotationDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEAnnotationDecl_in_ruleEParameterDecl5754);
+ lv_eAnnotations=ruleEAnnotationDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.add(current, "eAnnotations", lv_eAnnotations, "EAnnotationDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ default :
+ break loop69;
+ }
+ } while (true);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2681:3: (lv_eGenericType= ruleEGenericTypeReferenceDecl )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2684:6: lv_eGenericType= ruleEGenericTypeReferenceDecl
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.0/@abstractTokens.1/@terminal" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleEGenericTypeReferenceDecl_in_ruleEParameterDecl5793);
+ lv_eGenericType=ruleEGenericTypeReferenceDecl();
+ _fsp--;
+
+
+ if (current==null) {
+ current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode.getParent(), current);
+ }
+
+ try {
+ factory.set(current, "eGenericType", lv_eGenericType, "EGenericTypeReferenceDecl", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+ currentNode = currentNode.getParent();
+
+
+ }
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2702:3: (lv_name= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2704:6: lv_name= RULE_ID
+ {
+ lv_name=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEParameterDecl5819);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.17/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "name");
+
+
+ if (current==null) {
+ current = factory.create("EParameter");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "name", lv_name, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleEParameterDecl
+
+
+ // $ANTLR start entryRuleMapEntrySuper
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2731:1: entryRuleMapEntrySuper returns [EObject current=null] : iv_ruleMapEntrySuper= ruleMapEntrySuper EOF ;
+ public final EObject entryRuleMapEntrySuper() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMapEntrySuper = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2731:55: (iv_ruleMapEntrySuper= ruleMapEntrySuper EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2732:2: iv_ruleMapEntrySuper= ruleMapEntrySuper EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.18" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleMapEntrySuper_in_entryRuleMapEntrySuper5865);
+ iv_ruleMapEntrySuper=ruleMapEntrySuper();
+ _fsp--;
+
+ current =iv_ruleMapEntrySuper;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMapEntrySuper5875);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleMapEntrySuper
+
+
+ // $ANTLR start ruleMapEntrySuper
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2739:1: ruleMapEntrySuper returns [EObject current=null] : this_MapEntry= ruleMapEntry ;
+ public final EObject ruleMapEntrySuper() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_MapEntry = null;
+
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2743:6: (this_MapEntry= ruleMapEntry )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2745:5: this_MapEntry= ruleMapEntry
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.18/@alternatives" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleMapEntry_in_ruleMapEntrySuper5921);
+ this_MapEntry=ruleMapEntry();
+ _fsp--;
+
+
+ current = this_MapEntry;
+ currentNode = currentNode.getParent();
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleMapEntrySuper
+
+
+ // $ANTLR start entryRuleMapEntry
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2762:1: entryRuleMapEntry returns [EObject current=null] : iv_ruleMapEntry= ruleMapEntry EOF ;
+ public final EObject entryRuleMapEntry() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleMapEntry = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2762:50: (iv_ruleMapEntry= ruleMapEntry EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2763:2: iv_ruleMapEntry= ruleMapEntry EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleMapEntry_in_entryRuleMapEntry5954);
+ iv_ruleMapEntry=ruleMapEntry();
+ _fsp--;
+
+ current =iv_ruleMapEntry;
+ match(input,EOF,FOLLOW_EOF_in_entryRuleMapEntry5964);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleMapEntry
+
+
+ // $ANTLR start ruleMapEntry
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2770:1: ruleMapEntry returns [EObject current=null] : ( ( (lv_detailKey= RULE_ID ) '=' ) (lv_detailValue= RULE_STRING ) ) ;
+ public final EObject ruleMapEntry() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_detailKey=null;
+ Token lv_detailValue=null;
+
+ EObject temp=null; setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2774:6: ( ( ( (lv_detailKey= RULE_ID ) '=' ) (lv_detailValue= RULE_STRING ) ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:1: ( ( (lv_detailKey= RULE_ID ) '=' ) (lv_detailValue= RULE_STRING ) )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:1: ( ( (lv_detailKey= RULE_ID ) '=' ) (lv_detailValue= RULE_STRING ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:2: ( (lv_detailKey= RULE_ID ) '=' ) (lv_detailValue= RULE_STRING )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:2: ( (lv_detailKey= RULE_ID ) '=' )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:3: (lv_detailKey= RULE_ID ) '='
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2775:3: (lv_detailKey= RULE_ID )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2777:6: lv_detailKey= RULE_ID
+ {
+ lv_detailKey=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMapEntry6011);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.0/@abstractTokens.0/@terminal" /* xtext::RuleCall */, "detailKey");
+
+
+ if (current==null) {
+ current = factory.create("MapEntry");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "detailKey", lv_detailKey, "ID", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+ match(input,12,FOLLOW_12_in_ruleMapEntry6031);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.0/@abstractTokens.1" /* xtext::Keyword */, null);
+
+
+ }
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2799:2: (lv_detailValue= RULE_STRING )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2801:6: lv_detailValue= RULE_STRING
+ {
+ lv_detailValue=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleMapEntry6053);
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.19/@alternatives/@abstractTokens.1/@terminal" /* xtext::RuleCall */, "detailValue");
+
+
+ if (current==null) {
+ current = factory.create("MapEntry");
+ associateNodeWithAstElement(currentNode, current);
+ }
+
+ try {
+ factory.set(current, "detailValue", lv_detailValue, "STRING", currentNode);
+ } catch (ValueConverterException vce) {
+ handleValueConverterException(vce);
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleMapEntry
+
+
+ // $ANTLR start entryRuleQID
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2830:1: entryRuleQID returns [String current=null] : iv_ruleQID= ruleQID EOF ;
+ public final String entryRuleQID() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleQID = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2830:44: (iv_ruleQID= ruleQID EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2831:2: iv_ruleQID= ruleQID EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleQID_in_entryRuleQID6102);
+ iv_ruleQID=ruleQID();
+ _fsp--;
+
+ current =iv_ruleQID.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleQID6113);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleQID
+
+
+ // $ANTLR start ruleQID
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2838:1: ruleQID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID= RULE_ID ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )* ) ;
+ public final AntlrDatatypeRuleToken ruleQID() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token this_ID=null;
+ Token kw=null;
+
+ setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2842:6: ( (this_ID= RULE_ID ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )* ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2843:1: (this_ID= RULE_ID ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )* )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2843:1: (this_ID= RULE_ID ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )* )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2843:6: this_ID= RULE_ID ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )*
+ {
+ this_ID=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQID6153);
+
+ current.merge(this_ID);
+
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.0" /* xtext::RuleCall */, null);
+
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2850:1: ( (kw= '.' | kw= '$' ) this_ID= RULE_ID )*
+ loop71:
+ do {
+ int alt71=2;
+ int LA71_0 = input.LA(1);
+
+ if ( ((LA71_0>=54 && LA71_0<=55)) ) {
+ alt71=1;
+ }
+
+
+ switch (alt71) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2850:2: (kw= '.' | kw= '$' ) this_ID= RULE_ID
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2850:2: (kw= '.' | kw= '$' )
+ int alt70=2;
+ int LA70_0 = input.LA(1);
+
+ if ( (LA70_0==54) ) {
+ alt70=1;
+ }
+ else if ( (LA70_0==55) ) {
+ alt70=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2850:2: (kw= '.' | kw= '$' )", 70, 0, input);
+
+ throw nvae;
+ }
+ switch (alt70) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2851:2: kw= '.'
+ {
+ kw=(Token)input.LT(1);
+ match(input,54,FOLLOW_54_in_ruleQID6173);
+
+ current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.0/@groups.0" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2858:2: kw= '$'
+ {
+ kw=(Token)input.LT(1);
+ match(input,55,FOLLOW_55_in_ruleQID6192);
+
+ current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.0/@groups.1" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+ this_ID=(Token)input.LT(1);
+ match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQID6208);
+
+ current.merge(this_ID);
+
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.21/@alternatives/@abstractTokens.1/@abstractTokens.1" /* xtext::RuleCall */, null);
+
+
+ }
+ break;
+
+ default :
+ break loop71;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleQID
+
+
+ // $ANTLR start entryRuleSTRING_OR_QID
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2880:1: entryRuleSTRING_OR_QID returns [String current=null] : iv_ruleSTRING_OR_QID= ruleSTRING_OR_QID EOF ;
+ public final String entryRuleSTRING_OR_QID() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleSTRING_OR_QID = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2880:54: (iv_ruleSTRING_OR_QID= ruleSTRING_OR_QID EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2881:2: iv_ruleSTRING_OR_QID= ruleSTRING_OR_QID EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleSTRING_OR_QID_in_entryRuleSTRING_OR_QID6256);
+ iv_ruleSTRING_OR_QID=ruleSTRING_OR_QID();
+ _fsp--;
+
+ current =iv_ruleSTRING_OR_QID.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSTRING_OR_QID6267);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSTRING_OR_QID
+
+
+ // $ANTLR start ruleSTRING_OR_QID
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2888:1: ruleSTRING_OR_QID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING= RULE_STRING | this_QID= ruleQID ) ;
+ public final AntlrDatatypeRuleToken ruleSTRING_OR_QID() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token this_STRING=null;
+ AntlrDatatypeRuleToken this_QID = null;
+
+
+ setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2892:6: ( (this_STRING= RULE_STRING | this_QID= ruleQID ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2893:1: (this_STRING= RULE_STRING | this_QID= ruleQID )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2893:1: (this_STRING= RULE_STRING | this_QID= ruleQID )
+ int alt72=2;
+ int LA72_0 = input.LA(1);
+
+ if ( (LA72_0==RULE_STRING) ) {
+ alt72=1;
+ }
+ else if ( (LA72_0==RULE_ID) ) {
+ alt72=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("2893:1: (this_STRING= RULE_STRING | this_QID= ruleQID )", 72, 0, input);
+
+ throw nvae;
+ }
+ switch (alt72) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2893:6: this_STRING= RULE_STRING
+ {
+ this_STRING=(Token)input.LT(1);
+ match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSTRING_OR_QID6307);
+
+ current.merge(this_STRING);
+
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22/@alternatives/@groups.0" /* xtext::RuleCall */, null);
+
+
+ }
+ break;
+ case 2 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2902:5: this_QID= ruleQID
+ {
+
+ currentNode=createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.22/@alternatives/@groups.1" /* xtext::RuleCall */, currentNode);
+
+ pushFollow(FOLLOW_ruleQID_in_ruleSTRING_OR_QID6340);
+ this_QID=ruleQID();
+ _fsp--;
+
+
+ current.merge(this_QID);
+
+
+ currentNode = currentNode.getParent();
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSTRING_OR_QID
+
+
+ // $ANTLR start entryRuleSINT
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2922:1: entryRuleSINT returns [String current=null] : iv_ruleSINT= ruleSINT EOF ;
+ public final String entryRuleSINT() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleSINT = null;
+
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2922:45: (iv_ruleSINT= ruleSINT EOF )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2923:2: iv_ruleSINT= ruleSINT EOF
+ {
+ currentNode = createCompositeNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23" /* xtext::ParserRule */, currentNode);
+ pushFollow(FOLLOW_ruleSINT_in_entryRuleSINT6386);
+ iv_ruleSINT=ruleSINT();
+ _fsp--;
+
+ current =iv_ruleSINT.getText();
+ match(input,EOF,FOLLOW_EOF_in_entryRuleSINT6397);
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end entryRuleSINT
+
+
+ // $ANTLR start ruleSINT
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2930:1: ruleSINT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT= RULE_INT ) ;
+ public final AntlrDatatypeRuleToken ruleSINT() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+ Token this_INT=null;
+
+ setCurrentLookahead(); resetLookahead();
+
+ try {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2934:6: ( ( (kw= '-' )? this_INT= RULE_INT ) )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2935:1: ( (kw= '-' )? this_INT= RULE_INT )
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2935:1: ( (kw= '-' )? this_INT= RULE_INT )
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2935:2: (kw= '-' )? this_INT= RULE_INT
+ {
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2935:2: (kw= '-' )?
+ int alt73=2;
+ int LA73_0 = input.LA(1);
+
+ if ( (LA73_0==56) ) {
+ alt73=1;
+ }
+ switch (alt73) {
+ case 1 :
+ // ./src-gen/org/eclipse/xtext/example/parser/antlr/internal/InternalEcoreDsl.g:2936:2: kw= '-'
+ {
+ kw=(Token)input.LT(1);
+ match(input,56,FOLLOW_56_in_ruleSINT6436);
+
+ current.merge(kw);
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23/@alternatives/@abstractTokens.0" /* xtext::Keyword */, null);
+
+
+ }
+ break;
+
+ }
+
+ this_INT=(Token)input.LT(1);
+ match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleSINT6453);
+
+ current.merge(this_INT);
+
+
+ createLeafNode("classpath:/org/eclipse/xtext/example/EcoreDsl.xmi#//@rules.23/@alternatives/@abstractTokens.1" /* xtext::RuleCall */, null);
+
+
+ }
+
+
+ }
+
+ resetLookahead();
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end ruleSINT
+
+
+ protected DFA4 dfa4 = new DFA4(this);
+ protected DFA6 dfa6 = new DFA6(this);
+ protected DFA7 dfa7 = new DFA7(this);
+ protected DFA10 dfa10 = new DFA10(this);
+ protected DFA21 dfa21 = new DFA21(this);
+ protected DFA22 dfa22 = new DFA22(this);
+ static final String DFA4_eotS =
+ "\20\uffff";
+ static final String DFA4_eofS =
+ "\20\uffff";
+ static final String DFA4_minS =
+ "\1\16\1\uffff\1\5\2\uffff\1\4\1\27\1\4\1\14\1\5\1\30\1\4\1\16\1"+
+ "\14\1\5\1\30";
+ static final String DFA4_maxS =
+ "\1\60\1\uffff\1\5\2\uffff\2\27\1\4\1\14\1\5\1\31\1\4\1\60\1\14\1"+
+ "\5\1\31";
+ static final String DFA4_acceptS =
+ "\1\uffff\1\3\1\uffff\1\1\1\2\13\uffff";
+ static final String DFA4_specialS =
+ "\20\uffff}>";
+ static final String[] DFA4_transitionS = {
+ "\1\3\3\uffff\1\1\2\4\1\uffff\1\2\3\uffff\3\4\23\uffff\1\4",
+ "",
+ "\1\5",
+ "",
+ "",
+ "\1\6\22\uffff\1\7",
+ "\1\7",
+ "\1\10",
+ "\1\11",
+ "\1\12",
+ "\1\13\1\14",
+ "\1\15",
+ "\1\3\4\uffff\2\4\1\uffff\1\2\3\uffff\3\4\23\uffff\1\4",
+ "\1\16",
+ "\1\17",
+ "\1\13\1\14"
+ };
+
+ static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
+ static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
+ static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
+ static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
+ static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
+ static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
+ static final short[][] DFA4_transition;
+
+ static {
+ int numStates = DFA4_transitionS.length;
+ DFA4_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
+ }
+ }
+
+ class DFA4 extends DFA {
+
+ public DFA4(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 4;
+ this.eot = DFA4_eot;
+ this.eof = DFA4_eof;
+ this.min = DFA4_min;
+ this.max = DFA4_max;
+ this.accept = DFA4_accept;
+ this.special = DFA4_special;
+ this.transition = DFA4_transition;
+ }
+ public String getDescription() {
+ return "()* loopback of 326:2: ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*";
+ }
+ }
+ static final String DFA6_eotS =
+ "\20\uffff";
+ static final String DFA6_eofS =
+ "\20\uffff";
+ static final String DFA6_minS =
+ "\1\16\1\uffff\1\5\2\uffff\1\4\1\27\1\4\1\14\1\5\1\30\1\4\1\16\1"+
+ "\14\1\5\1\30";
+ static final String DFA6_maxS =
+ "\1\60\1\uffff\1\5\2\uffff\2\27\1\4\1\14\1\5\1\31\1\4\1\60\1\14\1"+
+ "\5\1\31";
+ static final String DFA6_acceptS =
+ "\1\uffff\1\3\1\uffff\1\1\1\2\13\uffff";
+ static final String DFA6_specialS =
+ "\20\uffff}>";
+ static final String[] DFA6_transitionS = {
+ "\1\3\3\uffff\1\1\2\4\1\uffff\1\2\3\uffff\3\4\23\uffff\1\4",
+ "",
+ "\1\5",
+ "",
+ "",
+ "\1\6\22\uffff\1\7",
+ "\1\7",
+ "\1\10",
+ "\1\11",
+ "\1\12",
+ "\1\13\1\14",
+ "\1\15",
+ "\1\3\4\uffff\2\4\1\uffff\1\2\3\uffff\3\4\23\uffff\1\4",
+ "\1\16",
+ "\1\17",
+ "\1\13\1\14"
+ };
+
+ static final short[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS);
+ static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS);
+ static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS);
+ static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS);
+ static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS);
+ static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS);
+ static final short[][] DFA6_transition;
+
+ static {
+ int numStates = DFA6_transitionS.length;
+ DFA6_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA6_transition[i] = DFA.unpackEncodedString(DFA6_transitionS[i]);
+ }
+ }
+
+ class DFA6 extends DFA {
+
+ public DFA6(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 6;
+ this.eot = DFA6_eot;
+ this.eof = DFA6_eof;
+ this.min = DFA6_min;
+ this.max = DFA6_max;
+ this.accept = DFA6_accept;
+ this.special = DFA6_special;
+ this.transition = DFA6_transition;
+ }
+ public String getDescription() {
+ return "()* loopback of 444:2: ( (lv_eSubpackages= ruleSubEPackageDecl ) | (lv_eClassifiers= ruleEClassifierDecl ) )*";
+ }
+ }
+ static final String DFA7_eotS =
+ "\17\uffff";
+ static final String DFA7_eofS =
+ "\17\uffff";
+ static final String DFA7_minS =
+ "\1\23\1\5\2\uffff\1\4\1\27\1\4\1\14\1\5\1\30\1\4\1\23\1\14\1\5\1"+
+ "\30";
+ static final String DFA7_maxS =
+ "\1\60\1\5\2\uffff\2\27\1\4\1\14\1\5\1\31\1\4\1\60\1\14\1\5\1\31";
+ static final String DFA7_acceptS =
+ "\2\uffff\1\1\1\2\13\uffff";
+ static final String DFA7_specialS =
+ "\17\uffff}>";
+ static final String[] DFA7_transitionS = {
+ "\2\3\1\uffff\1\1\3\uffff\3\2\23\uffff\1\3",
+ "\1\4",
+ "",
+ "",
+ "\1\5\22\uffff\1\6",
+ "\1\6",
+ "\1\7",
+ "\1\10",
+ "\1\11",
+ "\1\12\1\13",
+ "\1\14",
+ "\2\3\1\uffff\1\1\3\uffff\3\2\23\uffff\1\3",
+ "\1\15",
+ "\1\16",
+ "\1\12\1\13"
+ };
+
+ static final short[] DFA7_eot = DFA.unpackEncodedString(DFA7_eotS);
+ static final short[] DFA7_eof = DFA.unpackEncodedString(DFA7_eofS);
+ static final char[] DFA7_min = DFA.unpackEncodedStringToUnsignedChars(DFA7_minS);
+ static final char[] DFA7_max = DFA.unpackEncodedStringToUnsignedChars(DFA7_maxS);
+ static final short[] DFA7_accept = DFA.unpackEncodedString(DFA7_acceptS);
+ static final short[] DFA7_special = DFA.unpackEncodedString(DFA7_specialS);
+ static final short[][] DFA7_transition;
+
+ static {
+ int numStates = DFA7_transitionS.length;
+ DFA7_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA7_transition[i] = DFA.unpackEncodedString(DFA7_transitionS[i]);
+ }
+ }
+
+ class DFA7 extends DFA {
+
+ public DFA7(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 7;
+ this.eot = DFA7_eot;
+ this.eof = DFA7_eof;
+ this.min = DFA7_min;
+ this.max = DFA7_max;
+ this.accept = DFA7_accept;
+ this.special = DFA7_special;
+ this.transition = DFA7_transition;
+ }
+ public String getDescription() {
+ return "513:1: (this_EClassDecl= ruleEClassDecl | this_EDataTypeDecl= ruleEDataTypeDecl )";
+ }
+ }
+ static final String DFA10_eotS =
+ "\17\uffff";
+ static final String DFA10_eofS =
+ "\17\uffff";
+ static final String DFA10_minS =
+ "\1\23\1\5\2\uffff\1\4\1\27\1\4\1\14\1\5\1\30\1\4\1\23\1\14\1\5\1"+
+ "\30";
+ static final String DFA10_maxS =
+ "\1\60\1\5\2\uffff\2\27\1\4\1\14\1\5\1\31\1\4\1\60\1\14\1\5\1\31";
+ static final String DFA10_acceptS =
+ "\2\uffff\1\1\1\2\13\uffff";
+ static final String DFA10_specialS =
+ "\17\uffff}>";
+ static final String[] DFA10_transitionS = {
+ "\2\2\1\uffff\1\1\31\uffff\1\3",
+ "\1\4",
+ "",
+ "",
+ "\1\5\22\uffff\1\6",
+ "\1\6",
+ "\1\7",
+ "\1\10",
+ "\1\11",
+ "\1\12\1\13",
+ "\1\14",
+ "\2\2\1\uffff\1\1\31\uffff\1\3",
+ "\1\15",
+ "\1\16",
+ "\1\12\1\13"
+ };
+
+ static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
+ static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
+ static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
+ static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
+ static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
+ static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
+ static final short[][] DFA10_transition;
+
+ static {
+ int numStates = DFA10_transitionS.length;
+ DFA10_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
+ }
+ }
+
+ class DFA10 extends DFA {
+
+ public DFA10(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 10;
+ this.eot = DFA10_eot;
+ this.eof = DFA10_eof;
+ this.min = DFA10_min;
+ this.max = DFA10_max;
+ this.accept = DFA10_accept;
+ this.special = DFA10_special;
+ this.transition = DFA10_transition;
+ }
+ public String getDescription() {
+ return "554:1: ( ( ( (lv_eAnnotations= ruleEAnnotationDecl )* (lv_serializable= '!serializable' )? ) ( ( ( ( 'datatype' (lv_name= RULE_ID ) ) ':' ) (lv_instanceClassName= ruleSTRING_OR_QID ) ) ';' ) ) | this_EEnumDecl= ruleEEnumDecl )";
+ }
+ }
+ static final String DFA21_eotS =
+ "\22\uffff";
+ static final String DFA21_eofS =
+ "\22\uffff";
+ static final String DFA21_minS =
+ "\1\22\1\uffff\1\5\1\uffff\2\40\1\uffff\1\4\1\27\1\4\1\14\1\5\1\30"+
+ "\1\4\1\26\1\14\1\5\1\30";
+ static final String DFA21_maxS =
+ "\1\63\1\uffff\1\5\1\uffff\2\63\1\uffff\2\27\1\4\1\14\1\5\1\31\1"+
+ "\4\1\63\1\14\1\5\1\31";
+ static final String DFA21_acceptS =
+ "\1\uffff\1\3\1\uffff\1\1\2\uffff\1\2\13\uffff";
+ static final String DFA21_specialS =
+ "\22\uffff}>";
+ static final String[] DFA21_transitionS = {
+ "\1\1\3\uffff\1\2\11\uffff\1\3\1\4\1\5\6\3\3\uffff\3\3\4\uffff"+
+ "\1\6",
+ "",
+ "\1\7",
+ "",
+ "\1\3\1\4\1\5\6\3\3\uffff\3\3\4\uffff\1\6",
+ "\1\3\1\4\1\5\6\3\3\uffff\3\3\4\uffff\1\6",
+ "",
+ "\1\10\22\uffff\1\11",
+ "\1\11",
+ "\1\12",
+ "\1\13",
+ "\1\14",
+ "\1\15\1\16",
+ "\1\17",
+ "\1\2\11\uffff\1\3\1\4\1\5\6\3\3\uffff\3\3\4\uffff\1\6",
+ "\1\20",
+ "\1\21",
+ "\1\15\1\16"
+ };
+
+ static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+ static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+ static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+ static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+ static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+ static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+ static final short[][] DFA21_transition;
+
+ static {
+ int numStates = DFA21_transitionS.length;
+ DFA21_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+ }
+ }
+
+ class DFA21 extends DFA {
+
+ public DFA21(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 21;
+ this.eot = DFA21_eot;
+ this.eof = DFA21_eof;
+ this.min = DFA21_min;
+ this.max = DFA21_max;
+ this.accept = DFA21_accept;
+ this.special = DFA21_special;
+ this.transition = DFA21_transition;
+ }
+ public String getDescription() {
+ return "()* loopback of 1014:2: ( (lv_eStructuralFeatures= ruleEStructuralFeatureDecl ) | (lv_eOperations= ruleEOperationDecl ) )*";
+ }
+ }
+ static final String DFA22_eotS =
+ "\26\uffff";
+ static final String DFA22_eofS =
+ "\26\uffff";
+ static final String DFA22_minS =
+ "\1\26\1\5\1\uffff\7\40\1\uffff\1\4\1\27\1\4\1\14\1\5\1\30\1\4\1"+
+ "\26\1\14\1\5\1\30";
+ static final String DFA22_maxS =
+ "\1\56\1\5\1\uffff\7\56\1\uffff\2\27\1\4\1\14\1\5\1\31\1\4\1\56\1"+
+ "\14\1\5\1\31";
+ static final String DFA22_acceptS =
+ "\2\uffff\1\1\7\uffff\1\2\13\uffff";
+ static final String DFA22_specialS =
+ "\26\uffff}>";
+ static final String[] DFA22_transitionS = {
+ "\1\1\11\uffff\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff"+
+ "\3\12",
+ "\1\13",
+ "",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff\3\12",
+ "",
+ "\1\14\22\uffff\1\15",
+ "\1\15",
+ "\1\16",
+ "\1\17",
+ "\1\20",
+ "\1\21\1\22",
+ "\1\23",
+ "\1\1\11\uffff\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\2\3\uffff"+
+ "\3\12",
+ "\1\24",
+ "\1\25",
+ "\1\21\1\22"
+ };
+
+ static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
+ static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
+ static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
+ static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
+ static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
+ static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
+ static final short[][] DFA22_transition;
+
+ static {
+ int numStates = DFA22_transitionS.length;
+ DFA22_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
+ }
+ }
+
+ class DFA22 extends DFA {
+
+ public DFA22(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 22;
+ this.eot = DFA22_eot;
+ this.eof = DFA22_eof;
+ this.min = DFA22_min;
+ this.max = DFA22_max;
+ this.accept = DFA22_accept;
+ this.special = DFA22_special;
+ this.transition = DFA22_transition;
+ }
+ public String getDescription() {
+ return "1083:1: (this_EAttributeDecl= ruleEAttributeDecl | this_EReferenceDecl= ruleEReferenceDecl )";
+ }
+ }
+
+
+ public static final BitSet FOLLOW_ruleEcoreDsl_in_entryRuleEcoreDsl72 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleEcoreDsl82 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImportStatementDecl_in_ruleEcoreDsl141 = new BitSet(new long[]{0x0000000000404800L});
+ public static final BitSet FOLLOW_ruleEPackageDecl_in_ruleEcoreDsl180 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ruleImportStatementDecl_in_entryRuleImportStatementDecl219 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_entryRuleImportStatementDecl229 = new BitSet(new long[]{0x0000000000000002L});
+ public static