| author | Sven Efftinge | 2011-08-09 11:53:37 (EDT) |
|---|---|---|
| committer | Ed Merks | 2011-08-09 11:53:59 (EDT) |
| commit | e93af52f643f7c858ee563a091c5bce0e00b8161 (patch) (side-by-side diff) | |
| tree | 3356b6910c06e5066e5df064fba722c6f502b458 | |
| parent | bcb6ced01df3f0ee885b00271c8191e9b2a80abc (diff) | |
| download | org.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.zip org.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.tar.gz org.eclipse.emf-e93af52f643f7c858ee563a091c5bce0e00b8161.tar.bz2 | |
Started work on Interpreter
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 --- a/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 --- a/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="<"/>
- <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="<"/>
- <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="<"/>
- <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="&"/>
- <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="<"/>
- <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="&&"/>
- </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="<="/>
- <elements xsi:type="xtext:Keyword" value=">"/>
- <elements xsi:type="xtext:Keyword" value="<"/>
- </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="<"/>
- <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="<"/>
- <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="<"/>
- <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="<"/>
- <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="&"/>
- <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="""/>
- <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="""/>
- <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>
- <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="""/>
- <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="
"/>
- <elements xsi:type="xtext:Keyword" value="
"/>
- </terminal>
- </elements>
- <elements xsi:type="xtext:Group" cardinality="?">
- <elements xsi:type="xtext:Keyword" cardinality="?" value="
"/>
- <elements xsi:type="xtext:Keyword" value="
"/>
- </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="	"/>
- <elements xsi:type="xtext:Keyword" value="
"/>
- <elements xsi:type="xtext:Keyword" value="
"/>
- </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="<"/> + <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="<"/> + <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="<"/> + <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="&"/> + <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="<"/> + <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="&&"/> + </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="<="/> + <elements xsi:type="xtext:Keyword" value=">"/> + <elements xsi:type="xtext:Keyword" value="<"/> + </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="<"/> + <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="<"/> + <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="<"/> + <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="<"/> + <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="&"/> + <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="""/> + <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="""/> + <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> + <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="""/> + <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="
"/> + <elements xsi:type="xtext:Keyword" value="
"/> + </terminal> + </elements> + <elements xsi:type="xtext:Group" cardinality="?"> + <elements xsi:type="xtext:Keyword" cardinality="?" value="
"/> + <elements xsi:type="xtext:Keyword" value="
"/> + </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="	"/> + <elements xsi:type="xtext:Keyword" value="
"/> + <elements xsi:type="xtext:Keyword" value="
"/> + </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 --- a/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 --- a/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 --- a/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); |

