| author | mclay | 2009-02-05 01:37:07 (EST) |
|---|---|---|
| committer | sefftinge | 2009-02-05 01:37:07 (EST) |
| commit | d908d9434e846499c349a2bbab4b280ed0b9cc43 (patch) (side-by-side diff) | |
| tree | 87738b8aeb625a9dcbd17710650020cf590a2b8f | |
| parent | f06f9e61f84795b667ba4f36ccdf05ce939fcfb8 (diff) | |
| download | org.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
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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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="<"/> + <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="<"/> + <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="<"/> + <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="<"/> + <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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 --- a/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 final BitSet FOLLOW_11_in_ruleImportStatementDecl265 = new BitSet(new long[]{0x0000000000000030L}); + public static final BitSet FOLLOW_RULE_ID_in_ruleImportStatementDecl287 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_12_in_ruleImportStatementDecl307 = new BitSet(new long[]{0x0000000000000020L}); + public static final BitSet FOLLOW_RULE_STRING_in_ruleImportStatementDecl331 = new BitSet(new long[]{0x0000000000002000L}); + public static final BitSet FOLLOW_13_in_ruleImportStatementDecl352 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ruleEPackageDecl_in_entryRuleEPackageDecl387 = new BitSet(new long[]{0x0000000000000000L}); + pu |

