summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Efftinge2011-08-09 11:53:37 (EDT)
committerEd Merks2011-08-09 11:53:59 (EDT)
commite93af52f643f7c858ee563a091c5bce0e00b8161 (patch)
tree3356b6910c06e5066e5df064fba722c6f502b458
parentbcb6ced01df3f0ee885b00271c8191e9b2a80abc (diff)
downloadorg.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.zip
org.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.tar.gz
org.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.tar.bz2
Started work on Interpreter
-rw-r--r--org.eclipse.emf.ecore.xcore.tests/src-gen/org/eclipse/emf/ecore/xcore/XcoreInjectorProvider.java6
-rw-r--r--org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.xtend67
-rw-r--r--org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/scoping/XbaseScopingTest.xtend1
-rw-r--r--org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.java131
-rw-r--r--org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/mapping/XcoreMapperTest.java4
-rw-r--r--org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.emf.ecore.xcore/src-gen/org/eclipse/emf/ecore/xcore/Xcore.xmi4574
-rw-r--r--org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/XcoreRuntimeModule.java7
-rw-r--r--org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInterpreter.java46
-rw-r--r--org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInvocationDelegate.java60
-rw-r--r--org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/XcoreIdentifableSimpleNameProvider.java17
-rw-r--r--org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java18
-rw-r--r--org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/generator/XcoreGenerator.java2
-rw-r--r--org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/util/XcoreGenmodelBuilder.java12
14 files changed, 2644 insertions, 2303 deletions
diff --git a/org.eclipse.emf.ecore.xcore.tests/src-gen/org/eclipse/emf/ecore/xcore/XcoreInjectorProvider.java b/org.eclipse.emf.ecore.xcore.tests/src-gen/org/eclipse/emf/ecore/xcore/XcoreInjectorProvider.java
index 4d08e65..d3c1db0 100644
--- a/org.eclipse.emf.ecore.xcore.tests/src-gen/org/eclipse/emf/ecore/xcore/XcoreInjectorProvider.java
+++ b/org.eclipse.emf.ecore.xcore.tests/src-gen/org/eclipse/emf/ecore/xcore/XcoreInjectorProvider.java
@@ -11,8 +11,8 @@ import org.eclipse.xtext.junit4.IRegistryConfigurator;
import com.google.inject.Injector;
public class XcoreInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
- private GlobalStateMemento globalStateMemento;
- private Injector injector;
+ protected GlobalStateMemento globalStateMemento;
+ protected Injector injector;
static {
GlobalRegistries.initializeDefaults();
@@ -31,6 +31,8 @@ public class XcoreInjectorProvider implements IInjectorProvider, IRegistryConfig
public void setupRegistry() {
globalStateMemento = GlobalRegistries.makeCopyOfGlobalState();
+ if (injector != null)
+ new XcoreStandaloneSetup().register(injector);
}
}
diff --git a/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.xtend b/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.xtend
new file mode 100644
index 0000000..7c0200c
--- /dev/null
+++ b/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.xtend
@@ -0,0 +1,67 @@
+package org.eclipse.emf.ecore.xcore.tests.interpreter
+
+import com.google.inject.Inject
+import org.eclipse.emf.common.util.BasicEList
+import org.eclipse.emf.ecore.EClass
+import org.eclipse.emf.ecore.EPackage
+import org.eclipse.emf.ecore.xcore.XPackage
+import org.eclipse.emf.ecore.xcore.XcoreInjectorProvider
+import org.eclipse.xtext.junit4.InjectWith
+import org.eclipse.xtext.junit4.XtextRunner
+import org.eclipse.xtext.junit4.util.ParseHelper
+import org.eclipse.xtext.junit4.validation.ValidationTestHelper
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import static org.junit.Assert.*
+
+@RunWith(typeof(XtextRunner))
+@InjectWith(typeof(XcoreInjectorProvider))
+class XcoreInterpreterTest {
+
+ @Inject
+ ParseHelper<XPackage> parse
+
+ @Inject
+ ValidationTestHelper validator
+
+ @Test
+ def void testInterpretation() {
+ val pack = parse.parse('''
+ package foo.bar
+
+ class Foo {
+ op String doStuff(String msg) {
+ return "Foo says hi to "+msg
+ }
+ }
+ ''')
+ validator.assertNoErrors(pack)
+ val ePackage = pack.eResource.contents.get(2) as EPackage
+ val fooClass = ePackage.getEClassifier("Foo") as EClass
+ val foo = ePackage.EFactoryInstance.create(fooClass)
+ assertEquals("Foo says hi to Bar", foo.eInvoke(fooClass.EOperations.head, new BasicEList(newArrayList("Bar"))))
+ }
+
+ @Test
+ def void testInterpretation_2() {
+ val pack = parse.parse('''
+ package foo.bar
+
+ class Foo {
+ op String call1(String msg) {
+ return "call1"+call2("call1"+msg)
+ }
+
+ op String call2(String msg) {
+ return "call2"+msg
+ }
+ }
+ ''')
+ validator.assertNoErrors(pack)
+ val ePackage = pack.eResource.contents.get(2) as EPackage
+ val fooClass = ePackage.getEClassifier("Foo") as EClass
+ val foo = ePackage.EFactoryInstance.create(fooClass)
+ assertEquals("call1call2call1Bar", foo.eInvoke(fooClass.EOperations.head, new BasicEList(newArrayList("Bar"))))
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/scoping/XbaseScopingTest.xtend b/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/scoping/XbaseScopingTest.xtend
index dc79513..42d5705 100644
--- a/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/scoping/XbaseScopingTest.xtend
+++ b/org.eclipse.emf.ecore.xcore.tests/src/org/eclipse/emf/ecore/xcore/tests/scoping/XbaseScopingTest.xtend
@@ -33,4 +33,5 @@ class XbaseScopingTest {
''')
validator.assertNoErrors(pack)
}
+
} \ No newline at end of file
diff --git a/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.java b/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.java
new file mode 100644
index 0000000..7e698ae
--- /dev/null
+++ b/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/interpreter/XcoreInterpreterTest.java
@@ -0,0 +1,131 @@
+package org.eclipse.emf.ecore.xcore.tests.interpreter;
+
+import com.google.inject.Inject;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xcore.XPackage;
+import org.eclipse.emf.ecore.xcore.XcoreInjectorProvider;
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.eclipse.xtext.junit4.util.ParseHelper;
+import org.eclipse.xtext.junit4.validation.ValidationTestHelper;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SuppressWarnings("all")
+@RunWith(XtextRunner.class)
+@InjectWith(XcoreInjectorProvider.class)
+public class XcoreInterpreterTest {
+
+ @Inject
+ private ParseHelper<XPackage> parse;
+
+ @Inject
+ private ValidationTestHelper validator;
+
+ @Test
+ public void testInterpretation() throws Exception, InvocationTargetException {
+ {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package foo.bar");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("class Foo {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("op String doStuff(String msg) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("return \"Foo says hi to \"+msg");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ XPackage _parse = this.parse.parse(_builder);
+ final XPackage pack = _parse;
+ this.validator.assertNoErrors(pack);
+ Resource _eResource = pack.eResource();
+ EList<EObject> _contents = _eResource.getContents();
+ EObject _get = _contents.get(2);
+ final EPackage ePackage = ((EPackage) _get);
+ EClassifier _eClassifier = ePackage.getEClassifier("Foo");
+ final EClass fooClass = ((EClass) _eClassifier);
+ EFactory _eFactoryInstance = ePackage.getEFactoryInstance();
+ EObject _create = _eFactoryInstance.create(fooClass);
+ final EObject foo = _create;
+ EList<EOperation> _eOperations = fooClass.getEOperations();
+ EOperation _head = IterableExtensions.<EOperation>head(_eOperations);
+ ArrayList<String> _newArrayList = CollectionLiterals.<String>newArrayList("Bar");
+ BasicEList<String> _basicEList = new BasicEList<String>(_newArrayList);
+ Object _eInvoke = foo.eInvoke(_head, _basicEList);
+ Assert.assertEquals("Foo says hi to Bar", _eInvoke);
+ }
+ }
+
+ @Test
+ public void testInterpretation_2() throws Exception, InvocationTargetException {
+ {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package foo.bar");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("class Foo {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("op String call1(String msg) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("return \"call1\"+call2(\"call1\"+msg)");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("op String call2(String msg) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("return \"call2\"+msg");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ XPackage _parse = this.parse.parse(_builder);
+ final XPackage pack = _parse;
+ this.validator.assertNoErrors(pack);
+ Resource _eResource = pack.eResource();
+ EList<EObject> _contents = _eResource.getContents();
+ EObject _get = _contents.get(2);
+ final EPackage ePackage = ((EPackage) _get);
+ EClassifier _eClassifier = ePackage.getEClassifier("Foo");
+ final EClass fooClass = ((EClass) _eClassifier);
+ EFactory _eFactoryInstance = ePackage.getEFactoryInstance();
+ EObject _create = _eFactoryInstance.create(fooClass);
+ final EObject foo = _create;
+ EList<EOperation> _eOperations = fooClass.getEOperations();
+ EOperation _head = IterableExtensions.<EOperation>head(_eOperations);
+ ArrayList<String> _newArrayList = CollectionLiterals.<String>newArrayList("Bar");
+ BasicEList<String> _basicEList = new BasicEList<String>(_newArrayList);
+ Object _eInvoke = foo.eInvoke(_head, _basicEList);
+ Assert.assertEquals("call1call2call1Bar", _eInvoke);
+ }
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/mapping/XcoreMapperTest.java b/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/mapping/XcoreMapperTest.java
index d24182f..985da51 100644
--- a/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/mapping/XcoreMapperTest.java
+++ b/org.eclipse.emf.ecore.xcore.tests/xtend-gen/org/eclipse/emf/ecore/xcore/tests/mapping/XcoreMapperTest.java
@@ -101,7 +101,7 @@ public class XcoreMapperTest {
Assert.assertEquals(pack, _xcoreElement_1);
EList<XClassifier> _classifiers = pack.getClassifiers();
Iterable<XClass> _filter = IterableExtensions.<XClass>filter(_classifiers, org.eclipse.emf.ecore.xcore.XClass.class);
- for (XClass clazz : _filter) {
+ for (final XClass clazz : _filter) {
{
XClassMapping _mapping_5 = this.mapper.getMapping(clazz);
EClass _eclass = _mapping_5.getEclass();
@@ -123,7 +123,7 @@ public class XcoreMapperTest {
XNamedElement _xcoreElement_3 = _xcoreMapping_3.getXcoreElement();
Assert.assertEquals(clazz, _xcoreElement_3);
EList<XMember> _members = clazz.getMembers();
- for (XMember member : _members) {
+ for (final XMember member : _members) {
final XMember member_1 = member;
boolean matched = false;
if (!matched) {
diff --git a/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF b/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
index dfc4786..9022df7 100644
--- a/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.ecore.xcore/META-INF/MANIFEST.MF
@@ -27,6 +27,7 @@ Export-Package: org.eclipse.emf.ecore.xcore,
org.eclipse.emf.ecore.xcore.formatting,
org.eclipse.emf.ecore.xcore.generator,
org.eclipse.emf.ecore.xcore.impl,
+ org.eclipse.emf.ecore.xcore.interpreter,
org.eclipse.emf.ecore.xcore.linking,
org.eclipse.emf.ecore.xcore.mappings,
org.eclipse.emf.ecore.xcore.parser.antlr,
@@ -34,6 +35,7 @@ Export-Package: org.eclipse.emf.ecore.xcore,
org.eclipse.emf.ecore.xcore.resource,
org.eclipse.emf.ecore.xcore.scoping,
org.eclipse.emf.ecore.xcore.services,
+ org.eclipse.emf.ecore.xcore.typing,
org.eclipse.emf.ecore.xcore.util,
org.eclipse.emf.ecore.xcore.validation
diff --git a/org.eclipse.emf.ecore.xcore/src-gen/org/eclipse/emf/ecore/xcore/Xcore.xmi b/org.eclipse.emf.ecore.xcore/src-gen/org/eclipse/emf/ecore/xcore/Xcore.xmi
index 94b1b0d..fb872dc 100644
--- a/org.eclipse.emf.ecore.xcore/src-gen/org/eclipse/emf/ecore/xcore/Xcore.xmi
+++ b/org.eclipse.emf.ecore.xcore/src-gen/org/eclipse/emf/ecore/xcore/Xcore.xmi
@@ -1,2287 +1,2287 @@
-<?xml version="1.0" encoding="ASCII"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
- <xtext:Grammar name="org.eclipse.emf.ecore.xcore.Xcore" usedGrammars="/1">
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
- <ePackage href="http://www.eclipse.org/emf/2011/Xcore#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
- <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="genmodel">
- <ePackage href="http://www.eclipse.org/emf/2002/GenModel#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="xbase">
- <ePackage href="http://www.eclipse.org/xtext/xbase/Xbase#/"/>
- </metamodelDeclarations>
- <rules xsi:type="xtext:ParserRule" name="XPackage">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XPackage"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="package"/>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="importDirectives" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotationDirectives" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="classifiers" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAnnotation">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotation"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="@"/>
- <elements xsi:type="xtext:Assignment" feature="source" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotationDirective"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="details" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="details" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XStringToStringMapEntry">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XStringToStringMapEntry"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="key" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="="/>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XImportDirective">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XImportDirective"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="import"/>
- <elements xsi:type="xtext:Assignment" feature="importedNamespace" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="QualifiedNameWithWildcard">
- <type metamodel="/0/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- <elements xsi:type="xtext:Keyword" cardinality="?" value=".*"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAnnotationDirective">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotationDirective"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="annotation"/>
- <elements xsi:type="xtext:Assignment" feature="sourceURI" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="as"/>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XClassifier">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClassifier"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XDataType">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XDataType"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="type"/>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="wraps"/>
- <elements xsi:type="xtext:Assignment" feature="instanceTypeName" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="serializable" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="create"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="createBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="convert"/>
- <elements xsi:type="xtext:Assignment" feature="convertBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XEnum">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XEnum"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="enum"/>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="{"/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="literals" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" cardinality="?" value=","/>
- <elements xsi:type="xtext:Assignment" feature="literals" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="}"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XEnumLiteral">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XEnumLiteral"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="as"/>
- <elements xsi:type="xtext:Assignment" feature="literal" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="="/>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XClass">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClass"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClass"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="abstract" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="abstract"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="class"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="interface" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="interface"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="extends"/>
- <elements xsi:type="xtext:Assignment" feature="superTypes" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="wraps"/>
- <elements xsi:type="xtext:Assignment" feature="instanceTypeName" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="{"/>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="members" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="}"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XMember">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XMember"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAttribute">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAttribute"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="readonly" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="readonly"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="transient" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="transient"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="volatile" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="volatile"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unsettable" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unsettable"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="derived" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="derived"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="iD" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="id"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="void"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="="/>
- <elements xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="get"/>
- <elements xsi:type="xtext:Assignment" feature="getBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="set"/>
- <elements xsi:type="xtext:Assignment" feature="setBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="isSet"/>
- <elements xsi:type="xtext:Assignment" feature="isSetBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="unset"/>
- <elements xsi:type="xtext:Assignment" feature="unsetBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XReference">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XReference"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="resolveProxies" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="resolving"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Assignment" feature="containment" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="contains"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="container" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="container"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="local" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="local"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="refers"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="readonly" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="readonly"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="transient" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="transient"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="volatile" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="volatile"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unsettable" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unsettable"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="derived" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="derived"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="opposite"/>
- <elements xsi:type="xtext:Assignment" feature="opposite" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/0/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="keys"/>
- <elements xsi:type="xtext:Assignment" feature="keys" operator="+=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/0/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="keys" operator="+=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/0/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:UnorderedGroup">
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="get"/>
- <elements xsi:type="xtext:Assignment" feature="getBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="set"/>
- <elements xsi:type="xtext:Assignment" feature="setBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="isSet"/>
- <elements xsi:type="xtext:Assignment" feature="isSetBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="unset"/>
- <elements xsi:type="xtext:Assignment" feature="unsetBody" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XOperation">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XOperation"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="op"/>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="void"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="throws"/>
- <elements xsi:type="xtext:Assignment" feature="exceptions" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="exceptions" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="body" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XParameter">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XParameter"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="unique" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unique"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="unordered"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XTypeParameter">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XTypeParameter"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="extends"/>
- <elements xsi:type="xtext:Assignment" feature="bounds" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value="&amp;"/>
- <elements xsi:type="xtext:Assignment" feature="bounds" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XMultiplicity">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2011/Xcore#//XMultiplicity"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="["/>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="?"/>
- <elements xsi:type="xtext:Keyword" value="*"/>
- <elements xsi:type="xtext:Keyword" value="+"/>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value=".."/>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
- <elements xsi:type="xtext:Keyword" value="?"/>
- <elements xsi:type="xtext:Keyword" value="*"/>
- </elements>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="]"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XBlockExpression">
- <type metamodel="/0/@metamodelDeclarations.3">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/0/@metamodelDeclarations.3">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="{"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Assignment" feature="expressions" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.34"/>
- </elements>
- <elements xsi:type="xtext:Keyword" cardinality="?" value=";"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="}"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XGenericType">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/0/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenBase"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" predicated="true" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XGenericTypeArgument">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XGenericWildcardTypeArgument">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/0/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="?"/>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="extends"/>
- <elements xsi:type="xtext:Assignment" feature="upperBound" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="super"/>
- <elements xsi:type="xtext:Assignment" feature="lowerBound" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- </xtext:Grammar>
- <xtext:Grammar name="org.eclipse.xtext.xbase.Xbase" usedGrammars="/2">
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
- <ePackage href="http://www.eclipse.org/xtext/xbase/Xbase#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="types">
- <ePackage href="http://www.eclipse.org/xtext/common/JavaVMTypes#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
- <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
- </metamodelDeclarations>
- <rules xsi:type="xtext:ParserRule" name="XExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAssignment">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XAssignment"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.4"/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.3"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpSingleAssign">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Keyword" value="="/>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpMultiAssign">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Keyword" value="+="/>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XOrExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.6"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.5"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.6"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpOr">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Keyword" value="||"/>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAndExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.8"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.7"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.8"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpAnd">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Keyword" value="&amp;&amp;"/>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XEqualityExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.10"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.9"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.10"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpEquality">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="=="/>
- <elements xsi:type="xtext:Keyword" value="!="/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XRelationalExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="expression" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XInstanceOfExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="instanceof"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </terminal>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpCompare">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value=">="/>
- <elements xsi:type="xtext:Keyword" value="&lt;="/>
- <elements xsi:type="xtext:Keyword" value=">"/>
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XOtherOperatorExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.13"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpOther">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="->"/>
- <elements xsi:type="xtext:Keyword" value=".."/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XAdditiveExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.16"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.15"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.16"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpAdd">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="+"/>
- <elements xsi:type="xtext:Keyword" value="-"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XMultiplicativeExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.18"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.17"/>
- </terminal>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.18"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpMulti">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="*"/>
- <elements xsi:type="xtext:Keyword" value="**"/>
- <elements xsi:type="xtext:Keyword" value="/"/>
- <elements xsi:type="xtext:Keyword" value="%"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XUnaryOperation">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XUnaryOperation"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.19"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.20"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.20"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="OpUnary">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="!"/>
- <elements xsi:type="xtext:Keyword" value="-"/>
- <elements xsi:type="xtext:Keyword" value="+"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XCastedExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.21"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="target" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCastedExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="as"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XMemberFeatureCall">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.22"/>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="assignable" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XAssignment"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="."/>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action" feature="memberCallTarget" operator="=">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XMemberFeatureCall"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="."/>
- <elements xsi:type="xtext:Assignment" feature="nullSafe" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="?."/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="spreading" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="*."/>
- </elements>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" predicated="true" feature="explicitOperationCall" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="("/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XPrimaryExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.40"/>
- <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.28"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.37"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.23"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.27"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.30"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.31"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.32"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.46"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.47"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.48"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.26"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.24"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.41"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.43"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.42"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.44"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.45"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XClosure">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XClosure"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="["/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="|"/>
- <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="]"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XShortClosure">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XClosure"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="|"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XParenthesizedExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XIfExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XIfExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="if"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="if" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- <elements xsi:type="xtext:Assignment" feature="then" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" predicated="true" value="else"/>
- <elements xsi:type="xtext:Assignment" feature="else" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XSwitchExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XSwitchExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="switch"/>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="localVarName" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=":"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="switch" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="{"/>
- <elements xsi:type="xtext:Assignment" cardinality="+" feature="cases" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.29"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="default"/>
- <elements xsi:type="xtext:Keyword" value=":"/>
- <elements xsi:type="xtext:Assignment" feature="default" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="}"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XCasePart">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCasePart"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="typeGuard" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="case"/>
- <elements xsi:type="xtext:Assignment" feature="case" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=":"/>
- <elements xsi:type="xtext:Assignment" feature="then" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XForLoopExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XForLoopExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="for"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="declaredParam" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=":"/>
- <elements xsi:type="xtext:Assignment" feature="forExpression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- <elements xsi:type="xtext:Assignment" feature="eachExpression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XWhileExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XWhileExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="while"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="predicate" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- <elements xsi:type="xtext:Assignment" feature="body" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XDoWhileExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XDoWhileExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="do"/>
- <elements xsi:type="xtext:Assignment" feature="body" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="while"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="predicate" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XBlockExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="{"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Assignment" feature="expressions" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.34"/>
- </elements>
- <elements xsi:type="xtext:Keyword" cardinality="?" value=";"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="}"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XExpressionInsideBlock">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.35"/>
- <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XVariableDeclaration">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XVariableDeclaration"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Assignment" feature="writeable" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="var"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="val"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group" predicated="true">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="="/>
- <elements xsi:type="xtext:Assignment" feature="right" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmFormalParameter">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmFormalParameter"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="parameterType" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XFeatureCall">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XFeatureCall"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="?" feature="declaringType" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmDeclaredType"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.39"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.38"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Assignment" predicated="true" feature="explicitOperationCall" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="("/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="IdOrSuper">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- <elements xsi:type="xtext:Keyword" value="super"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="StaticQualifier">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group" cardinality="+">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- <elements xsi:type="xtext:Keyword" value="::"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XConstructorCall">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XConstructorCall"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="new"/>
- <elements xsi:type="xtext:Assignment" feature="constructor" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmConstructor"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XBooleanLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBooleanLiteral"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="false"/>
- <elements xsi:type="xtext:Assignment" feature="isTrue" operator="?=">
- <terminal xsi:type="xtext:Keyword" value="true"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XNullLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XNullLiteral"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="null"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XIntLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XIntLiteral"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XStringLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XStringLiteral"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="value" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XTypeLiteral">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XTypeLiteral"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="typeof"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/1/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XThrowExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XThrowExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="throw"/>
- <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XReturnExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XReturnExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="return"/>
- <elements xsi:type="xtext:Assignment" cardinality="?" predicated="true" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XTryCatchFinallyExpression">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XTryCatchFinallyExpression"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="try"/>
- <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" cardinality="+" feature="catchClauses" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.49"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" predicated="true" value="finally"/>
- <elements xsi:type="xtext:Assignment" feature="finallyExpression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="finally"/>
- <elements xsi:type="xtext:Assignment" feature="finallyExpression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XCatchClause">
- <type metamodel="/1/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCatchClause"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" predicated="true" value="catch"/>
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="declaredParam" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="QualifiedName">
- <type metamodel="/1/@metamodelDeclarations.2">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" predicated="true" value="."/>
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </alternatives>
- </rules>
- </xtext:Grammar>
- <xtext:Grammar name="org.eclipse.xtext.xbase.Xtype" usedGrammars="/3">
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
- <ePackage href="http://www.eclipse.org/xtext/xbase/Xtype#/"/>
- </metamodelDeclarations>
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
- <ePackage href="http://www.eclipse.org/xtext/common/JavaVMTypes#/"/>
- </metamodelDeclarations>
- <rules xsi:type="xtext:ParserRule" name="JvmTypeReference">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmParameterizedTypeReference"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.2"/>
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.1"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="XFunctionTypeRef">
- <type metamodel="/2/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xtype#//XFunctionTypeRef"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" value="("/>
- <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=")"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="=>"/>
- <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmParameterizedTypeReference">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmParameterizedTypeReference"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="type" operator="=">
- <terminal xsi:type="xtext:CrossReference">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
- </type>
- <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" predicated="true" value="&lt;"/>
- <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value=","/>
- <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value=">"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmArgumentTypeReference">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeReference"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.4"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmWildcardTypeReference">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmWildcardTypeReference"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Action">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmWildcardTypeReference"/>
- </type>
- </elements>
- <elements xsi:type="xtext:Keyword" value="?"/>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.5"/>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.7"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmUpperBound">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmUpperBound"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="extends"/>
- <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmUpperBoundAnded">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmUpperBound"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="&amp;"/>
- <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmLowerBound">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmLowerBound"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="super"/>
- <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="JvmTypeParameter">
- <type metamodel="/2/@metamodelDeclarations.1">
- <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeParameter"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="name" operator="=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="?">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.5"/>
- </elements>
- <elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.6"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
- <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.7"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="QualifiedName">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- <elements xsi:type="xtext:Group" cardinality="*">
- <elements xsi:type="xtext:Keyword" value="."/>
- <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:ParserRule" name="ValidID">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="ID">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:CharacterRange">
- <left value="a"/>
- <right value="z"/>
- </elements>
- <elements xsi:type="xtext:CharacterRange">
- <left value="A"/>
- <right value="Z"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="$"/>
- <elements xsi:type="xtext:Keyword" value="_"/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:CharacterRange">
- <left value="a"/>
- <right value="z"/>
- </elements>
- <elements xsi:type="xtext:CharacterRange">
- <left value="A"/>
- <right value="Z"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="$"/>
- <elements xsi:type="xtext:Keyword" value="_"/>
- <elements xsi:type="xtext:CharacterRange">
- <left value="0"/>
- <right value="9"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- </xtext:Grammar>
- <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/3/@rules.5 /3/@rules.3 /3/@rules.4">
- <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
- <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
- </metamodelDeclarations>
- <rules xsi:type="xtext:TerminalRule" name="ID">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:CharacterRange">
- <left value="a"/>
- <right value="z"/>
- </elements>
- <elements xsi:type="xtext:CharacterRange">
- <left value="A"/>
- <right value="Z"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="_"/>
- </elements>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:CharacterRange">
- <left value="a"/>
- <right value="z"/>
- </elements>
- <elements xsi:type="xtext:CharacterRange">
- <left value="A"/>
- <right value="Z"/>
- </elements>
- <elements xsi:type="xtext:Keyword" value="_"/>
- <elements xsi:type="xtext:CharacterRange">
- <left value="0"/>
- <right value="9"/>
- </elements>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="INT">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
- </type>
- <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
- <left value="0"/>
- <right value="9"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="STRING">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="&quot;"/>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="\"/>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="b"/>
- <elements xsi:type="xtext:Keyword" value="t"/>
- <elements xsi:type="xtext:Keyword" value="n"/>
- <elements xsi:type="xtext:Keyword" value="f"/>
- <elements xsi:type="xtext:Keyword" value="r"/>
- <elements xsi:type="xtext:Keyword" value="u"/>
- <elements xsi:type="xtext:Keyword" value="&quot;"/>
- <elements xsi:type="xtext:Keyword" value="'"/>
- <elements xsi:type="xtext:Keyword" value="\"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:NegatedToken">
- <terminal xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="\"/>
- <elements xsi:type="xtext:Keyword" value="&quot;"/>
- </terminal>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="&quot;"/>
- </elements>
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="'"/>
- <elements xsi:type="xtext:Alternatives" cardinality="*">
- <elements xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="\"/>
- <elements xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="b"/>
- <elements xsi:type="xtext:Keyword" value="t"/>
- <elements xsi:type="xtext:Keyword" value="n"/>
- <elements xsi:type="xtext:Keyword" value="f"/>
- <elements xsi:type="xtext:Keyword" value="r"/>
- <elements xsi:type="xtext:Keyword" value="u"/>
- <elements xsi:type="xtext:Keyword" value="&quot;"/>
- <elements xsi:type="xtext:Keyword" value="'"/>
- <elements xsi:type="xtext:Keyword" value="\"/>
- </elements>
- </elements>
- <elements xsi:type="xtext:NegatedToken">
- <terminal xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="\"/>
- <elements xsi:type="xtext:Keyword" value="'"/>
- </terminal>
- </elements>
- </elements>
- <elements xsi:type="xtext:Keyword" value="'"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="/*"/>
- <elements xsi:type="xtext:UntilToken">
- <terminal xsi:type="xtext:Keyword" value="*/"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Group">
- <elements xsi:type="xtext:Keyword" value="//"/>
- <elements xsi:type="xtext:NegatedToken" cardinality="*">
- <terminal xsi:type="xtext:Alternatives">
- <elements xsi:type="xtext:Keyword" value="&#xA;"/>
- <elements xsi:type="xtext:Keyword" value="&#xD;"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
- <elements xsi:type="xtext:Keyword" value="&#xA;"/>
- </elements>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="WS">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Alternatives" cardinality="+">
- <elements xsi:type="xtext:Keyword" value=" "/>
- <elements xsi:type="xtext:Keyword" value="&#x9;"/>
- <elements xsi:type="xtext:Keyword" value="&#xD;"/>
- <elements xsi:type="xtext:Keyword" value="&#xA;"/>
- </alternatives>
- </rules>
- <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
- <type metamodel="/3/@metamodelDeclarations.0">
- <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </type>
- <alternatives xsi:type="xtext:Wildcard"/>
- </rules>
- </xtext:Grammar>
-</xmi:XMI>
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+ <xtext:Grammar name="org.eclipse.emf.ecore.xcore.Xcore" usedGrammars="/1">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+ <ePackage href="http://www.eclipse.org/emf/2011/Xcore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="genmodel">
+ <ePackage href="http://www.eclipse.org/emf/2002/GenModel#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="xbase">
+ <ePackage href="http://www.eclipse.org/xtext/xbase/Xbase#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="XPackage">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XPackage"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="package"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="importDirectives" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotationDirectives" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="classifiers" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAnnotation">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="@"/>
+ <elements xsi:type="xtext:Assignment" feature="source" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotationDirective"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="details" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="details" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XStringToStringMapEntry">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XStringToStringMapEntry"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="key" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XImportDirective">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XImportDirective"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="import"/>
+ <elements xsi:type="xtext:Assignment" feature="importedNamespace" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="QualifiedNameWithWildcard">
+ <type metamodel="/0/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ <elements xsi:type="xtext:Keyword" cardinality="?" value=".*"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAnnotationDirective">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAnnotationDirective"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="annotation"/>
+ <elements xsi:type="xtext:Assignment" feature="sourceURI" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="as"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XClassifier">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClassifier"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XDataType">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XDataType"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="type"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="wraps"/>
+ <elements xsi:type="xtext:Assignment" feature="instanceTypeName" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="serializable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="create"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="createBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="convert"/>
+ <elements xsi:type="xtext:Assignment" feature="convertBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XEnum">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XEnum"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="enum"/>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="literals" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="literals" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XEnumLiteral">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XEnumLiteral"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="as"/>
+ <elements xsi:type="xtext:Assignment" feature="literal" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XClass">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClass"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XClass"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="abstract" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="abstract"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="class"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="interface" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="interface"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="superTypes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="wraps"/>
+ <elements xsi:type="xtext:Assignment" feature="instanceTypeName" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="members" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XMember">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XMember"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAttribute">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XAttribute"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="readonly" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="readonly"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="transient" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="transient"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="volatile" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="volatile"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unsettable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unsettable"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="derived" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="derived"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="iD" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="id"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="void"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="get"/>
+ <elements xsi:type="xtext:Assignment" feature="getBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="set"/>
+ <elements xsi:type="xtext:Assignment" feature="setBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="isSet"/>
+ <elements xsi:type="xtext:Assignment" feature="isSetBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="unset"/>
+ <elements xsi:type="xtext:Assignment" feature="unsetBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XReference">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="resolveProxies" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="resolving"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="containment" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="contains"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="container" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="container"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="local" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="local"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="refers"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="readonly" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="readonly"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="transient" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="transient"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="volatile" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="volatile"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unsettable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unsettable"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="derived" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="derived"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="opposite"/>
+ <elements xsi:type="xtext:Assignment" feature="opposite" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="keys"/>
+ <elements xsi:type="xtext:Assignment" feature="keys" operator="+=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="keys" operator="+=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:UnorderedGroup">
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="get"/>
+ <elements xsi:type="xtext:Assignment" feature="getBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="set"/>
+ <elements xsi:type="xtext:Assignment" feature="setBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="isSet"/>
+ <elements xsi:type="xtext:Assignment" feature="isSetBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="unset"/>
+ <elements xsi:type="xtext:Assignment" feature="unsetBody" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XOperation">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XOperation"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="op"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="void"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="throws"/>
+ <elements xsi:type="xtext:Assignment" feature="exceptions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="exceptions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="body" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XParameter">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="unique" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unique"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="unordered" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="unordered"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XTypeParameter">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XTypeParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="bounds" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="&amp;"/>
+ <elements xsi:type="xtext:Assignment" feature="bounds" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XMultiplicity">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2011/Xcore#//XMultiplicity"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="["/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="?"/>
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value=".."/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
+ <elements xsi:type="xtext:Keyword" value="?"/>
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="]"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XBlockExpression">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.3">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="expressions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.34"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" cardinality="?" value=";"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XGenericType">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/0/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/GenModel#//GenBase"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XGenericTypeArgument">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XGenericWildcardTypeArgument">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/0/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2011/Xcore#//XGenericType"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="?"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="upperBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="super"/>
+ <elements xsi:type="xtext:Assignment" feature="lowerBound" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.xbase.Xbase" usedGrammars="/2">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+ <ePackage href="http://www.eclipse.org/xtext/xbase/Xbase#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="types">
+ <ePackage href="http://www.eclipse.org/xtext/common/JavaVMTypes#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="XExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAssignment">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XAssignment"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.4"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.3"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpSingleAssign">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="="/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpMultiAssign">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="+="/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XOrExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.6"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.5"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.6"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpOr">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="||"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAndExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.8"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.7"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.8"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpAnd">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Keyword" value="&amp;&amp;"/>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XEqualityExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.10"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.9"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.10"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpEquality">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="=="/>
+ <elements xsi:type="xtext:Keyword" value="!="/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XRelationalExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="expression" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XInstanceOfExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="instanceof"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpCompare">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value=">="/>
+ <elements xsi:type="xtext:Keyword" value="&lt;="/>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XOtherOperatorExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.13"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpOther">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="->"/>
+ <elements xsi:type="xtext:Keyword" value=".."/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XAdditiveExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.16"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.15"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.16"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpAdd">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XMultiplicativeExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.18"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBinaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.17"/>
+ </terminal>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.18"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpMulti">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="*"/>
+ <elements xsi:type="xtext:Keyword" value="**"/>
+ <elements xsi:type="xtext:Keyword" value="/"/>
+ <elements xsi:type="xtext:Keyword" value="%"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XUnaryOperation">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XUnaryOperation"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.19"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.20"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.20"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="OpUnary">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="!"/>
+ <elements xsi:type="xtext:Keyword" value="-"/>
+ <elements xsi:type="xtext:Keyword" value="+"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XCastedExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.21"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="target" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCastedExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="as"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XMemberFeatureCall">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.22"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="assignable" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XAssignment"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action" feature="memberCallTarget" operator="=">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XMemberFeatureCall"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:Assignment" feature="nullSafe" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="?."/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="spreading" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="*."/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" predicated="true" feature="explicitOperationCall" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="("/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="memberCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XPrimaryExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.40"/>
+ <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.28"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.37"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.23"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.27"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.30"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.31"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.32"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.46"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.47"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.48"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.26"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.24"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.41"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.43"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.42"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.44"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.45"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XClosure">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XClosure"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="["/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="|"/>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="]"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XShortClosure">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XClosure"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="formalParameters" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="|"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XParenthesizedExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XIfExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XIfExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="if"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="if" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Assignment" feature="then" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="else"/>
+ <elements xsi:type="xtext:Assignment" feature="else" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XSwitchExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XSwitchExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="switch"/>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="localVarName" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="switch" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="cases" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.29"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="default"/>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="default" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XCasePart">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCasePart"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="typeGuard" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="case"/>
+ <elements xsi:type="xtext:Assignment" feature="case" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="then" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XForLoopExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XForLoopExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="for"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="declaredParam" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=":"/>
+ <elements xsi:type="xtext:Assignment" feature="forExpression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Assignment" feature="eachExpression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XWhileExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XWhileExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="while"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="predicate" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Assignment" feature="body" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XDoWhileExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XDoWhileExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="do"/>
+ <elements xsi:type="xtext:Assignment" feature="body" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="while"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="predicate" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XBlockExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBlockExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="{"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Assignment" feature="expressions" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.34"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" cardinality="?" value=";"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="}"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XExpressionInsideBlock">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.35"/>
+ <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XVariableDeclaration">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XVariableDeclaration"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Assignment" feature="writeable" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="var"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="val"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group" predicated="true">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="="/>
+ <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmFormalParameter">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmFormalParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="parameterType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XFeatureCall">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XFeatureCall"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="?" feature="declaringType" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmDeclaredType"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.39"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="feature" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmIdentifiableElement"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.38"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Assignment" predicated="true" feature="explicitOperationCall" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="("/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="featureCallArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="IdOrSuper">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ <elements xsi:type="xtext:Keyword" value="super"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="StaticQualifier">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group" cardinality="+">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ <elements xsi:type="xtext:Keyword" value="::"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XConstructorCall">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XConstructorCall"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="new"/>
+ <elements xsi:type="xtext:Assignment" feature="constructor" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmConstructor"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="typeArguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.25"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XBooleanLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XBooleanLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="false"/>
+ <elements xsi:type="xtext:Assignment" feature="isTrue" operator="?=">
+ <terminal xsi:type="xtext:Keyword" value="true"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XNullLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XNullLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="null"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XIntLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XIntLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.1"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XStringLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XStringLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/3/@rules.2"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XTypeLiteral">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XTypeLiteral"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="typeof"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/1/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XThrowExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XThrowExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="throw"/>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XReturnExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XReturnExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="return"/>
+ <elements xsi:type="xtext:Assignment" cardinality="?" predicated="true" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XTryCatchFinallyExpression">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XExpression"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XTryCatchFinallyExpression"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="try"/>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" cardinality="+" feature="catchClauses" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.49"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="finally"/>
+ <elements xsi:type="xtext:Assignment" feature="finallyExpression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="finally"/>
+ <elements xsi:type="xtext:Assignment" feature="finallyExpression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XCatchClause">
+ <type metamodel="/1/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xbase#//XCatchClause"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="catch"/>
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="declaredParam" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.36"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="QualifiedName">
+ <type metamodel="/1/@metamodelDeclarations.2">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="."/>
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </alternatives>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.xbase.Xtype" usedGrammars="/3">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+ <ePackage href="http://www.eclipse.org/xtext/xbase/Xtype#/"/>
+ </metamodelDeclarations>
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+ <ePackage href="http://www.eclipse.org/xtext/common/JavaVMTypes#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:ParserRule" name="JvmTypeReference">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmParameterizedTypeReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.2"/>
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.1"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="XFunctionTypeRef">
+ <type metamodel="/2/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/xbase/Xtype#//XFunctionTypeRef"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" value="("/>
+ <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=")"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="=>"/>
+ <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmParameterizedTypeReference">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmParameterizedTypeReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+ <terminal xsi:type="xtext:CrossReference">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmType"/>
+ </type>
+ <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.50"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" predicated="true" value="&lt;"/>
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value=","/>
+ <elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.3"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value=">"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmArgumentTypeReference">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.4"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmWildcardTypeReference">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmWildcardTypeReference"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Action">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmWildcardTypeReference"/>
+ </type>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="?"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.7"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmUpperBound">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmUpperBound"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="extends"/>
+ <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmUpperBoundAnded">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmUpperBound"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&amp;"/>
+ <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmLowerBound">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmLowerBound"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="super"/>
+ <elements xsi:type="xtext:Assignment" feature="typeReference" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.0"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="JvmTypeParameter">
+ <type metamodel="/2/@metamodelDeclarations.1">
+ <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeParameter"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="?">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.5"/>
+ </elements>
+ <elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.6"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Assignment" feature="constraints" operator="+=">
+ <terminal xsi:type="xtext:RuleCall" rule="/2/@rules.7"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="QualifiedName">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ <elements xsi:type="xtext:Group" cardinality="*">
+ <elements xsi:type="xtext:Keyword" value="."/>
+ <elements xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:ParserRule" name="ValidID">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ID">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="$"/>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="$"/>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ </xtext:Grammar>
+ <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/3/@rules.5 /3/@rules.3 /3/@rules.4">
+ <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+ <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </metamodelDeclarations>
+ <rules xsi:type="xtext:TerminalRule" name="ID">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ </elements>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="a"/>
+ <right value="z"/>
+ </elements>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="A"/>
+ <right value="Z"/>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="_"/>
+ <elements xsi:type="xtext:CharacterRange">
+ <left value="0"/>
+ <right value="9"/>
+ </elements>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="INT">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </type>
+ <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+ <left value="0"/>
+ <right value="9"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="STRING">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ </elements>
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Alternatives" cardinality="*">
+ <elements xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="b"/>
+ <elements xsi:type="xtext:Keyword" value="t"/>
+ <elements xsi:type="xtext:Keyword" value="n"/>
+ <elements xsi:type="xtext:Keyword" value="f"/>
+ <elements xsi:type="xtext:Keyword" value="r"/>
+ <elements xsi:type="xtext:Keyword" value="u"/>
+ <elements xsi:type="xtext:Keyword" value="&quot;"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:NegatedToken">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="\"/>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </terminal>
+ </elements>
+ </elements>
+ <elements xsi:type="xtext:Keyword" value="'"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="/*"/>
+ <elements xsi:type="xtext:UntilToken">
+ <terminal xsi:type="xtext:Keyword" value="*/"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Group">
+ <elements xsi:type="xtext:Keyword" value="//"/>
+ <elements xsi:type="xtext:NegatedToken" cardinality="*">
+ <terminal xsi:type="xtext:Alternatives">
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ </terminal>
+ </elements>
+ <elements xsi:type="xtext:Group" cardinality="?">
+ <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </elements>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="WS">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+ <elements xsi:type="xtext:Keyword" value=" "/>
+ <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+ <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+ </alternatives>
+ </rules>
+ <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+ <type metamodel="/3/@metamodelDeclarations.0">
+ <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </type>
+ <alternatives xsi:type="xtext:Wildcard"/>
+ </rules>
+ </xtext:Grammar>
+</xmi:XMI>
diff --git a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/XcoreRuntimeModule.java b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/XcoreRuntimeModule.java
index c675391..d205652 100644
--- a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/XcoreRuntimeModule.java
+++ b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/XcoreRuntimeModule.java
@@ -5,6 +5,7 @@ package org.eclipse.emf.ecore.xcore;
import org.eclipse.emf.ecore.xcore.linking.XcoreLazyLinker;
import org.eclipse.emf.ecore.xcore.resource.XcoreResource;
+import org.eclipse.emf.ecore.xcore.scoping.XcoreIdentifableSimpleNameProvider;
import org.eclipse.emf.ecore.xcore.scoping.XcoreImportedNamespaceAwareScopeProvider;
import org.eclipse.emf.ecore.xcore.scoping.XcoreQualifiedNameProvider;
import org.eclipse.emf.ecore.xcore.scoping.XcoreResourceDescriptionManager;
@@ -19,6 +20,7 @@ import org.eclipse.xtext.scoping.IScopeProvider;
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
import org.eclipse.xtext.serializer.ISerializer;
import org.eclipse.xtext.serializer.impl.Serializer;
+import org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider;
import com.google.inject.Binder;
import com.google.inject.name.Names;
@@ -73,4 +75,9 @@ public class XcoreRuntimeModule extends org.eclipse.emf.ecore.xcore.AbstractXcor
return IReferableElementsUnloader.GenericUnloader.class;
}
+ @Override
+ public Class<? extends IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider()
+ {
+ return XcoreIdentifableSimpleNameProvider.class;
+ }
}
diff --git a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInterpreter.java b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInterpreter.java
new file mode 100644
index 0000000..745d72a
--- /dev/null
+++ b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInterpreter.java
@@ -0,0 +1,46 @@
+package org.eclipse.emf.ecore.xcore.interpreter;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.xcore.XNamedElement;
+import org.eclipse.emf.ecore.xcore.XOperation;
+import org.eclipse.emf.ecore.xcore.mappings.ToXcoreMapping;
+import org.eclipse.emf.ecore.xcore.mappings.XcoreMapper;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.xbase.interpreter.impl.EvaluationException;
+import org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter;
+
+import com.google.inject.Inject;
+
+public class XcoreInterpreter extends XbaseInterpreter
+{
+
+ @Inject
+ private XcoreMapper mapper;
+
+ @Override
+ protected Object invokeOperation(JvmOperation operation, Object receiver, List<Object> argumentValues)
+ {
+ if (receiver instanceof EObject) {
+ ToXcoreMapping mapping = mapper.getToXcoreMapping(operation);
+ if (mapping != null) {
+ XNamedElement element = mapping.getXcoreElement();
+ if (element instanceof XOperation) {
+ EOperation op = mapper.getMapping((XOperation)element).getEOperation();
+ try
+ {
+ return ((EObject)receiver).eInvoke(op, new BasicEList<Object>(argumentValues));
+ } catch (InvocationTargetException e)
+ {
+ throw new EvaluationException(e);
+ }
+ }
+ }
+ }
+ return super.invokeOperation(operation, receiver, argumentValues);
+ }
+}
diff --git a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInvocationDelegate.java b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInvocationDelegate.java
new file mode 100644
index 0000000..29a55c2
--- /dev/null
+++ b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/interpreter/XcoreInvocationDelegate.java
@@ -0,0 +1,60 @@
+package org.eclipse.emf.ecore.xcore.interpreter;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.util.CancelIndicator;
+import org.eclipse.xtext.xbase.XBlockExpression;
+import org.eclipse.xtext.xbase.XExpression;
+import org.eclipse.xtext.xbase.interpreter.IEvaluationResult;
+import org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext;
+
+import com.google.inject.Inject;
+
+public class XcoreInvocationDelegate implements EOperation.Internal.InvocationDelegate
+{
+ @Inject
+ private XcoreInterpreter interpreter;
+
+ private XBlockExpression body;
+ private EOperation eOperation;
+
+ public Object dynamicInvoke(InternalEObject target, EList<?> arguments) throws InvocationTargetException
+ {
+ XExpression body = getBody();
+ if (body == null)
+ throw new IllegalStateException("coudn't find exeutable Xbase body");
+ DefaultEvaluationContext context = new DefaultEvaluationContext();
+ context.newValue(QualifiedName.create("this"), target);
+ for (int i = 0; i< arguments.size(); i++) {
+ Object arg = arguments.get(i);
+ EParameter parameter = getEOperation().getEParameters().get(i);
+ context.newValue(QualifiedName.create(parameter.getName()), arg);
+ }
+ IEvaluationResult result = interpreter.evaluate(body, context, CancelIndicator.NullImpl);
+ if (result.getException() != null)
+ throw new RuntimeException(result.getException());
+ return result.getResult();
+ }
+
+ public EOperation getEOperation()
+ {
+ return eOperation;
+ }
+
+ protected XExpression getBody()
+ {
+ return body;
+ }
+
+ public void initialize(XBlockExpression body, EOperation operation)
+ {
+ this.body = body;
+ this.eOperation = operation;
+ }
+
+}
diff --git a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/XcoreIdentifableSimpleNameProvider.java b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/XcoreIdentifableSimpleNameProvider.java
new file mode 100644
index 0000000..804e188
--- /dev/null
+++ b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/XcoreIdentifableSimpleNameProvider.java
@@ -0,0 +1,17 @@
+package org.eclipse.emf.ecore.xcore.scoping;
+
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmIdentifiableElement;
+import org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider;
+
+public class XcoreIdentifableSimpleNameProvider extends IdentifiableSimpleNameProvider
+{
+ @Override
+ public String getSimpleName(JvmIdentifiableElement element)
+ {
+ if (element instanceof JvmDeclaredType) {
+ return "this";
+ }
+ return super.getSimpleName(element);
+ }
+}
diff --git a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java
index a7cb0f9..4ef7d4e 100644
--- a/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java
+++ b/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java
@@ -26,7 +26,6 @@ import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.ETypeParameter;
import org.eclipse.emf.ecore.ETypedElement;
import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xcore.XAnnotation;
import org.eclipse.emf.ecore.xcore.XAnnotationDirective;
@@ -47,16 +46,21 @@ import org.eclipse.emf.ecore.xcore.XStructuralFeature;
import org.eclipse.emf.ecore.xcore.XTypeParameter;
import org.eclipse.emf.ecore.xcore.XTypedElement;
import org.eclipse.emf.ecore.xcore.XcorePackage;
+import org.eclipse.emf.ecore.xcore.interpreter.XcoreInvocationDelegate;
import org.eclipse.emf.ecore.xcore.mappings.XcoreMapper;
import org.eclipse.xtext.xbase.XBlockExpression;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class XcoreEcoreBuilder
{
@Inject
private XcoreMapper mapper;
+ @Inject
+ private Provider<XcoreInvocationDelegate> delegateProvider;
+
List<Runnable> runnables = new ArrayList<Runnable>();
public void link()
@@ -231,10 +235,14 @@ public class XcoreEcoreBuilder
XBlockExpression body = xOperation.getBody();
if (body != null)
{
- EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
- eAnnotation.setSource(EcorePackage.eNS_URI);
- eAnnotation.getReferences().add(body);
- eOperation.getEAnnotations().add(eAnnotation);
+ final XcoreInvocationDelegate invocationDelegate = delegateProvider.get();
+ invocationDelegate.initialize(body, eOperation);
+ ((EOperation.Internal)eOperation).setInvocationDelegate(invocationDelegate);
+
+// EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+// eAnnotation.setSource(EcorePackage.eNS_URI);
+// eAnnotation.getReferences().add(body);
+// eOperation.getEAnnotations().add(eAnnotation);
}
return eOperation;
}
diff --git a/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/generator/XcoreGenerator.java b/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/generator/XcoreGenerator.java
index 4eb704a..91d5340 100644
--- a/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/generator/XcoreGenerator.java
+++ b/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/generator/XcoreGenerator.java
@@ -44,7 +44,7 @@ public class XcoreGenerator implements IGenerator {
final XPackage pack = ((XPackage) _head);
Iterable<EObject> _allContentsIterable = EObjectExtensions.allContentsIterable(pack);
Iterable<XOperation> _filter = IterableExtensions.<XOperation>filter(_allContentsIterable, org.eclipse.emf.ecore.xcore.XOperation.class);
- for (XOperation op : _filter) {
+ for (final XOperation op : _filter) {
{
XOperationMapping _mapping = this.mappings.getMapping(op);
EOperation _eOperation = _mapping.getEOperation();
diff --git a/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/util/XcoreGenmodelBuilder.java b/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/util/XcoreGenmodelBuilder.java
index f8857e0..59b04c6 100644
--- a/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/util/XcoreGenmodelBuilder.java
+++ b/org.eclipse.emf.ecore.xcore/xtend-gen/org/eclipse/emf/ecore/xcore/util/XcoreGenmodelBuilder.java
@@ -65,7 +65,7 @@ public class XcoreGenmodelBuilder {
public void buildMap(final GenModel genModel) {
Iterable<EObject> _allContentsIterable = EObjectExtensions.allContentsIterable(genModel);
- for (EObject genElement : _allContentsIterable) {
+ for (final EObject genElement : _allContentsIterable) {
final EObject genElement_1 = genElement;
boolean matched = false;
if (!matched) {
@@ -156,12 +156,12 @@ public class XcoreGenmodelBuilder {
HashSet<EPackage> _hashSet = new HashSet<EPackage>();
final HashSet<EPackage> referencedEPackages = _hashSet;
EList<GenPackage> _genPackages = genModel.getGenPackages();
- for (GenPackage genPackage : _genPackages) {
+ for (final GenPackage genPackage : _genPackages) {
EPackage _ecorePackage = genPackage.getEcorePackage();
Iterable<EObject> _allContentsIterable = EObjectExtensions.allContentsIterable(_ecorePackage);
- for (EObject eObject : _allContentsIterable) {
+ for (final EObject eObject : _allContentsIterable) {
EList<EObject> _eCrossReferences = eObject.eCrossReferences();
- for (EObject eCrossReference : _eCrossReferences) {
+ for (final EObject eCrossReference : _eCrossReferences) {
final EObject eCrossReference_1 = eCrossReference;
boolean matched = false;
if (!matched) {
@@ -184,7 +184,7 @@ public class XcoreGenmodelBuilder {
}
}
}
- for (EPackage referencedEPackage : referencedEPackages) {
+ for (final EPackage referencedEPackage : referencedEPackages) {
GenPackage _findGenPackage = genModel.findGenPackage(referencedEPackage);
boolean _operator_equals = ObjectExtensions.operator_equals(_findGenPackage, null);
if (_operator_equals) {
@@ -201,7 +201,7 @@ public class XcoreGenmodelBuilder {
Resource _eResource = genModel.eResource();
ResourceSet _resourceSet = _eResource.getResourceSet();
EList<Resource> _resources = _resourceSet.getResources();
- for (Resource resource : _resources) {
+ for (final Resource resource : _resources) {
URI _uRI = resource.getURI();
String _fileExtension = _uRI.fileExtension();
boolean _equals = "genmodel".equals(_fileExtension);