From 09f94b4ac1f598e92d7f5e508bb83e13bd0b9e08 Mon Sep 17 00:00:00 2001
From: Anemone
Date: Wed, 25 Aug 2021 17:42:03 +0200
Subject: [PATCH 01/18] Add plug-in for statemachine models generation and
sirius configurations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Anemone Kampkötter
---
.../my.project.design/META-INF/MANIFEST.MF | 17 +
.../description/project.odesign | 26 +
.../my.project.design/plugin.properties | 3 +
.../my.project.design/plugin.xml | 10 +
.../src/my/project/design/Activator.java | 68 +
.../src/my/project/design/Services.java | 17 +
.../representations.aird | 1307 ++++++
...atemachine) Language Infrastructure.launch | 18 +
.../META-INF/MANIFEST.MF | 53 +
plugins/de.cognicrypt.order.editor/README.md | 24 +
.../build.properties | 9 +
.../icons/icon_order_editor.png | Bin 0 -> 336 bytes
.../model/generated/Statemachine.ecore | 28 +
.../model/generated/Statemachine.genmodel | 29 +
plugins/de.cognicrypt.order.editor/plugin.xml | 50 +
plugins/de.cognicrypt.order.editor/pom.xml | 108 +
.../AbstractStatemachineRuntimeModule.java | 201 +
.../order/editor/Statemachine.xtextbin | Bin 0 -> 4869 bytes
.../StatemachineStandaloneSetupGenerated.java | 42 +
.../StatemachineAntlrTokenFileProvider.java | 16 +
.../parser/antlr/StatemachineParser.java | 40 +
.../antlr/internal/InternalStatemachine.g | 1364 ++++++
.../internal/InternalStatemachine.tokens | 50 +
.../internal/InternalStatemachineLexer.java | 1406 ++++++
.../internal/InternalStatemachineParser.java | 4075 +++++++++++++++++
.../AbstractStatemachineScopeProvider.java | 9 +
.../StatemachineSemanticSequencer.java | 199 +
.../StatemachineSyntacticSequencer.java | 91 +
.../services/StatemachineGrammarAccess.java | 552 +++
.../order/editor/statemachine/Event.java | 71 +
.../order/editor/statemachine/State.java | 63 +
.../editor/statemachine/Statemachine.java | 66 +
.../statemachine/StatemachineFactory.java | 71 +
.../statemachine/StatemachinePackage.java | 550 +++
.../order/editor/statemachine/Transition.java | 117 +
.../editor/statemachine/impl/EventImpl.java | 238 +
.../editor/statemachine/impl/StateImpl.java | 244 +
.../impl/StatemachineFactoryImpl.java | 148 +
.../statemachine/impl/StatemachineImpl.java | 249 +
.../impl/StatemachinePackageImpl.java | 389 ++
.../statemachine/impl/TransitionImpl.java | 384 ++
.../util/StatemachineAdapterFactory.java | 193 +
.../statemachine/util/StatemachineSwitch.java | 189 +
.../AbstractStatemachineValidator.java | 21 +
...machineConfigurableIssueCodesProvider.java | 22 +
.../de/cognicrypt/order/editor/Activator.java | 75 +
.../de/cognicrypt/order/editor/Constants.java | 30 +
.../order/editor/GenerateStatemachine.mwe2 | 60 +
.../order/editor/Statemachine.xtext | 29 +
.../editor/StatemachineRuntimeModule.java | 11 +
.../editor/StatemachineStandaloneSetup.java | 15 +
.../editor/actions/RunOrderEditorHandler.java | 32 +
.../order/editor/config/CryslFile.java | 27 +
.../order/editor/config/StaxParser.java | 70 +
.../order/editor/config/StaxWriter.java | 178 +
.../order/editor/generator/Main.java | 68 +
.../generator/StatemachineGenerator.xtend | 25 +
.../editor/parser/StatemachineParser.java | 251 +
.../scoping/StatemachineScopeProvider.java | 15 +
.../validation/StatemachineValidator.java | 25 +
.../editor/wizard/OrderEditorWizard.java | 32 +
.../wizard/OrderEditorWizardDialog.java | 33 +
.../wizard/PageForOrderDiagramWizard.java | 83 +
.../.StatemachineGenerator.java._trace | Bin 0 -> 414 bytes
.../generator/.StatemachineGenerator.xtendbin | Bin 0 -> 2311 bytes
.../generator/StatemachineGenerator.java | 21 +
66 files changed, 13907 insertions(+)
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/META-INF/MANIFEST.MF
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.properties
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.xml
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Activator.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/my.project.order.diagram.modeling/representations.aird
create mode 100644 plugins/de.cognicrypt.order.editor/.launch/Generate Statemachine (statemachine) Language Infrastructure.launch
create mode 100644 plugins/de.cognicrypt.order.editor/META-INF/MANIFEST.MF
create mode 100644 plugins/de.cognicrypt.order.editor/README.md
create mode 100644 plugins/de.cognicrypt.order.editor/build.properties
create mode 100644 plugins/de.cognicrypt.order.editor/icons/icon_order_editor.png
create mode 100644 plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
create mode 100644 plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
create mode 100644 plugins/de.cognicrypt.order.editor/plugin.xml
create mode 100644 plugins/de.cognicrypt.order.editor/pom.xml
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/AbstractStatemachineRuntimeModule.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/Statemachine.xtextbin
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/StatemachineStandaloneSetupGenerated.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineAntlrTokenFileProvider.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineParser.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.g
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.tokens
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/scoping/AbstractStatemachineScopeProvider.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSyntacticSequencer.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Event.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Transition.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/EventImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/TransitionImpl.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/AbstractStatemachineValidator.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/StatemachineConfigurableIssueCodesProvider.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Activator.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Constants.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineRuntimeModule.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineStandaloneSetup.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/actions/RunOrderEditorHandler.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/CryslFile.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxParser.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxWriter.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/Main.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/StatemachineGenerator.xtend
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/scoping/StatemachineScopeProvider.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/validation/StatemachineValidator.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizard.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizardDialog.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/PageForOrderDiagramWizard.java
create mode 100644 plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.java._trace
create mode 100644 plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.xtendbin
create mode 100644 plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/StatemachineGenerator.java
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..aff35221e
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: my.project.design;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: my.project.design.Activator
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.sirius,
+ org.eclipse.sirius.common.acceleo.aql,
+ de.cognicrypt.tu.crossing.statemachine.editor;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Automatic-Module-Name: my.project.design
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
new file mode 100644
index 000000000..02170076a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.properties b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.properties
new file mode 100644
index 000000000..27dfa1031
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.properties
@@ -0,0 +1,3 @@
+pluginName = my.project.design
+providerName = Eclipse Modeling Project
+viewpointName = MyViewpoint
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.xml b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.xml
new file mode 100644
index 000000000..d6fa17bca
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/plugin.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Activator.java b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Activator.java
new file mode 100644
index 000000000..babfa2bcf
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Activator.java
@@ -0,0 +1,68 @@
+package my.project.design;
+de.cognicrypt.order.editor\sirius
+package de.cognicrypt.order.editor;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+ // The plug-in ID
+ public static final String PLUGIN_ID = "my.project.design";
+
+ // The shared instance
+ private static Activator plugin;
+
+ private static Set viewpoints;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ viewpoints = new HashSet();
+ viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/project.odesign"));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ if (viewpoints != null) {
+ for (final Viewpoint viewpoint: viewpoints) {
+ ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+ }
+ viewpoints.clear();
+ viewpoints = null;
+ }
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
new file mode 100644
index 000000000..2fb6e08c6
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
@@ -0,0 +1,17 @@
+package my.project.design;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * The services class used by VSM.
+ */
+public class Services {
+
+ /**
+ * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods.
+ */
+ public EObject myService(EObject self, String arg) {
+ // TODO Auto-generated code
+ return self;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.order.diagram.modeling/representations.aird b/plugins/de.cognicrypt.order.editor.sirius/my.project.order.diagram.modeling/representations.aird
new file mode 100644
index 000000000..847b21a5d
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.order.diagram.modeling/representations.aird
@@ -0,0 +1,1307 @@
+
+
+
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/Cookie.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/HMACParameterSpec.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/KeyManagerFactory.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/DHParameterSpec.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/IvParameterSpec.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.diagram.order/output/MessageDigest.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AeadFactory.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/Cookie.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AlgorithmParameterGenerator.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/BufferedBlockCipher.statemachine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/.launch/Generate Statemachine (statemachine) Language Infrastructure.launch b/plugins/de.cognicrypt.order.editor/.launch/Generate Statemachine (statemachine) Language Infrastructure.launch
new file mode 100644
index 000000000..d12199f1a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/.launch/Generate Statemachine (statemachine) Language Infrastructure.launch
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.order.editor/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..e23f85715
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,53 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Order Editor
+Bundle-Activator: de.cognicrypt.order.editor.Activator
+Bundle-Vendor: Technical University Darmstadt, Paderborn University
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: de.cognicrypt.order.editor; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext,
+ org.eclipse.xtext.xbase,
+ org.eclipse.equinox.common;bundle-version="3.5.0",
+ org.eclipse.emf.ecore,
+ org.eclipse.xtext.common.types,
+ org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",
+ org.objectweb.asm;bundle-version="[7.2.0,7.3.0)";resolution:=optional,
+ org.eclipse.xtext.util,
+ org.eclipse.emf.common,
+ org.antlr.runtime;bundle-version="[3.2.0,3.2.1)",
+ org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.mwe2.launch;bundle-version="2.11.2",
+ org.eclipse.emf.mwe2.runtime;bundle-version="2.11.2",
+ org.eclipse.xtext.generator,
+ org.eclipse.xtext.common.types.ui,
+ org.apache.log4j,
+ org.apache.commons.logging,
+ de.cognicrypt.codegenerator;bundle-version="1.0.0",
+ de.cognicrypt.core,
+ org.eclipse.ui.workbench,
+ com.google.gson,
+ com.google.guava,
+ org.junit,
+ de.darmstadt.tu.crossing.CrySL
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ClassPath: lib/claferchocoig.jar,
+ lib/dom4j-2.0.0.jar,
+ .
+Export-Package: de.cognicrypt.order.editor.services,
+ de.cognicrypt.order.editor.parser.antlr,
+ de.cognicrypt.order.editor,
+ de.cognicrypt.order.editor.statemachine,
+ de.cognicrypt.order.editor.statemachine.impl,
+ de.cognicrypt.order.editor.scoping,
+ de.cognicrypt.order.editor.serializer,
+ de.cognicrypt.order.editor.statemachine.util,
+ de.cognicrypt.order.editor.parser.antlr.internal,
+ de.cognicrypt.order.editor.validation,
+ de.cognicrypt.order.editor.generator,
+ .
+Import-Package: org.apache.log4j,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.core.dom
+Automatic-Module-Name: de.cognicrypt.order.editor
diff --git a/plugins/de.cognicrypt.order.editor/README.md b/plugins/de.cognicrypt.order.editor/README.md
new file mode 100644
index 000000000..8e093fb61
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/README.md
@@ -0,0 +1,24 @@
+# CrySL Visual Order Editor
+
+The Order Editotr displays the usage pattern of the class as defined in the Order expression of its CrySL rule as a state machine.
+
+## Set up
+
+* Clone the project, open Eclipse.
+* Clone the [**Crypto-API-Rules**](https://github.com/CROSSINGTUD/Crypto-API-Rules) repository to a folder named "git" in your home directory.
+ This is required since the class StaxWriter which writes the configuration file needs to access this different repository and therefore accesses the paths relative to home directory by e.g. "\\git\\Crypto-API-Rules\\JavaCryptographicArchitecture\\src".
+* Install Sirius (http://www.eclipse.org/sirius) from the Eclipse Marketplace.
+* Launch a new runtime from your Eclipse. Click on the black plugin icon "S" in the upper left corner, next to the other buttons for TaskIntegrator and CogniCrypt,
+ then click on the button "Generate Statemachine Models", which is currently a simple button but should later be replaced by a single crysl rule selection. The
+ button triggers the generation of the statemachine model resources into the output folder, i.e., "de.cognicrypt.order.editor\output".
+* Within the runtime environment, select the Sirius perspective. This opens a model explorer in the left corner.
+* Open the Sirius project contained in the plugin relative sirius
+ path, i.e. "CogniCrypt\plugins\de.cognicrypt.order.editor.sirius".
+ The project folder "~\CogniCrypt\plugins\de.cognicrypt.order.editor\sirius\my.project.design"
+ is the Viewpoint Specification Project containing the .odesign file (definition of the modeling workbench), the other project folder
+ "~\CogniCrypt\plugins\de.cognicrypt.order.editor\sirius\my.project.order.diagram.modeling" is the Modeling project containing the graphical representations created with Sirius.
+* To open a diagram, select the file representations.aird from the modeling project.
+ In the left corner of the new window, named "Models", click on Add > Browse File System
+ to select a statemachine model from the plugin-relative output folder. The model will
+ appear in the Models window. Now double click "order" in the Representations window on the right. This opens a new window "Create a new representation" which allows to select a semantic element for a new representation. Here, you can select the model you just added, click on its "Statemachine" model identifier and click on Finish. You can optionally select a new name for the diagram. The representation is opened now and you can play around with the Sirius model editor features to enhace the representation.
+* For more information on Sirius, have a look at their, [**tutorial**](https://wiki.eclipse.org/Sirius/Tutorials/StarterTutorial).
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/build.properties b/plugins/de.cognicrypt.order.editor/build.properties
new file mode 100644
index 000000000..2587971a6
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+ src-gen/,\
+ xtend-gen/
+bin.includes = model/generated/,\
+ .,\
+ META-INF/,\
+ plugin.xml\
+ lib/claferchocoig.jar,\
+ lib/dom4j-2.0.0.jar
diff --git a/plugins/de.cognicrypt.order.editor/icons/icon_order_editor.png b/plugins/de.cognicrypt.order.editor/icons/icon_order_editor.png
new file mode 100644
index 0000000000000000000000000000000000000000..829b6bec000700e68b6fc0117c39ee3674b7f500
GIT binary patch
literal 336
zcmV-W0k8gvP)4!K~y-6mDD{-LqQY;;4eYa89{Lq(ZYvKN^6TWwpMPyLL_QsBh^UY}F~;JJ7$-LgIdEWL&fGuFotoKbVhihd!6V-0=>K6CeUunautX2V
zq5#JjWsh@y;}W$f!1;p5IlEB{iz>)D%3JFPqG2k#gA05Fn%-}KHPb^J;|ka5e1nrf
zQ=++o78=2f21zu)VPcL3T6L8VB6L%>JsjY9hHeAeL76%4u|MOkUB?qXgA7NwRrz9o
z%|KJCoQ!J9d4^Y&cRDyzSwGj@O-3v%?~^a=E(-A$57P{$S_n5W
iVHMl{{*wp1N5UUhcboxh<`!lE0000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
new file mode 100644
index 000000000..537d7eb8a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/plugin.xml b/plugins/de.cognicrypt.order.editor/plugin.xml
new file mode 100644
index 000000000..c3df727a4
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/plugin.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/pom.xml b/plugins/de.cognicrypt.order.editor/pom.xml
new file mode 100644
index 000000000..3f77001da
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/pom.xml
@@ -0,0 +1,108 @@
+
+
+ 4.0.0
+ de.cognicrypt.order.editor
+ eclipse-plugin
+
+ de.cognicrypt
+ de.cognicrypt.parent
+ 1.0.0-SNAPSHOT
+ ../../pom.xml
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-maven-plugin
+ ${tycho-version}
+ true
+
+
+
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.eclipse.tycho
+
+ tycho-packaging-plugin
+
+
+ [0.26.0,)
+
+
+ build-qualifier
+ validate-id
+ validate-version
+
+
+
+
+
+
+
+
+ org.eclipse.tycho
+
+ tycho-compiler-plugin
+
+
+ [0.26.0,)
+
+
+ compile
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ [0.26.0,)
+
+
+ test-compile
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ [0.26.0,)
+
+
+ test
+
+
+
+
+
+
+
+
+
+
+
+
+
+ de.cognicrypt
+
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/AbstractStatemachineRuntimeModule.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/AbstractStatemachineRuntimeModule.java
new file mode 100644
index 000000000..afb215573
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/AbstractStatemachineRuntimeModule.java
@@ -0,0 +1,201 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor;
+
+import com.google.inject.Binder;
+import com.google.inject.Provider;
+import com.google.inject.name.Names;
+import de.cognicrypt.order.editor.generator.StatemachineGenerator;
+import de.cognicrypt.order.editor.parser.antlr.StatemachineAntlrTokenFileProvider;
+import de.cognicrypt.order.editor.parser.antlr.StatemachineParser;
+import de.cognicrypt.order.editor.parser.antlr.internal.InternalStatemachineLexer;
+import de.cognicrypt.order.editor.scoping.StatemachineScopeProvider;
+import de.cognicrypt.order.editor.serializer.StatemachineSemanticSequencer;
+import de.cognicrypt.order.editor.serializer.StatemachineSyntacticSequencer;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+import de.cognicrypt.order.editor.validation.StatemachineConfigurableIssueCodesProvider;
+import de.cognicrypt.order.editor.validation.StatemachineValidator;
+import java.util.Properties;
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.common.types.DefaultCommonTypesRuntimeModule;
+import org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider;
+import org.eclipse.xtext.generator.IGenerator2;
+import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.parser.IParser;
+import org.eclipse.xtext.parser.ITokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider;
+import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.antlr.Lexer;
+import org.eclipse.xtext.parser.antlr.LexerBindings;
+import org.eclipse.xtext.parser.antlr.LexerProvider;
+import org.eclipse.xtext.resource.IContainer;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.containers.IAllContainersState;
+import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider;
+import org.eclipse.xtext.resource.containers.StateBasedContainerManager;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.scoping.IGlobalScopeProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.scoping.IgnoreCaseLinking;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.xtext.serializer.ISerializer;
+import org.eclipse.xtext.serializer.impl.Serializer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer;
+import org.eclipse.xtext.service.SingletonBinding;
+import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider;
+
+/**
+ * Manual modifications go to {@link StatemachineRuntimeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractStatemachineRuntimeModule extends DefaultCommonTypesRuntimeModule {
+
+ protected Properties properties = null;
+
+ @Override
+ public void configure(Binder binder) {
+ properties = tryBindProperties(binder, "de/cognicrypt/order/editor/Statemachine.properties");
+ super.configure(binder);
+ }
+
+ public void configureLanguageName(Binder binder) {
+ binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("de.cognicrypt.order.editor.Statemachine");
+ }
+
+ public void configureFileExtensions(Binder binder) {
+ if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+ binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("statemachine");
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+ public ClassLoader bindClassLoaderToInstance() {
+ return getClass().getClassLoader();
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+ public Class extends IGrammarAccess> bindIGrammarAccess() {
+ return StatemachineGrammarAccess.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+ public Class extends ISemanticSequencer> bindISemanticSequencer() {
+ return StatemachineSemanticSequencer.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+ public Class extends ISyntacticSequencer> bindISyntacticSequencer() {
+ return StatemachineSyntacticSequencer.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+ public Class extends ISerializer> bindISerializer() {
+ return Serializer.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Class extends IParser> bindIParser() {
+ return StatemachineParser.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Class extends ITokenToStringConverter> bindITokenToStringConverter() {
+ return AntlrTokenToStringConverter.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Class extends IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+ return StatemachineAntlrTokenFileProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Class extends Lexer> bindLexer() {
+ return InternalStatemachineLexer.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Class extends ITokenDefProvider> bindITokenDefProvider() {
+ return AntlrTokenDefProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public Provider extends InternalStatemachineLexer> provideInternalStatemachineLexer() {
+ return LexerProvider.create(InternalStatemachineLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+ public void configureRuntimeLexer(Binder binder) {
+ binder.bind(Lexer.class)
+ .annotatedWith(Names.named(LexerBindings.RUNTIME))
+ .to(InternalStatemachineLexer.class);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+ @SingletonBinding(eager=true)
+ public Class extends StatemachineValidator> bindStatemachineValidator() {
+ return StatemachineValidator.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+ public Class extends ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
+ return StatemachineConfigurableIssueCodesProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+ public Class extends IScopeProvider> bindIScopeProvider() {
+ return StatemachineScopeProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+ public void configureIScopeProviderDelegate(Binder binder) {
+ binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(ImportedNamespaceAwareLocalScopeProvider.class);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+ public void configureIgnoreCaseLinking(Binder binder) {
+ binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+ public Class extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+ return DefaultDeclarativeQualifiedNameProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+ public Class extends IContainer.Manager> bindIContainer$Manager() {
+ return StateBasedContainerManager.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+ public Class extends IAllContainersState.Provider> bindIAllContainersState$Provider() {
+ return ResourceSetBasedAllContainersStateProvider.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+ public void configureIResourceDescriptions(Binder binder) {
+ binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+ public void configureIResourceDescriptionsPersisted(Binder binder) {
+ binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class);
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+ public Class extends IGenerator2> bindIGenerator2() {
+ return StatemachineGenerator.class;
+ }
+
+ // contributed by org.eclipse.xtext.xtext.generator.types.TypesGeneratorFragment2
+ public Class extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
+ return TypesAwareDefaultGlobalScopeProvider.class;
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/Statemachine.xtextbin b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/Statemachine.xtextbin
new file mode 100644
index 0000000000000000000000000000000000000000..2dab2b3625b02ad893d929c00181a605ef87e29e
GIT binary patch
literal 4869
zcma)AcYG5^7WV9DSC(Yi7z3dNh(jng@frvT&3Fc5zyup&8*mEY7HMqjkXB-~wlUW)
z*K)o0UUMzid+&F-UUI$P<$CY^?t3#U$#Ts7!XMV|%zNMW`s{GKDvT%7E0YbJvG&O@
zEbVsPnVFd`mC5HyWz|&-Cfse^-8{UxHkO5s6&U&zFESxQ=
z*pjRohhq6~E}K>UXz`r#%gjzs&UuY-W~E0}P{{dSet0Ucj7|L12)8u`!|X60t%!DPG&${!B4Y_f^bgiT((>
z!LnTLc=?=Hb`)VSp33CCayd7iQ$gIalKls~&?BQ8tfcGqkAy+apJ1`Hmk(9odtq)`
zl^YQUIp^JK%6LJRf{+Vmtxh|k@~WWxuxuxo(|Em_ok3n~XWGk8DQg`|GRL+OEJZ(Q
z)U9b2Y>Ty_~tq=(c5DkiI;>V4{{AungP%~u$s
zSJF=!9IIHoUZL0KtC=%@4YHRTP3SnwswHs%4dDd{ZqYBt*07kh)?y8O^ChZ4*Q%>)
z6^(;bp)1xw=?W;ty8o|IrdTKxefNkr?VTK?ESI5c$DIJhTVCGIlBwffP*y>$m|Krb
z7or+A6>CcSN(6BoUvKeve;?IPL#)kp=ZnrOo2w{t8xVB9k);wu(dXs!woT-lSkhVp
zebA$;k;U9aB*OGg#JgEjc38Y2woY?hT9(B+iDnCHN=elAgiqCIH;yYWoC=igO(#(-
zDTKTjSUvG-*<8)iEqy_;T&^~#t);s(w@cjUipWpqRQ0-9%H9eWns1mw6QGx}LvVv{
ztCZSyGUply?SN3@Nyuae4)AL$+t*=dC(4v#aaUz=Hb`6(ercXXb$Igk%MX%z7B&)
zOOZ9zPpOUtY$}mW=V4P@olVluDi{_-hQWxkHX%tlEeHGLdJkIH8Iy%KE%$E3^@yNu}iLi^P
zp8>v9CQIAmSsLC&$3Ghu?jWh>m~OVkbJ5MFg`c;8N6(Ku5-+Iu|H8=s7cC(D
z;;R2IG5&*z$X=?IiAKCkJNLF&uhDF;C1Y-8;&t?U+StUz>q-4isJD(CobvTt
zh&Z`;0}$45@kW@&aca&NKqb8i$T9I|6UCT#3qfyU;;m+Zi?<;>sS+KP1R4#Fw}Y}B
z@pwlinC~Pt6w|vFl76?5hWvX-Y%?C-iwE9=x_Tce1PW)RPxyLfyuTt(A-_Z1xk-$P
z(_&Jb7Z=5C;sfMqbSzenWiCEwlJFr)LhbvYDgaMEtYi2Q5bDo)P4!Vwp^U`GD(-$9
z+xPCvPe2TVl8H}Vs&hX@66bYFwu-x8;>x`BW~PtPFK7K3&c0XLR&G3+1g$e2$`n
z)9Ul|+X1W{;tN1(85=;w1mTF%x#i-ECaGVdq_!fdb=z?C%VcDy-Imj8b3gdZ*#8RI
zdN+{UBGow}Tzu7_e~r+WR?+8(fZ^-f>~Fx%xFKQUn>h7i;#=6T#kUc}co|osT*l$O
zXx{ITq**`^zf1P@+DUzOlyQt1q3=Pcwg$QH114?o%?FxJ*$-$C{Lp0kN0jZwy5)?4
zMh^4g$K>NZ@Nsor9tM26spT>zWL*5Dnu(uM1$5%5{24TNF!6Ir0?i@(6Ti?$`Y&Nm
zVkSDnjm^IzDWppL8hfdNDx6gTeU52Mf1{B||F;Wz@;mb6_mL;C`45oaO5%Tn_~MG=
z1XnJ38H4#J^6M@V`g8QTwg)ftez&-1r}zuL?BXM%!vjNyxcF<;xxZ=q|E{z44>Gx(
ziGR`;0(~U?3(H*mo0e~3;y-LrqEe|q{Vz+{vVqhkGZNA=0N|87vH`O|#t2>7w7HQ<
zCqkETLYIw^Zh|d>Xp%rv8nh|eNE|M?2?PQT!yN&TiiMv7L%7j&6dk?V#pO0Nw~YxjGmZWg%HHmG+kzyTy1(d
zde?m`FGud>8t^*(B*o?02xc7-HsT6R%V4@f$Gja?RGoD4N+|CH-FjNh;6DebMCDax
zl_D)SfIo(hIXrGOV@|hhH1p*qV&6>c+G{R5BKFRRT`z-ui}v$spgB5dOm@{-;zpKq
z86B=&m8UwCmRPz_|mQ33)9zQ#Cjyud5^884>To
zYH~a%7PQ4W4!hBca!)dvcFP)H!0
pHIf6Q(?5sgU`2K+2)YZ^-UcoerX$csm`G!d+>9rS{SP}CPgno|
literal 0
HcmV?d00001
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/StatemachineStandaloneSetupGenerated.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/StatemachineStandaloneSetupGenerated.java
new file mode 100644
index 000000000..1fa1a38d2
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/StatemachineStandaloneSetupGenerated.java
@@ -0,0 +1,42 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
+import org.eclipse.xtext.xbase.XtypeStandaloneSetup;
+
+@SuppressWarnings("all")
+public class StatemachineStandaloneSetupGenerated implements ISetup {
+
+ @Override
+ public Injector createInjectorAndDoEMFRegistration() {
+ XtypeStandaloneSetup.doSetup();
+
+ Injector injector = createInjector();
+ register(injector);
+ return injector;
+ }
+
+ public Injector createInjector() {
+ return Guice.createInjector(new StatemachineRuntimeModule());
+ }
+
+ public void register(Injector injector) {
+ if (!EPackage.Registry.INSTANCE.containsKey("http://www.cognicrypt.de/order/editor/Statemachine")) {
+ EPackage.Registry.INSTANCE.put("http://www.cognicrypt.de/order/editor/Statemachine", StatemachinePackage.eINSTANCE);
+ }
+ IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+ IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
+
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("statemachine", resourceFactory);
+ IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("statemachine", serviceProvider);
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineAntlrTokenFileProvider.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineAntlrTokenFileProvider.java
new file mode 100644
index 000000000..b49983efc
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineAntlrTokenFileProvider.java
@@ -0,0 +1,16 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class StatemachineAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+ @Override
+ public InputStream getAntlrTokenFile() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ return classLoader.getResourceAsStream("de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.tokens");
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineParser.java
new file mode 100644
index 000000000..e010f9972
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/StatemachineParser.java
@@ -0,0 +1,40 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.parser.antlr;
+
+import com.google.inject.Inject;
+import de.cognicrypt.order.editor.parser.antlr.internal.InternalStatemachineParser;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+
+public class StatemachineParser extends AbstractAntlrParser {
+
+ @Inject
+ private StatemachineGrammarAccess grammarAccess;
+
+ @Override
+ protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+ tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+ }
+
+
+ @Override
+ protected InternalStatemachineParser createParser(XtextTokenStream stream) {
+ return new InternalStatemachineParser(stream, getGrammarAccess());
+ }
+
+ @Override
+ protected String getDefaultRuleName() {
+ return "Statemachine";
+ }
+
+ public StatemachineGrammarAccess getGrammarAccess() {
+ return this.grammarAccess;
+ }
+
+ public void setGrammarAccess(StatemachineGrammarAccess grammarAccess) {
+ this.grammarAccess = grammarAccess;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.g b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.g
new file mode 100644
index 000000000..d79c8e73b
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.g
@@ -0,0 +1,1364 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+grammar InternalStatemachine;
+
+options {
+ superClass=AbstractInternalAntlrParser;
+}
+
+@lexer::header {
+package de.cognicrypt.order.editor.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package de.cognicrypt.order.editor.parser.antlr.internal;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+
+}
+
+@parser::members {
+
+ private StatemachineGrammarAccess grammarAccess;
+
+ public InternalStatemachineParser(TokenStream input, StatemachineGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "Statemachine";
+ }
+
+ @Override
+ protected StatemachineGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+
+}
+
+@rulecatch {
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+}
+
+// Entry rule entryRuleStatemachine
+entryRuleStatemachine returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getStatemachineRule()); }
+ iv_ruleStatemachine=ruleStatemachine
+ { $current=$iv_ruleStatemachine.current; }
+ EOF;
+
+// Rule Statemachine
+ruleStatemachine returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getStatemachineAccess().getStatemachineAction_0(),
+ $current);
+ }
+ )
+ (
+ otherlv_1='events'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getStatemachineAccess().getEventsKeyword_1_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getStatemachineAccess().getEventsEventParserRuleCall_1_1_0());
+ }
+ lv_events_2_0=ruleEvent
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ $current,
+ "events",
+ lv_events_2_0,
+ "de.cognicrypt.order.editor.Statemachine.Event");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )+
+ otherlv_3='end'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getStatemachineAccess().getEndKeyword_1_2());
+ }
+ )?
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getStatemachineAccess().getStatesStateParserRuleCall_2_0());
+ }
+ lv_states_4_0=ruleState
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ $current,
+ "states",
+ lv_states_4_0,
+ "de.cognicrypt.order.editor.Statemachine.State");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getStatemachineAccess().getTransitionsTransitionParserRuleCall_3_0());
+ }
+ lv_transitions_5_0=ruleTransition
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ $current,
+ "transitions",
+ lv_transitions_5_0,
+ "de.cognicrypt.order.editor.Statemachine.Transition");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ )
+;
+
+// Entry rule entryRuleEvent
+entryRuleEvent returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getEventRule()); }
+ iv_ruleEvent=ruleEvent
+ { $current=$iv_ruleEvent.current; }
+ EOF;
+
+// Rule Event
+ruleEvent returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ (
+ lv_name_0_0=RULE_ID
+ {
+ newLeafNode(lv_name_0_0, grammarAccess.getEventAccess().getNameIDTerminalRuleCall_0_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getEventRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "name",
+ lv_name_0_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+ }
+ )
+ )
+ (
+ (
+ lv_code_1_0=RULE_ID
+ {
+ newLeafNode(lv_code_1_0, grammarAccess.getEventAccess().getCodeIDTerminalRuleCall_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getEventRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "code",
+ lv_code_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleState
+entryRuleState returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getStateRule()); }
+ iv_ruleState=ruleState
+ { $current=$iv_ruleState.current; }
+ EOF;
+
+// Rule State
+ruleState returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='state'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getStateAccess().getStateKeyword_0());
+ }
+ (
+ (
+ lv_name_1_0=RULE_ID
+ {
+ newLeafNode(lv_name_1_0, grammarAccess.getStateAccess().getNameIDTerminalRuleCall_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getStateRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "name",
+ lv_name_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+ }
+ )
+ )
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getStateAccess().getTransitionsTransitionParserRuleCall_2_0());
+ }
+ lv_transitions_2_0=ruleTransition
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getStateRule());
+ }
+ add(
+ $current,
+ "transitions",
+ lv_transitions_2_0,
+ "de.cognicrypt.order.editor.Statemachine.Transition");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ otherlv_3='end'
+ {
+ newLeafNode(otherlv_3, grammarAccess.getStateAccess().getEndKeyword_3());
+ }
+ )
+;
+
+// Entry rule entryRuleTransition
+entryRuleTransition returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getTransitionRule()); }
+ iv_ruleTransition=ruleTransition
+ { $current=$iv_ruleTransition.current; }
+ EOF;
+
+// Rule Transition
+ruleTransition returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='transition'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getTransitionAccess().getTransitionKeyword_0());
+ }
+ (
+ (
+ lv_name_1_0=RULE_ID
+ {
+ newLeafNode(lv_name_1_0, grammarAccess.getTransitionAccess().getNameIDTerminalRuleCall_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getTransitionRule());
+ }
+ setWithLastConsumed(
+ $current,
+ "name",
+ lv_name_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+ }
+ )
+ )
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getTransitionRule());
+ }
+ }
+ otherlv_2=RULE_ID
+ {
+ newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getFromStateStateCrossReference_2_0());
+ }
+ )
+ )
+ otherlv_3=','
+ {
+ newLeafNode(otherlv_3, grammarAccess.getTransitionAccess().getCommaKeyword_3());
+ }
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getTransitionRule());
+ }
+ }
+ otherlv_4=RULE_ID
+ {
+ newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getEventEventCrossReference_4_0());
+ }
+ )
+ )
+ otherlv_5=','
+ {
+ newLeafNode(otherlv_5, grammarAccess.getTransitionAccess().getCommaKeyword_5());
+ }
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getTransitionRule());
+ }
+ }
+ otherlv_6=RULE_ID
+ {
+ newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getEndStateStateCrossReference_6_0());
+ }
+ )
+ )
+ otherlv_7='end'
+ {
+ newLeafNode(otherlv_7, grammarAccess.getTransitionAccess().getEndKeyword_7());
+ }
+ )
+;
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
+ iv_ruleJvmTypeReference=ruleJvmTypeReference
+ { $current=$iv_ruleJvmTypeReference.current; }
+ EOF;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+ }
+ this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+ {
+ $current = $this_JvmParameterizedTypeReference_0.current;
+ afterParserOrEnumRuleCall();
+ }
+ (
+ ((
+ (
+ )
+ ruleArrayBrackets
+ )
+ )=>
+ (
+ (
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+ $current);
+ }
+ )
+ {
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
+ }
+ ruleArrayBrackets
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ )
+ |
+ {
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1());
+ }
+ this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+ {
+ $current = $this_XFunctionTypeRef_3.current;
+ afterParserOrEnumRuleCall();
+ }
+ )
+;
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets returns [String current=null]:
+ { newCompositeNode(grammarAccess.getArrayBracketsRule()); }
+ iv_ruleArrayBrackets=ruleArrayBrackets
+ { $current=$iv_ruleArrayBrackets.current.getText(); }
+ EOF;
+
+// Rule ArrayBrackets
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ kw='['
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+ }
+ kw=']'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1());
+ }
+ )
+;
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
+ iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef
+ { $current=$iv_ruleXFunctionTypeRef.current; }
+ EOF;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ otherlv_0='('
+ {
+ newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+ }
+ (
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+ }
+ lv_paramTypes_1_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ add(
+ $current,
+ "paramTypes",
+ lv_paramTypes_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ otherlv_2=','
+ {
+ newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+ }
+ lv_paramTypes_3_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ add(
+ $current,
+ "paramTypes",
+ lv_paramTypes_3_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )*
+ )?
+ otherlv_4=')'
+ {
+ newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+ }
+ )?
+ otherlv_5='=>'
+ {
+ newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0());
+ }
+ lv_returnType_6_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ set(
+ $current,
+ "returnType",
+ lv_returnType_6_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+ iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference
+ { $current=$iv_ruleJvmParameterizedTypeReference.current; }
+ EOF;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ }
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
+ }
+ ruleQualifiedName
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ (
+ ('<')=>
+ otherlv_1='<'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+ }
+ )
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+ }
+ lv_arguments_2_0=ruleJvmArgumentTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ $current,
+ "arguments",
+ lv_arguments_2_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ otherlv_3=','
+ {
+ newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+ }
+ lv_arguments_4_0=ruleJvmArgumentTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ $current,
+ "arguments",
+ lv_arguments_4_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )*
+ otherlv_5='>'
+ {
+ newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+ }
+ (
+ (
+ ((
+ (
+ )
+ '.'
+ )
+ )=>
+ (
+ (
+ {
+ $current = forceCreateModelElementAndSet(
+ grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+ $current);
+ }
+ )
+ otherlv_7='.'
+ {
+ newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+ }
+ )
+ )
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ }
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
+ }
+ ruleValidID
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ (
+ ('<')=>
+ otherlv_9='<'
+ {
+ newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+ }
+ )
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+ }
+ lv_arguments_10_0=ruleJvmArgumentTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ $current,
+ "arguments",
+ lv_arguments_10_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ otherlv_11=','
+ {
+ newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+ }
+ lv_arguments_12_0=ruleJvmArgumentTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ $current,
+ "arguments",
+ lv_arguments_12_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )*
+ otherlv_13='>'
+ {
+ newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+ }
+ )?
+ )*
+ )?
+ )
+;
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+ iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference
+ { $current=$iv_ruleJvmArgumentTypeReference.current; }
+ EOF;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0());
+ }
+ this_JvmTypeReference_0=ruleJvmTypeReference
+ {
+ $current = $this_JvmTypeReference_0.current;
+ afterParserOrEnumRuleCall();
+ }
+ |
+ {
+ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1());
+ }
+ this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+ {
+ $current = $this_JvmWildcardTypeReference_1.current;
+ afterParserOrEnumRuleCall();
+ }
+ )
+;
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+ iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference
+ { $current=$iv_ruleJvmWildcardTypeReference.current; }
+ EOF;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ (
+ {
+ $current = forceCreateModelElement(
+ grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+ $current);
+ }
+ )
+ otherlv_1='?'
+ {
+ newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+ }
+ (
+ (
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+ }
+ lv_constraints_2_0=ruleJvmUpperBound
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ $current,
+ "constraints",
+ lv_constraints_2_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+ }
+ lv_constraints_3_0=ruleJvmUpperBoundAnded
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ $current,
+ "constraints",
+ lv_constraints_3_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ )
+ |
+ (
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+ }
+ lv_constraints_4_0=ruleJvmLowerBound
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ $current,
+ "constraints",
+ lv_constraints_4_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmLowerBound");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+ }
+ lv_constraints_5_0=ruleJvmLowerBoundAnded
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ $current,
+ "constraints",
+ lv_constraints_5_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmLowerBoundAnded");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )*
+ )
+ )?
+ )
+;
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmUpperBoundRule()); }
+ iv_ruleJvmUpperBound=ruleJvmUpperBound
+ { $current=$iv_ruleJvmUpperBound.current; }
+ EOF;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='extends'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+ }
+ lv_typeReference_1_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+ }
+ set(
+ $current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); }
+ iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded
+ { $current=$iv_ruleJvmUpperBoundAnded.current; }
+ EOF;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='&'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+ }
+ lv_typeReference_1_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+ }
+ set(
+ $current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmLowerBoundRule()); }
+ iv_ruleJvmLowerBound=ruleJvmLowerBound
+ { $current=$iv_ruleJvmLowerBound.current; }
+ EOF;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='super'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+ }
+ lv_typeReference_1_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+ }
+ set(
+ $current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); }
+ iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded
+ { $current=$iv_ruleJvmLowerBoundAnded.current; }
+ EOF;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='&'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+ }
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+ }
+ lv_typeReference_1_0=ruleJvmTypeReference
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+ }
+ set(
+ $current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+;
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [String current=null]:
+ { newCompositeNode(grammarAccess.getQualifiedNameRule()); }
+ iv_ruleQualifiedName=ruleQualifiedName
+ { $current=$iv_ruleQualifiedName.current.getText(); }
+ EOF;
+
+// Rule QualifiedName
+ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+ }
+ this_ValidID_0=ruleValidID
+ {
+ $current.merge(this_ValidID_0);
+ }
+ {
+ afterParserOrEnumRuleCall();
+ }
+ (
+ kw='.'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
+ }
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
+ }
+ this_ValidID_2=ruleValidID
+ {
+ $current.merge(this_ValidID_2);
+ }
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )*
+ )
+;
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard returns [String current=null]:
+ { newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); }
+ iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard
+ { $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }
+ EOF;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+ }
+ this_QualifiedName_0=ruleQualifiedName
+ {
+ $current.merge(this_QualifiedName_0);
+ }
+ {
+ afterParserOrEnumRuleCall();
+ }
+ kw='.'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+ }
+ kw='*'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
+ }
+ )
+;
+
+// Entry rule entryRuleValidID
+entryRuleValidID returns [String current=null]:
+ { newCompositeNode(grammarAccess.getValidIDRule()); }
+ iv_ruleValidID=ruleValidID
+ { $current=$iv_ruleValidID.current.getText(); }
+ EOF;
+
+// Rule ValidID
+ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ this_ID_0=RULE_ID
+ {
+ $current.merge(this_ID_0);
+ }
+ {
+ newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+ }
+;
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration returns [EObject current=null]:
+ { newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
+ iv_ruleXImportDeclaration=ruleXImportDeclaration
+ { $current=$iv_ruleXImportDeclaration.current; }
+ EOF;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration returns [EObject current=null]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ otherlv_0='import'
+ {
+ newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
+ }
+ (
+ (
+ (
+ (
+ lv_static_1_0='static'
+ {
+ newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed($current, "static", lv_static_1_0 != null, "static");
+ }
+ )
+ )
+ (
+ (
+ lv_extension_2_0='extension'
+ {
+ newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed($current, "extension", lv_extension_2_0 != null, "extension");
+ }
+ )
+ )?
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ }
+ {
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0());
+ }
+ ruleQualifiedNameInStaticImport
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ (
+ (
+ (
+ lv_wildcard_4_0='*'
+ {
+ newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
+ }
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed($current, "wildcard", lv_wildcard_4_0 != null, "*");
+ }
+ )
+ )
+ |
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0());
+ }
+ lv_memberName_5_0=ruleValidID
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+ }
+ set(
+ $current,
+ "memberName",
+ lv_memberName_5_0,
+ "org.eclipse.xtext.xbase.Xtype.ValidID");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+ )
+ |
+ (
+ (
+ {
+ if ($current==null) {
+ $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ }
+ {
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0());
+ }
+ ruleQualifiedName
+ {
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ |
+ (
+ (
+ {
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0());
+ }
+ lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard
+ {
+ if ($current==null) {
+ $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+ }
+ set(
+ $current,
+ "importedNamespace",
+ lv_importedNamespace_7_0,
+ "org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
+ afterParserOrEnumRuleCall();
+ }
+ )
+ )
+ )
+ (
+ otherlv_8=';'
+ {
+ newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+ }
+ )?
+ )
+;
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport returns [String current=null]:
+ { newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); }
+ iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport
+ { $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }
+ EOF;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+ enterRule();
+}
+@after {
+ leaveRule();
+}:
+ (
+ {
+ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+ }
+ this_ValidID_0=ruleValidID
+ {
+ $current.merge(this_ValidID_0);
+ }
+ {
+ afterParserOrEnumRuleCall();
+ }
+ kw='.'
+ {
+ $current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+ }
+ )+
+;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.tokens b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.tokens
new file mode 100644
index 000000000..1ac4f4fe6
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachine.tokens
@@ -0,0 +1,50 @@
+'&'=25
+'('=17
+')'=18
+'*'=27
+','=14
+'.'=22
+';'=31
+'<'=20
+'=>'=19
+'>'=21
+'?'=23
+'['=15
+']'=16
+'end'=11
+'events'=10
+'extends'=24
+'extension'=30
+'import'=28
+'state'=12
+'static'=29
+'super'=26
+'transition'=13
+RULE_ANY_OTHER=9
+RULE_ID=4
+RULE_ML_COMMENT=6
+RULE_SL_COMMENT=7
+RULE_STRING=5
+RULE_WS=8
+T__10=10
+T__11=11
+T__12=12
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
new file mode 100644
index 000000000..2ca8a9646
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
@@ -0,0 +1,1406 @@
+package de.cognicrypt.order.editor.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import.
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalStatemachineLexer extends Lexer {
+ public static final int RULE_STRING=5;
+ public static final int RULE_SL_COMMENT=7;
+ public static final int T__19=19;
+ public static final int T__15=15;
+ public static final int T__16=16;
+ public static final int T__17=17;
+ public static final int T__18=18;
+ public static final int T__11=11;
+ public static final int T__12=12;
+ public static final int T__13=13;
+ public static final int T__14=14;
+ public static final int EOF=-1;
+ public static final int T__30=30;
+ public static final int T__31=31;
+ public static final int T__10=10;
+ public static final int RULE_ID=4;
+ public static final int RULE_WS=8;
+ public static final int RULE_ANY_OTHER=9;
+ public static final int T__26=26;
+ public static final int T__27=27;
+ public static final int T__28=28;
+ public static final int T__29=29;
+ public static final int T__22=22;
+ public static final int RULE_ML_COMMENT=6;
+ public static final int T__23=23;
+ public static final int T__24=24;
+ public static final int T__25=25;
+ public static final int T__20=20;
+ public static final int T__21=21;
+
+ // delegates
+ // delegators
+
+ public InternalStatemachineLexer() {;}
+ public InternalStatemachineLexer(CharStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalStatemachineLexer(CharStream input, RecognizerSharedState state) {
+ super(input,state);
+
+ }
+ public String getGrammarFileName() { return "InternalStatemachine.g"; }
+
+ // $ANTLR start "T__10"
+ public final void mT__10() throws RecognitionException {
+ try {
+ int _type = T__10;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:11:7: ( 'events' )
+ // InternalStatemachine.g:11:9: 'events'
+ {
+ match("events");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__10"
+
+ // $ANTLR start "T__11"
+ public final void mT__11() throws RecognitionException {
+ try {
+ int _type = T__11;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:12:7: ( 'end' )
+ // InternalStatemachine.g:12:9: 'end'
+ {
+ match("end");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__11"
+
+ // $ANTLR start "T__12"
+ public final void mT__12() throws RecognitionException {
+ try {
+ int _type = T__12;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:13:7: ( 'state' )
+ // InternalStatemachine.g:13:9: 'state'
+ {
+ match("state");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__12"
+
+ // $ANTLR start "T__13"
+ public final void mT__13() throws RecognitionException {
+ try {
+ int _type = T__13;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:14:7: ( 'transition' )
+ // InternalStatemachine.g:14:9: 'transition'
+ {
+ match("transition");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__13"
+
+ // $ANTLR start "T__14"
+ public final void mT__14() throws RecognitionException {
+ try {
+ int _type = T__14;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:15:7: ( ',' )
+ // InternalStatemachine.g:15:9: ','
+ {
+ match(',');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__14"
+
+ // $ANTLR start "T__15"
+ public final void mT__15() throws RecognitionException {
+ try {
+ int _type = T__15;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:16:7: ( '[' )
+ // InternalStatemachine.g:16:9: '['
+ {
+ match('[');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__15"
+
+ // $ANTLR start "T__16"
+ public final void mT__16() throws RecognitionException {
+ try {
+ int _type = T__16;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:17:7: ( ']' )
+ // InternalStatemachine.g:17:9: ']'
+ {
+ match(']');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__16"
+
+ // $ANTLR start "T__17"
+ public final void mT__17() throws RecognitionException {
+ try {
+ int _type = T__17;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:18:7: ( '(' )
+ // InternalStatemachine.g:18:9: '('
+ {
+ match('(');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__17"
+
+ // $ANTLR start "T__18"
+ public final void mT__18() throws RecognitionException {
+ try {
+ int _type = T__18;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:19:7: ( ')' )
+ // InternalStatemachine.g:19:9: ')'
+ {
+ match(')');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__18"
+
+ // $ANTLR start "T__19"
+ public final void mT__19() throws RecognitionException {
+ try {
+ int _type = T__19;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:20:7: ( '=>' )
+ // InternalStatemachine.g:20:9: '=>'
+ {
+ match("=>");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__19"
+
+ // $ANTLR start "T__20"
+ public final void mT__20() throws RecognitionException {
+ try {
+ int _type = T__20;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:21:7: ( '<' )
+ // InternalStatemachine.g:21:9: '<'
+ {
+ match('<');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__20"
+
+ // $ANTLR start "T__21"
+ public final void mT__21() throws RecognitionException {
+ try {
+ int _type = T__21;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:22:7: ( '>' )
+ // InternalStatemachine.g:22:9: '>'
+ {
+ match('>');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__21"
+
+ // $ANTLR start "T__22"
+ public final void mT__22() throws RecognitionException {
+ try {
+ int _type = T__22;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:23:7: ( '.' )
+ // InternalStatemachine.g:23:9: '.'
+ {
+ match('.');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__22"
+
+ // $ANTLR start "T__23"
+ public final void mT__23() throws RecognitionException {
+ try {
+ int _type = T__23;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:24:7: ( '?' )
+ // InternalStatemachine.g:24:9: '?'
+ {
+ match('?');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__23"
+
+ // $ANTLR start "T__24"
+ public final void mT__24() throws RecognitionException {
+ try {
+ int _type = T__24;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:25:7: ( 'extends' )
+ // InternalStatemachine.g:25:9: 'extends'
+ {
+ match("extends");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__24"
+
+ // $ANTLR start "T__25"
+ public final void mT__25() throws RecognitionException {
+ try {
+ int _type = T__25;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:26:7: ( '&' )
+ // InternalStatemachine.g:26:9: '&'
+ {
+ match('&');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__25"
+
+ // $ANTLR start "T__26"
+ public final void mT__26() throws RecognitionException {
+ try {
+ int _type = T__26;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:27:7: ( 'super' )
+ // InternalStatemachine.g:27:9: 'super'
+ {
+ match("super");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__26"
+
+ // $ANTLR start "T__27"
+ public final void mT__27() throws RecognitionException {
+ try {
+ int _type = T__27;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:28:7: ( '*' )
+ // InternalStatemachine.g:28:9: '*'
+ {
+ match('*');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__27"
+
+ // $ANTLR start "T__28"
+ public final void mT__28() throws RecognitionException {
+ try {
+ int _type = T__28;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:29:7: ( 'import' )
+ // InternalStatemachine.g:29:9: 'import'
+ {
+ match("import");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__28"
+
+ // $ANTLR start "T__29"
+ public final void mT__29() throws RecognitionException {
+ try {
+ int _type = T__29;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:30:7: ( 'static' )
+ // InternalStatemachine.g:30:9: 'static'
+ {
+ match("static");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__29"
+
+ // $ANTLR start "T__30"
+ public final void mT__30() throws RecognitionException {
+ try {
+ int _type = T__30;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:31:7: ( 'extension' )
+ // InternalStatemachine.g:31:9: 'extension'
+ {
+ match("extension");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__30"
+
+ // $ANTLR start "T__31"
+ public final void mT__31() throws RecognitionException {
+ try {
+ int _type = T__31;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:32:7: ( ';' )
+ // InternalStatemachine.g:32:9: ';'
+ {
+ match(';');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__31"
+
+ // $ANTLR start "RULE_ID"
+ public final void mRULE_ID() throws RecognitionException {
+ try {
+ int _type = RULE_ID;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1354:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+ // InternalStatemachine.g:1354:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+ {
+ // InternalStatemachine.g:1354:11: ( '^' )?
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='^') ) {
+ alt1=1;
+ }
+ switch (alt1) {
+ case 1 :
+ // InternalStatemachine.g:1354:11: '^'
+ {
+ match('^');
+
+ }
+ break;
+
+ }
+
+ if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // InternalStatemachine.g:1354:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0=='$'||(LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // InternalStatemachine.g:
+ {
+ if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ID"
+
+ // $ANTLR start "RULE_STRING"
+ public final void mRULE_STRING() throws RecognitionException {
+ try {
+ int _type = RULE_STRING;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1356:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+ // InternalStatemachine.g:1356:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+ {
+ // InternalStatemachine.g:1356:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0=='\"') ) {
+ alt7=1;
+ }
+ else if ( (LA7_0=='\'') ) {
+ alt7=2;
+ }
+ else {
+ NoViableAltException nvae =
+ new NoViableAltException("", 7, 0, input);
+
+ throw nvae;
+ }
+ switch (alt7) {
+ case 1 :
+ // InternalStatemachine.g:1356:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+ {
+ match('\"');
+ // InternalStatemachine.g:1356:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+ loop3:
+ do {
+ int alt3=3;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0=='\\') ) {
+ alt3=1;
+ }
+ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=']' && LA3_0<='\uFFFF')) ) {
+ alt3=2;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // InternalStatemachine.g:1356:21: '\\\\' .
+ {
+ match('\\');
+ matchAny();
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1356:28: ~ ( ( '\\\\' | '\"' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+ // InternalStatemachine.g:1356:44: ( '\"' )?
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0=='\"') ) {
+ alt4=1;
+ }
+ switch (alt4) {
+ case 1 :
+ // InternalStatemachine.g:1356:44: '\"'
+ {
+ match('\"');
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1356:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+ {
+ match('\'');
+ // InternalStatemachine.g:1356:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+ loop5:
+ do {
+ int alt5=3;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='\\') ) {
+ alt5=1;
+ }
+ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+ alt5=2;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // InternalStatemachine.g:1356:55: '\\\\' .
+ {
+ match('\\');
+ matchAny();
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1356:62: ~ ( ( '\\\\' | '\\'' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ // InternalStatemachine.g:1356:79: ( '\\'' )?
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0=='\'') ) {
+ alt6=1;
+ }
+ switch (alt6) {
+ case 1 :
+ // InternalStatemachine.g:1356:79: '\\''
+ {
+ match('\'');
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_STRING"
+
+ // $ANTLR start "RULE_ML_COMMENT"
+ public final void mRULE_ML_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_ML_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1358:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // InternalStatemachine.g:1358:19: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*");
+
+ // InternalStatemachine.g:1358:24: ( options {greedy=false; } : . )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0=='*') ) {
+ int LA8_1 = input.LA(2);
+
+ if ( (LA8_1=='/') ) {
+ alt8=2;
+ }
+ else if ( ((LA8_1>='\u0000' && LA8_1<='.')||(LA8_1>='0' && LA8_1<='\uFFFF')) ) {
+ alt8=1;
+ }
+
+
+ }
+ else if ( ((LA8_0>='\u0000' && LA8_0<=')')||(LA8_0>='+' && LA8_0<='\uFFFF')) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // InternalStatemachine.g:1358:52: .
+ {
+ matchAny();
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ match("*/");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ML_COMMENT"
+
+ // $ANTLR start "RULE_SL_COMMENT"
+ public final void mRULE_SL_COMMENT() throws RecognitionException {
+ try {
+ int _type = RULE_SL_COMMENT;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1360:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // InternalStatemachine.g:1360:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ {
+ match("//");
+
+ // InternalStatemachine.g:1360:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( ((LA9_0>='\u0000' && LA9_0<='\t')||(LA9_0>='\u000B' && LA9_0<='\f')||(LA9_0>='\u000E' && LA9_0<='\uFFFF')) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // InternalStatemachine.g:1360:24: ~ ( ( '\\n' | '\\r' ) )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+ // InternalStatemachine.g:1360:40: ( ( '\\r' )? '\\n' )?
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0=='\n'||LA11_0=='\r') ) {
+ alt11=1;
+ }
+ switch (alt11) {
+ case 1 :
+ // InternalStatemachine.g:1360:41: ( '\\r' )? '\\n'
+ {
+ // InternalStatemachine.g:1360:41: ( '\\r' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='\r') ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // InternalStatemachine.g:1360:41: '\\r'
+ {
+ match('\r');
+
+ }
+ break;
+
+ }
+
+ match('\n');
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_SL_COMMENT"
+
+ // $ANTLR start "RULE_WS"
+ public final void mRULE_WS() throws RecognitionException {
+ try {
+ int _type = RULE_WS;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1362:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // InternalStatemachine.g:1362:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ {
+ // InternalStatemachine.g:1362:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ int cnt12=0;
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // InternalStatemachine.g:
+ {
+ if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ if ( cnt12 >= 1 ) break loop12;
+ EarlyExitException eee =
+ new EarlyExitException(12, input);
+ throw eee;
+ }
+ cnt12++;
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_WS"
+
+ // $ANTLR start "RULE_ANY_OTHER"
+ public final void mRULE_ANY_OTHER() throws RecognitionException {
+ try {
+ int _type = RULE_ANY_OTHER;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:1364:16: ( . )
+ // InternalStatemachine.g:1364:18: .
+ {
+ matchAny();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "RULE_ANY_OTHER"
+
+ public void mTokens() throws RecognitionException {
+ // InternalStatemachine.g:1:8: ( T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt13=28;
+ alt13 = dfa13.predict(input);
+ switch (alt13) {
+ case 1 :
+ // InternalStatemachine.g:1:10: T__10
+ {
+ mT__10();
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1:16: T__11
+ {
+ mT__11();
+
+ }
+ break;
+ case 3 :
+ // InternalStatemachine.g:1:22: T__12
+ {
+ mT__12();
+
+ }
+ break;
+ case 4 :
+ // InternalStatemachine.g:1:28: T__13
+ {
+ mT__13();
+
+ }
+ break;
+ case 5 :
+ // InternalStatemachine.g:1:34: T__14
+ {
+ mT__14();
+
+ }
+ break;
+ case 6 :
+ // InternalStatemachine.g:1:40: T__15
+ {
+ mT__15();
+
+ }
+ break;
+ case 7 :
+ // InternalStatemachine.g:1:46: T__16
+ {
+ mT__16();
+
+ }
+ break;
+ case 8 :
+ // InternalStatemachine.g:1:52: T__17
+ {
+ mT__17();
+
+ }
+ break;
+ case 9 :
+ // InternalStatemachine.g:1:58: T__18
+ {
+ mT__18();
+
+ }
+ break;
+ case 10 :
+ // InternalStatemachine.g:1:64: T__19
+ {
+ mT__19();
+
+ }
+ break;
+ case 11 :
+ // InternalStatemachine.g:1:70: T__20
+ {
+ mT__20();
+
+ }
+ break;
+ case 12 :
+ // InternalStatemachine.g:1:76: T__21
+ {
+ mT__21();
+
+ }
+ break;
+ case 13 :
+ // InternalStatemachine.g:1:82: T__22
+ {
+ mT__22();
+
+ }
+ break;
+ case 14 :
+ // InternalStatemachine.g:1:88: T__23
+ {
+ mT__23();
+
+ }
+ break;
+ case 15 :
+ // InternalStatemachine.g:1:94: T__24
+ {
+ mT__24();
+
+ }
+ break;
+ case 16 :
+ // InternalStatemachine.g:1:100: T__25
+ {
+ mT__25();
+
+ }
+ break;
+ case 17 :
+ // InternalStatemachine.g:1:106: T__26
+ {
+ mT__26();
+
+ }
+ break;
+ case 18 :
+ // InternalStatemachine.g:1:112: T__27
+ {
+ mT__27();
+
+ }
+ break;
+ case 19 :
+ // InternalStatemachine.g:1:118: T__28
+ {
+ mT__28();
+
+ }
+ break;
+ case 20 :
+ // InternalStatemachine.g:1:124: T__29
+ {
+ mT__29();
+
+ }
+ break;
+ case 21 :
+ // InternalStatemachine.g:1:130: T__30
+ {
+ mT__30();
+
+ }
+ break;
+ case 22 :
+ // InternalStatemachine.g:1:136: T__31
+ {
+ mT__31();
+
+ }
+ break;
+ case 23 :
+ // InternalStatemachine.g:1:142: RULE_ID
+ {
+ mRULE_ID();
+
+ }
+ break;
+ case 24 :
+ // InternalStatemachine.g:1:150: RULE_STRING
+ {
+ mRULE_STRING();
+
+ }
+ break;
+ case 25 :
+ // InternalStatemachine.g:1:162: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 26 :
+ // InternalStatemachine.g:1:178: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 27 :
+ // InternalStatemachine.g:1:194: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 28 :
+ // InternalStatemachine.g:1:202: RULE_ANY_OTHER
+ {
+ mRULE_ANY_OTHER();
+
+ }
+ break;
+
+ }
+
+ }
+
+
+ protected DFA13 dfa13 = new DFA13(this);
+ static final String DFA13_eotS =
+ "\1\uffff\3\34\5\uffff\1\30\6\uffff\1\34\1\uffff\1\30\3\uffff\1\30\2\uffff\3\34\1\uffff\3\34\14\uffff\1\34\5\uffff\1\34\1\72\6\34\1\uffff\7\34\1\112\1\34\1\114\2\34\1\117\2\34\1\uffff\1\122\1\uffff\1\34\1\124\1\uffff\1\125\1\34\1\uffff\1\34\2\uffff\2\34\1\132\1\34\1\uffff\1\134\1\uffff";
+ static final String DFA13_eofS =
+ "\135\uffff";
+ static final String DFA13_minS =
+ "\1\0\1\156\1\164\1\162\5\uffff\1\76\6\uffff\1\155\1\uffff\1\44\3\uffff\1\52\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\141\14\uffff\1\160\5\uffff\1\156\1\44\1\145\1\164\1\145\1\156\1\157\1\164\1\uffff\1\156\1\145\1\162\1\163\1\162\1\163\1\144\1\44\1\143\1\44\1\151\1\164\1\44\1\163\1\151\1\uffff\1\44\1\uffff\1\164\1\44\1\uffff\1\44\1\157\1\uffff\1\151\2\uffff\1\156\1\157\1\44\1\156\1\uffff\1\44\1\uffff";
+ static final String DFA13_maxS =
+ "\1\uffff\1\170\1\165\1\162\5\uffff\1\76\6\uffff\1\155\1\uffff\1\172\3\uffff\1\57\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\141\14\uffff\1\160\5\uffff\1\156\1\172\1\145\1\164\1\145\1\156\1\157\1\164\1\uffff\1\156\1\151\1\162\1\163\1\162\2\163\1\172\1\143\1\172\1\151\1\164\1\172\1\163\1\151\1\uffff\1\172\1\uffff\1\164\1\172\1\uffff\1\172\1\157\1\uffff\1\151\2\uffff\1\156\1\157\1\172\1\156\1\uffff\1\172\1\uffff";
+ static final String DFA13_acceptS =
+ "\4\uffff\1\5\1\6\1\7\1\10\1\11\1\uffff\1\13\1\14\1\15\1\16\1\20\1\22\1\uffff\1\26\1\uffff\1\27\2\30\1\uffff\1\33\1\34\3\uffff\1\27\3\uffff\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\20\1\22\1\uffff\1\26\1\30\1\31\1\32\1\33\10\uffff\1\2\17\uffff\1\3\1\uffff\1\21\2\uffff\1\1\2\uffff\1\24\1\uffff\1\23\1\17\4\uffff\1\25\1\uffff\1\4";
+ static final String DFA13_specialS =
+ "\1\0\134\uffff}>";
+ static final String[] DFA13_transitionS = {
+ "\11\30\2\27\2\30\1\27\22\30\1\27\1\30\1\24\1\30\1\23\1\30\1\16\1\25\1\7\1\10\1\17\1\30\1\4\1\30\1\14\1\26\13\30\1\21\1\12\1\11\1\13\1\15\1\30\32\23\1\5\1\30\1\6\1\22\1\23\1\30\4\23\1\1\3\23\1\20\11\23\1\2\1\3\6\23\uff85\30",
+ "\1\32\7\uffff\1\31\1\uffff\1\33",
+ "\1\35\1\36",
+ "\1\37",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\45",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\54",
+ "",
+ "\1\34\34\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "",
+ "",
+ "",
+ "\1\57\4\uffff\1\60",
+ "",
+ "",
+ "\1\62",
+ "\1\63",
+ "\1\64",
+ "",
+ "\1\65",
+ "\1\66",
+ "\1\67",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\70",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\1\71",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\73",
+ "\1\74",
+ "\1\75",
+ "\1\76",
+ "\1\77",
+ "\1\100",
+ "",
+ "\1\101",
+ "\1\102\3\uffff\1\103",
+ "\1\104",
+ "\1\105",
+ "\1\106",
+ "\1\107",
+ "\1\110\16\uffff\1\111",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\113",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\115",
+ "\1\116",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\120",
+ "\1\121",
+ "",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "",
+ "\1\123",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\126",
+ "",
+ "\1\127",
+ "",
+ "",
+ "\1\130",
+ "\1\131",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\133",
+ "",
+ "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ ""
+ };
+
+ static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
+ static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
+ static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
+ static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
+ static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
+ static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
+ static final short[][] DFA13_transition;
+
+ static {
+ int numStates = DFA13_transitionS.length;
+ DFA13_transition = new short[numStates][];
+ for (int i=0; i') ) {s = 11;}
+
+ else if ( (LA13_0=='.') ) {s = 12;}
+
+ else if ( (LA13_0=='?') ) {s = 13;}
+
+ else if ( (LA13_0=='&') ) {s = 14;}
+
+ else if ( (LA13_0=='*') ) {s = 15;}
+
+ else if ( (LA13_0=='i') ) {s = 16;}
+
+ else if ( (LA13_0==';') ) {s = 17;}
+
+ else if ( (LA13_0=='^') ) {s = 18;}
+
+ else if ( (LA13_0=='$'||(LA13_0>='A' && LA13_0<='Z')||LA13_0=='_'||(LA13_0>='a' && LA13_0<='d')||(LA13_0>='f' && LA13_0<='h')||(LA13_0>='j' && LA13_0<='r')||(LA13_0>='u' && LA13_0<='z')) ) {s = 19;}
+
+ else if ( (LA13_0=='\"') ) {s = 20;}
+
+ else if ( (LA13_0=='\'') ) {s = 21;}
+
+ else if ( (LA13_0=='/') ) {s = 22;}
+
+ else if ( ((LA13_0>='\t' && LA13_0<='\n')||LA13_0=='\r'||LA13_0==' ') ) {s = 23;}
+
+ else if ( ((LA13_0>='\u0000' && LA13_0<='\b')||(LA13_0>='\u000B' && LA13_0<='\f')||(LA13_0>='\u000E' && LA13_0<='\u001F')||LA13_0=='!'||LA13_0=='#'||LA13_0=='%'||LA13_0=='+'||LA13_0=='-'||(LA13_0>='0' && LA13_0<=':')||LA13_0=='@'||LA13_0=='\\'||LA13_0=='`'||(LA13_0>='{' && LA13_0<='\uFFFF')) ) {s = 24;}
+
+ if ( s>=0 ) return s;
+ break;
+ }
+ NoViableAltException nvae =
+ new NoViableAltException(getDescription(), 13, _s, input);
+ error(nvae);
+ throw nvae;
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
new file mode 100644
index 000000000..21143e945
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
@@ -0,0 +1,4075 @@
+package de.cognicrypt.order.editor.parser.antlr.internal;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+public class InternalStatemachineParser extends AbstractInternalAntlrParser {
+ public static final String[] tokenNames = new String[] {
+ "", "", "", "", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'events'", "'end'", "'state'", "'transition'", "','", "'['", "']'", "'('", "')'", "'=>'", "'<'", "'>'", "'.'", "'?'", "'extends'", "'&'", "'super'", "'*'", "'import'", "'static'", "'extension'", "';'"
+ };
+ public static final int RULE_STRING=5;
+ public static final int RULE_SL_COMMENT=7;
+ public static final int T__19=19;
+ public static final int T__15=15;
+ public static final int T__16=16;
+ public static final int T__17=17;
+ public static final int T__18=18;
+ public static final int T__11=11;
+ public static final int T__12=12;
+ public static final int T__13=13;
+ public static final int T__14=14;
+ public static final int EOF=-1;
+ public static final int T__30=30;
+ public static final int T__31=31;
+ public static final int T__10=10;
+ public static final int RULE_ID=4;
+ public static final int RULE_WS=8;
+ public static final int RULE_ANY_OTHER=9;
+ public static final int T__26=26;
+ public static final int T__27=27;
+ public static final int T__28=28;
+ public static final int T__29=29;
+ public static final int T__22=22;
+ public static final int RULE_ML_COMMENT=6;
+ public static final int T__23=23;
+ public static final int T__24=24;
+ public static final int T__25=25;
+ public static final int T__20=20;
+ public static final int T__21=21;
+
+ // delegates
+ // delegators
+
+
+ public InternalStatemachineParser(TokenStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public InternalStatemachineParser(TokenStream input, RecognizerSharedState state) {
+ super(input, state);
+
+ }
+
+
+ public String[] getTokenNames() { return InternalStatemachineParser.tokenNames; }
+ public String getGrammarFileName() { return "InternalStatemachine.g"; }
+
+
+
+ private StatemachineGrammarAccess grammarAccess;
+
+ public InternalStatemachineParser(TokenStream input, StatemachineGrammarAccess grammarAccess) {
+ this(input);
+ this.grammarAccess = grammarAccess;
+ registerRules(grammarAccess.getGrammar());
+ }
+
+ @Override
+ protected String getFirstRuleName() {
+ return "Statemachine";
+ }
+
+ @Override
+ protected StatemachineGrammarAccess getGrammarAccess() {
+ return grammarAccess;
+ }
+
+
+
+
+ // $ANTLR start "entryRuleStatemachine"
+ // InternalStatemachine.g:64:1: entryRuleStatemachine returns [EObject current=null] : iv_ruleStatemachine= ruleStatemachine EOF ;
+ public final EObject entryRuleStatemachine() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleStatemachine = null;
+
+
+ try {
+ // InternalStatemachine.g:64:53: (iv_ruleStatemachine= ruleStatemachine EOF )
+ // InternalStatemachine.g:65:2: iv_ruleStatemachine= ruleStatemachine EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getStatemachineRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleStatemachine=ruleStatemachine();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleStatemachine;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleStatemachine"
+
+
+ // $ANTLR start "ruleStatemachine"
+ // InternalStatemachine.g:71:1: ruleStatemachine returns [EObject current=null] : ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* ) ;
+ public final EObject ruleStatemachine() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ Token otherlv_3=null;
+ EObject lv_events_2_0 = null;
+
+ EObject lv_states_4_0 = null;
+
+ EObject lv_transitions_5_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:77:2: ( ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* ) )
+ // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* )
+ {
+ // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* )
+ // InternalStatemachine.g:79:3: () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )*
+ {
+ // InternalStatemachine.g:79:3: ()
+ // InternalStatemachine.g:80:4:
+ {
+ if ( state.backtracking==0 ) {
+
+ current = forceCreateModelElement(
+ grammarAccess.getStatemachineAccess().getStatemachineAction_0(),
+ current);
+
+ }
+
+ }
+
+ // InternalStatemachine.g:86:3: (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )?
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==10) ) {
+ alt2=1;
+ }
+ switch (alt2) {
+ case 1 :
+ // InternalStatemachine.g:87:4: otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end'
+ {
+ otherlv_1=(Token)match(input,10,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_1, grammarAccess.getStatemachineAccess().getEventsKeyword_1_0());
+
+ }
+ // InternalStatemachine.g:91:4: ( (lv_events_2_0= ruleEvent ) )+
+ int cnt1=0;
+ loop1:
+ do {
+ int alt1=2;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==RULE_ID) ) {
+ alt1=1;
+ }
+
+
+ switch (alt1) {
+ case 1 :
+ // InternalStatemachine.g:92:5: (lv_events_2_0= ruleEvent )
+ {
+ // InternalStatemachine.g:92:5: (lv_events_2_0= ruleEvent )
+ // InternalStatemachine.g:93:6: lv_events_2_0= ruleEvent
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getStatemachineAccess().getEventsEventParserRuleCall_1_1_0());
+
+ }
+ pushFollow(FOLLOW_4);
+ lv_events_2_0=ruleEvent();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ current,
+ "events",
+ lv_events_2_0,
+ "de.cognicrypt.order.editor.Statemachine.Event");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt1 >= 1 ) break loop1;
+ if (state.backtracking>0) {state.failed=true; return current;}
+ EarlyExitException eee =
+ new EarlyExitException(1, input);
+ throw eee;
+ }
+ cnt1++;
+ } while (true);
+
+ otherlv_3=(Token)match(input,11,FOLLOW_5); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_3, grammarAccess.getStatemachineAccess().getEndKeyword_1_2());
+
+ }
+
+ }
+ break;
+
+ }
+
+ // InternalStatemachine.g:115:3: ( (lv_states_4_0= ruleState ) )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==12) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // InternalStatemachine.g:116:4: (lv_states_4_0= ruleState )
+ {
+ // InternalStatemachine.g:116:4: (lv_states_4_0= ruleState )
+ // InternalStatemachine.g:117:5: lv_states_4_0= ruleState
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getStatemachineAccess().getStatesStateParserRuleCall_2_0());
+
+ }
+ pushFollow(FOLLOW_5);
+ lv_states_4_0=ruleState();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ current,
+ "states",
+ lv_states_4_0,
+ "de.cognicrypt.order.editor.Statemachine.State");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+ // InternalStatemachine.g:134:3: ( (lv_transitions_5_0= ruleTransition ) )*
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0==13) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // InternalStatemachine.g:135:4: (lv_transitions_5_0= ruleTransition )
+ {
+ // InternalStatemachine.g:135:4: (lv_transitions_5_0= ruleTransition )
+ // InternalStatemachine.g:136:5: lv_transitions_5_0= ruleTransition
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getStatemachineAccess().getTransitionsTransitionParserRuleCall_3_0());
+
+ }
+ pushFollow(FOLLOW_6);
+ lv_transitions_5_0=ruleTransition();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ current,
+ "transitions",
+ lv_transitions_5_0,
+ "de.cognicrypt.order.editor.Statemachine.Transition");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleStatemachine"
+
+
+ // $ANTLR start "entryRuleEvent"
+ // InternalStatemachine.g:157:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
+ public final EObject entryRuleEvent() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleEvent = null;
+
+
+ try {
+ // InternalStatemachine.g:157:46: (iv_ruleEvent= ruleEvent EOF )
+ // InternalStatemachine.g:158:2: iv_ruleEvent= ruleEvent EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getEventRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleEvent=ruleEvent();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleEvent;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleEvent"
+
+
+ // $ANTLR start "ruleEvent"
+ // InternalStatemachine.g:164:1: ruleEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) ;
+ public final EObject ruleEvent() throws RecognitionException {
+ EObject current = null;
+
+ Token lv_name_0_0=null;
+ Token lv_code_1_0=null;
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:170:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) )
+ // InternalStatemachine.g:171:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
+ {
+ // InternalStatemachine.g:171:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
+ // InternalStatemachine.g:172:3: ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) )
+ {
+ // InternalStatemachine.g:172:3: ( (lv_name_0_0= RULE_ID ) )
+ // InternalStatemachine.g:173:4: (lv_name_0_0= RULE_ID )
+ {
+ // InternalStatemachine.g:173:4: (lv_name_0_0= RULE_ID )
+ // InternalStatemachine.g:174:5: lv_name_0_0= RULE_ID
+ {
+ lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_name_0_0, grammarAccess.getEventAccess().getNameIDTerminalRuleCall_0_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getEventRule());
+ }
+ setWithLastConsumed(
+ current,
+ "name",
+ lv_name_0_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:190:3: ( (lv_code_1_0= RULE_ID ) )
+ // InternalStatemachine.g:191:4: (lv_code_1_0= RULE_ID )
+ {
+ // InternalStatemachine.g:191:4: (lv_code_1_0= RULE_ID )
+ // InternalStatemachine.g:192:5: lv_code_1_0= RULE_ID
+ {
+ lv_code_1_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_code_1_0, grammarAccess.getEventAccess().getCodeIDTerminalRuleCall_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getEventRule());
+ }
+ setWithLastConsumed(
+ current,
+ "code",
+ lv_code_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleEvent"
+
+
+ // $ANTLR start "entryRuleState"
+ // InternalStatemachine.g:212:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
+ public final EObject entryRuleState() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleState = null;
+
+
+ try {
+ // InternalStatemachine.g:212:46: (iv_ruleState= ruleState EOF )
+ // InternalStatemachine.g:213:2: iv_ruleState= ruleState EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getStateRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleState=ruleState();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleState;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleState"
+
+
+ // $ANTLR start "ruleState"
+ // InternalStatemachine.g:219:1: ruleState returns [EObject current=null] : (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' ) ;
+ public final EObject ruleState() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token lv_name_1_0=null;
+ Token otherlv_3=null;
+ EObject lv_transitions_2_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:225:2: ( (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' ) )
+ // InternalStatemachine.g:226:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' )
+ {
+ // InternalStatemachine.g:226:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' )
+ // InternalStatemachine.g:227:3: otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end'
+ {
+ otherlv_0=(Token)match(input,12,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getStateAccess().getStateKeyword_0());
+
+ }
+ // InternalStatemachine.g:231:3: ( (lv_name_1_0= RULE_ID ) )
+ // InternalStatemachine.g:232:4: (lv_name_1_0= RULE_ID )
+ {
+ // InternalStatemachine.g:232:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:233:5: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_7); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_name_1_0, grammarAccess.getStateAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getStateRule());
+ }
+ setWithLastConsumed(
+ current,
+ "name",
+ lv_name_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:249:3: ( (lv_transitions_2_0= ruleTransition ) )*
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==13) ) {
+ alt5=1;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // InternalStatemachine.g:250:4: (lv_transitions_2_0= ruleTransition )
+ {
+ // InternalStatemachine.g:250:4: (lv_transitions_2_0= ruleTransition )
+ // InternalStatemachine.g:251:5: lv_transitions_2_0= ruleTransition
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getStateAccess().getTransitionsTransitionParserRuleCall_2_0());
+
+ }
+ pushFollow(FOLLOW_7);
+ lv_transitions_2_0=ruleTransition();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getStateRule());
+ }
+ add(
+ current,
+ "transitions",
+ lv_transitions_2_0,
+ "de.cognicrypt.order.editor.Statemachine.Transition");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+ otherlv_3=(Token)match(input,11,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_3, grammarAccess.getStateAccess().getEndKeyword_3());
+
+ }
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleState"
+
+
+ // $ANTLR start "entryRuleTransition"
+ // InternalStatemachine.g:276:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ;
+ public final EObject entryRuleTransition() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleTransition = null;
+
+
+ try {
+ // InternalStatemachine.g:276:51: (iv_ruleTransition= ruleTransition EOF )
+ // InternalStatemachine.g:277:2: iv_ruleTransition= ruleTransition EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getTransitionRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleTransition=ruleTransition();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleTransition;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleTransition"
+
+
+ // $ANTLR start "ruleTransition"
+ // InternalStatemachine.g:283:1: ruleTransition returns [EObject current=null] : (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) ;
+ public final EObject ruleTransition() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token lv_name_1_0=null;
+ Token otherlv_2=null;
+ Token otherlv_3=null;
+ Token otherlv_4=null;
+ Token otherlv_5=null;
+ Token otherlv_6=null;
+ Token otherlv_7=null;
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:289:2: ( (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) )
+ // InternalStatemachine.g:290:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
+ {
+ // InternalStatemachine.g:290:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
+ // InternalStatemachine.g:291:3: otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end'
+ {
+ otherlv_0=(Token)match(input,13,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getTransitionAccess().getTransitionKeyword_0());
+
+ }
+ // InternalStatemachine.g:295:3: ( (lv_name_1_0= RULE_ID ) )
+ // InternalStatemachine.g:296:4: (lv_name_1_0= RULE_ID )
+ {
+ // InternalStatemachine.g:296:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:297:5: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_name_1_0, grammarAccess.getTransitionAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getTransitionRule());
+ }
+ setWithLastConsumed(
+ current,
+ "name",
+ lv_name_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:313:3: ( (otherlv_2= RULE_ID ) )
+ // InternalStatemachine.g:314:4: (otherlv_2= RULE_ID )
+ {
+ // InternalStatemachine.g:314:4: (otherlv_2= RULE_ID )
+ // InternalStatemachine.g:315:5: otherlv_2= RULE_ID
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getTransitionRule());
+ }
+
+ }
+ otherlv_2=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getFromStateStateCrossReference_2_0());
+
+ }
+
+ }
+
+
+ }
+
+ otherlv_3=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_3, grammarAccess.getTransitionAccess().getCommaKeyword_3());
+
+ }
+ // InternalStatemachine.g:330:3: ( (otherlv_4= RULE_ID ) )
+ // InternalStatemachine.g:331:4: (otherlv_4= RULE_ID )
+ {
+ // InternalStatemachine.g:331:4: (otherlv_4= RULE_ID )
+ // InternalStatemachine.g:332:5: otherlv_4= RULE_ID
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getTransitionRule());
+ }
+
+ }
+ otherlv_4=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getEventEventCrossReference_4_0());
+
+ }
+
+ }
+
+
+ }
+
+ otherlv_5=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_5, grammarAccess.getTransitionAccess().getCommaKeyword_5());
+
+ }
+ // InternalStatemachine.g:347:3: ( (otherlv_6= RULE_ID ) )
+ // InternalStatemachine.g:348:4: (otherlv_6= RULE_ID )
+ {
+ // InternalStatemachine.g:348:4: (otherlv_6= RULE_ID )
+ // InternalStatemachine.g:349:5: otherlv_6= RULE_ID
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getTransitionRule());
+ }
+
+ }
+ otherlv_6=(Token)match(input,RULE_ID,FOLLOW_9); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getEndStateStateCrossReference_6_0());
+
+ }
+
+ }
+
+
+ }
+
+ otherlv_7=(Token)match(input,11,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_7, grammarAccess.getTransitionAccess().getEndKeyword_7());
+
+ }
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleTransition"
+
+
+ // $ANTLR start "entryRuleJvmTypeReference"
+ // InternalStatemachine.g:368:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+ public final EObject entryRuleJvmTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmTypeReference = null;
+
+
+ try {
+ // InternalStatemachine.g:368:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+ // InternalStatemachine.g:369:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmTypeReferenceRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmTypeReference=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmTypeReference;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmTypeReference"
+
+
+ // $ANTLR start "ruleJvmTypeReference"
+ // InternalStatemachine.g:375:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+ public final EObject ruleJvmTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_JvmParameterizedTypeReference_0 = null;
+
+ EObject this_XFunctionTypeRef_3 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:381:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+ // InternalStatemachine.g:382:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+ {
+ // InternalStatemachine.g:382:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==RULE_ID) ) {
+ alt7=1;
+ }
+ else if ( (LA7_0==17||LA7_0==19) ) {
+ alt7=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return current;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 7, 0, input);
+
+ throw nvae;
+ }
+ switch (alt7) {
+ case 1 :
+ // InternalStatemachine.g:383:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+ {
+ // InternalStatemachine.g:383:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+ // InternalStatemachine.g:384:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+
+ }
+ pushFollow(FOLLOW_10);
+ this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current = this_JvmParameterizedTypeReference_0;
+ afterParserOrEnumRuleCall();
+
+ }
+ // InternalStatemachine.g:392:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+ loop6:
+ do {
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0==15) && (synpred1_InternalStatemachine())) {
+ alt6=1;
+ }
+
+
+ switch (alt6) {
+ case 1 :
+ // InternalStatemachine.g:393:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+ {
+ // InternalStatemachine.g:399:5: ( () ruleArrayBrackets )
+ // InternalStatemachine.g:400:6: () ruleArrayBrackets
+ {
+ // InternalStatemachine.g:400:6: ()
+ // InternalStatemachine.g:401:7:
+ {
+ if ( state.backtracking==0 ) {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+ current);
+
+ }
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
+
+ }
+ pushFollow(FOLLOW_10);
+ ruleArrayBrackets();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop6;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:418:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1());
+
+ }
+ pushFollow(FOLLOW_2);
+ this_XFunctionTypeRef_3=ruleXFunctionTypeRef();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current = this_XFunctionTypeRef_3;
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmTypeReference"
+
+
+ // $ANTLR start "entryRuleArrayBrackets"
+ // InternalStatemachine.g:430:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+ public final String entryRuleArrayBrackets() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;
+
+
+ try {
+ // InternalStatemachine.g:430:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+ // InternalStatemachine.g:431:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getArrayBracketsRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleArrayBrackets=ruleArrayBrackets();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleArrayBrackets.getText();
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleArrayBrackets"
+
+
+ // $ANTLR start "ruleArrayBrackets"
+ // InternalStatemachine.g:437:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+ public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:443:2: ( (kw= '[' kw= ']' ) )
+ // InternalStatemachine.g:444:2: (kw= '[' kw= ']' )
+ {
+ // InternalStatemachine.g:444:2: (kw= '[' kw= ']' )
+ // InternalStatemachine.g:445:3: kw= '[' kw= ']'
+ {
+ kw=(Token)match(input,15,FOLLOW_11); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+
+ }
+ kw=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1());
+
+ }
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleArrayBrackets"
+
+
+ // $ANTLR start "entryRuleXFunctionTypeRef"
+ // InternalStatemachine.g:459:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+ public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleXFunctionTypeRef = null;
+
+
+ try {
+ // InternalStatemachine.g:459:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+ // InternalStatemachine.g:460:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getXFunctionTypeRefRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleXFunctionTypeRef;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+ // $ANTLR start "ruleXFunctionTypeRef"
+ // InternalStatemachine.g:466:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token otherlv_2=null;
+ Token otherlv_4=null;
+ Token otherlv_5=null;
+ EObject lv_paramTypes_1_0 = null;
+
+ EObject lv_paramTypes_3_0 = null;
+
+ EObject lv_returnType_6_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:472:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:473:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+ {
+ // InternalStatemachine.g:473:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:474:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+ {
+ // InternalStatemachine.g:474:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0==17) ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // InternalStatemachine.g:475:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+ {
+ otherlv_0=(Token)match(input,17,FOLLOW_12); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+
+ }
+ // InternalStatemachine.g:479:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==RULE_ID||LA9_0==17||LA9_0==19) ) {
+ alt9=1;
+ }
+ switch (alt9) {
+ case 1 :
+ // InternalStatemachine.g:480:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+ {
+ // InternalStatemachine.g:480:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:481:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:481:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:482:7: lv_paramTypes_1_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+
+ }
+ pushFollow(FOLLOW_13);
+ lv_paramTypes_1_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ add(
+ current,
+ "paramTypes",
+ lv_paramTypes_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:499:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==14) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // InternalStatemachine.g:500:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+ {
+ otherlv_2=(Token)match(input,14,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+
+ }
+ // InternalStatemachine.g:504:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:505:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:505:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:506:8: lv_paramTypes_3_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+
+ }
+ pushFollow(FOLLOW_13);
+ lv_paramTypes_3_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ add(
+ current,
+ "paramTypes",
+ lv_paramTypes_3_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+ otherlv_4=(Token)match(input,18,FOLLOW_15); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+
+ }
+
+ }
+ break;
+
+ }
+
+ otherlv_5=(Token)match(input,19,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+
+ }
+ // InternalStatemachine.g:534:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:535:4: (lv_returnType_6_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:535:4: (lv_returnType_6_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:536:5: lv_returnType_6_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ lv_returnType_6_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+ }
+ set(
+ current,
+ "returnType",
+ lv_returnType_6_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleXFunctionTypeRef"
+
+
+ // $ANTLR start "entryRuleJvmParameterizedTypeReference"
+ // InternalStatemachine.g:557:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+ public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmParameterizedTypeReference = null;
+
+
+ try {
+ // InternalStatemachine.g:557:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+ // InternalStatemachine.g:558:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmParameterizedTypeReference;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+ // $ANTLR start "ruleJvmParameterizedTypeReference"
+ // InternalStatemachine.g:564:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ Token otherlv_3=null;
+ Token otherlv_5=null;
+ Token otherlv_7=null;
+ Token otherlv_9=null;
+ Token otherlv_11=null;
+ Token otherlv_13=null;
+ EObject lv_arguments_2_0 = null;
+
+ EObject lv_arguments_4_0 = null;
+
+ EObject lv_arguments_10_0 = null;
+
+ EObject lv_arguments_12_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:570:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+ // InternalStatemachine.g:571:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+ {
+ // InternalStatemachine.g:571:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+ // InternalStatemachine.g:572:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+ {
+ // InternalStatemachine.g:572:3: ( ( ruleQualifiedName ) )
+ // InternalStatemachine.g:573:4: ( ruleQualifiedName )
+ {
+ // InternalStatemachine.g:573:4: ( ruleQualifiedName )
+ // InternalStatemachine.g:574:5: ruleQualifiedName
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
+
+ }
+ pushFollow(FOLLOW_16);
+ ruleQualifiedName();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:588:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==20) && (synpred2_InternalStatemachine())) {
+ alt15=1;
+ }
+ switch (alt15) {
+ case 1 :
+ // InternalStatemachine.g:589:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+ {
+ // InternalStatemachine.g:589:4: ( ( '<' )=>otherlv_1= '<' )
+ // InternalStatemachine.g:590:5: ( '<' )=>otherlv_1= '<'
+ {
+ otherlv_1=(Token)match(input,20,FOLLOW_17); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+
+ }
+
+ }
+
+ // InternalStatemachine.g:596:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:597:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+ {
+ // InternalStatemachine.g:597:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:598:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+
+ }
+ pushFollow(FOLLOW_18);
+ lv_arguments_2_0=ruleJvmArgumentTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ current,
+ "arguments",
+ lv_arguments_2_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:615:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==14) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // InternalStatemachine.g:616:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+ {
+ otherlv_3=(Token)match(input,14,FOLLOW_17); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+
+ }
+ // InternalStatemachine.g:620:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:621:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+ {
+ // InternalStatemachine.g:621:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:622:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+
+ }
+ pushFollow(FOLLOW_18);
+ lv_arguments_4_0=ruleJvmArgumentTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ current,
+ "arguments",
+ lv_arguments_4_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+ otherlv_5=(Token)match(input,21,FOLLOW_19); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+
+ }
+ // InternalStatemachine.g:644:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+ loop14:
+ do {
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==22) && (synpred3_InternalStatemachine())) {
+ alt14=1;
+ }
+
+
+ switch (alt14) {
+ case 1 :
+ // InternalStatemachine.g:645:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+ {
+ // InternalStatemachine.g:645:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+ // InternalStatemachine.g:646:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+ {
+ // InternalStatemachine.g:652:6: ( () otherlv_7= '.' )
+ // InternalStatemachine.g:653:7: () otherlv_7= '.'
+ {
+ // InternalStatemachine.g:653:7: ()
+ // InternalStatemachine.g:654:8:
+ {
+ if ( state.backtracking==0 ) {
+
+ current = forceCreateModelElementAndSet(
+ grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+ current);
+
+ }
+
+ }
+
+ otherlv_7=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:666:5: ( ( ruleValidID ) )
+ // InternalStatemachine.g:667:6: ( ruleValidID )
+ {
+ // InternalStatemachine.g:667:6: ( ruleValidID )
+ // InternalStatemachine.g:668:7: ruleValidID
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
+
+ }
+ pushFollow(FOLLOW_20);
+ ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:682:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==20) && (synpred4_InternalStatemachine())) {
+ alt13=1;
+ }
+ switch (alt13) {
+ case 1 :
+ // InternalStatemachine.g:683:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+ {
+ // InternalStatemachine.g:683:6: ( ( '<' )=>otherlv_9= '<' )
+ // InternalStatemachine.g:684:7: ( '<' )=>otherlv_9= '<'
+ {
+ otherlv_9=(Token)match(input,20,FOLLOW_17); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+
+ }
+
+ }
+
+ // InternalStatemachine.g:690:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:691:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+ {
+ // InternalStatemachine.g:691:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:692:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+
+ }
+ pushFollow(FOLLOW_18);
+ lv_arguments_10_0=ruleJvmArgumentTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ current,
+ "arguments",
+ lv_arguments_10_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:709:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0==14) ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // InternalStatemachine.g:710:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+ {
+ otherlv_11=(Token)match(input,14,FOLLOW_17); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+
+ }
+ // InternalStatemachine.g:714:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:715:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+ {
+ // InternalStatemachine.g:715:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:716:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+
+ }
+ pushFollow(FOLLOW_18);
+ lv_arguments_12_0=ruleJvmArgumentTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+ }
+ add(
+ current,
+ "arguments",
+ lv_arguments_12_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+ otherlv_13=(Token)match(input,21,FOLLOW_19); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop14;
+ }
+ } while (true);
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+ // $ANTLR start "entryRuleJvmArgumentTypeReference"
+ // InternalStatemachine.g:745:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+ public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmArgumentTypeReference = null;
+
+
+ try {
+ // InternalStatemachine.g:745:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+ // InternalStatemachine.g:746:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmArgumentTypeReference;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+ // $ANTLR start "ruleJvmArgumentTypeReference"
+ // InternalStatemachine.g:752:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+ public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject this_JvmTypeReference_0 = null;
+
+ EObject this_JvmWildcardTypeReference_1 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:758:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+ // InternalStatemachine.g:759:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+ {
+ // InternalStatemachine.g:759:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==RULE_ID||LA16_0==17||LA16_0==19) ) {
+ alt16=1;
+ }
+ else if ( (LA16_0==23) ) {
+ alt16=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return current;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 16, 0, input);
+
+ throw nvae;
+ }
+ switch (alt16) {
+ case 1 :
+ // InternalStatemachine.g:760:3: this_JvmTypeReference_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ this_JvmTypeReference_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current = this_JvmTypeReference_0;
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:769:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1());
+
+ }
+ pushFollow(FOLLOW_2);
+ this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current = this_JvmWildcardTypeReference_1;
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmArgumentTypeReference"
+
+
+ // $ANTLR start "entryRuleJvmWildcardTypeReference"
+ // InternalStatemachine.g:781:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+ public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmWildcardTypeReference = null;
+
+
+ try {
+ // InternalStatemachine.g:781:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+ // InternalStatemachine.g:782:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmWildcardTypeReference;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+ // $ANTLR start "ruleJvmWildcardTypeReference"
+ // InternalStatemachine.g:788:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+ public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_1=null;
+ EObject lv_constraints_2_0 = null;
+
+ EObject lv_constraints_3_0 = null;
+
+ EObject lv_constraints_4_0 = null;
+
+ EObject lv_constraints_5_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:794:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+ // InternalStatemachine.g:795:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+ {
+ // InternalStatemachine.g:795:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+ // InternalStatemachine.g:796:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+ {
+ // InternalStatemachine.g:796:3: ()
+ // InternalStatemachine.g:797:4:
+ {
+ if ( state.backtracking==0 ) {
+
+ current = forceCreateModelElement(
+ grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+ current);
+
+ }
+
+ }
+
+ otherlv_1=(Token)match(input,23,FOLLOW_21); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+
+ }
+ // InternalStatemachine.g:807:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+ int alt19=3;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==24) ) {
+ alt19=1;
+ }
+ else if ( (LA19_0==26) ) {
+ alt19=2;
+ }
+ switch (alt19) {
+ case 1 :
+ // InternalStatemachine.g:808:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+ {
+ // InternalStatemachine.g:808:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+ // InternalStatemachine.g:809:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+ {
+ // InternalStatemachine.g:809:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+ // InternalStatemachine.g:810:6: (lv_constraints_2_0= ruleJvmUpperBound )
+ {
+ // InternalStatemachine.g:810:6: (lv_constraints_2_0= ruleJvmUpperBound )
+ // InternalStatemachine.g:811:7: lv_constraints_2_0= ruleJvmUpperBound
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+
+ }
+ pushFollow(FOLLOW_22);
+ lv_constraints_2_0=ruleJvmUpperBound();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ current,
+ "constraints",
+ lv_constraints_2_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:828:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+ loop17:
+ do {
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==25) ) {
+ alt17=1;
+ }
+
+
+ switch (alt17) {
+ case 1 :
+ // InternalStatemachine.g:829:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+ {
+ // InternalStatemachine.g:829:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+ // InternalStatemachine.g:830:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+
+ }
+ pushFollow(FOLLOW_22);
+ lv_constraints_3_0=ruleJvmUpperBoundAnded();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ current,
+ "constraints",
+ lv_constraints_3_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop17;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:849:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+ {
+ // InternalStatemachine.g:849:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+ // InternalStatemachine.g:850:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+ {
+ // InternalStatemachine.g:850:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+ // InternalStatemachine.g:851:6: (lv_constraints_4_0= ruleJvmLowerBound )
+ {
+ // InternalStatemachine.g:851:6: (lv_constraints_4_0= ruleJvmLowerBound )
+ // InternalStatemachine.g:852:7: lv_constraints_4_0= ruleJvmLowerBound
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+
+ }
+ pushFollow(FOLLOW_22);
+ lv_constraints_4_0=ruleJvmLowerBound();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ current,
+ "constraints",
+ lv_constraints_4_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmLowerBound");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:869:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+ loop18:
+ do {
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0==25) ) {
+ alt18=1;
+ }
+
+
+ switch (alt18) {
+ case 1 :
+ // InternalStatemachine.g:870:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+ {
+ // InternalStatemachine.g:870:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+ // InternalStatemachine.g:871:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+
+ }
+ pushFollow(FOLLOW_22);
+ lv_constraints_5_0=ruleJvmLowerBoundAnded();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+ }
+ add(
+ current,
+ "constraints",
+ lv_constraints_5_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmLowerBoundAnded");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop18;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+ // $ANTLR start "entryRuleJvmUpperBound"
+ // InternalStatemachine.g:894:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+ public final EObject entryRuleJvmUpperBound() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmUpperBound = null;
+
+
+ try {
+ // InternalStatemachine.g:894:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+ // InternalStatemachine.g:895:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmUpperBoundRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmUpperBound=ruleJvmUpperBound();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmUpperBound;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmUpperBound"
+
+
+ // $ANTLR start "ruleJvmUpperBound"
+ // InternalStatemachine.g:901:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ public final EObject ruleJvmUpperBound() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject lv_typeReference_1_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:907:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:908:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ {
+ // InternalStatemachine.g:908:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:909:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ {
+ otherlv_0=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+
+ }
+ // InternalStatemachine.g:913:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:914:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:914:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:915:5: lv_typeReference_1_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ lv_typeReference_1_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+ }
+ set(
+ current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmUpperBound"
+
+
+ // $ANTLR start "entryRuleJvmUpperBoundAnded"
+ // InternalStatemachine.g:936:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+ public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmUpperBoundAnded = null;
+
+
+ try {
+ // InternalStatemachine.g:936:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+ // InternalStatemachine.g:937:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmUpperBoundAnded;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+ // $ANTLR start "ruleJvmUpperBoundAnded"
+ // InternalStatemachine.g:943:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject lv_typeReference_1_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:949:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:950:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ {
+ // InternalStatemachine.g:950:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:951:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ {
+ otherlv_0=(Token)match(input,25,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+
+ }
+ // InternalStatemachine.g:955:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:956:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:956:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:957:5: lv_typeReference_1_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ lv_typeReference_1_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+ }
+ set(
+ current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmUpperBoundAnded"
+
+
+ // $ANTLR start "entryRuleJvmLowerBound"
+ // InternalStatemachine.g:978:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+ public final EObject entryRuleJvmLowerBound() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmLowerBound = null;
+
+
+ try {
+ // InternalStatemachine.g:978:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+ // InternalStatemachine.g:979:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmLowerBoundRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmLowerBound=ruleJvmLowerBound();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmLowerBound;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmLowerBound"
+
+
+ // $ANTLR start "ruleJvmLowerBound"
+ // InternalStatemachine.g:985:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ public final EObject ruleJvmLowerBound() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject lv_typeReference_1_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:991:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:992:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ {
+ // InternalStatemachine.g:992:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:993:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ {
+ otherlv_0=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+
+ }
+ // InternalStatemachine.g:997:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:998:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:998:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:999:5: lv_typeReference_1_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ lv_typeReference_1_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+ }
+ set(
+ current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmLowerBound"
+
+
+ // $ANTLR start "entryRuleJvmLowerBoundAnded"
+ // InternalStatemachine.g:1020:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+ public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleJvmLowerBoundAnded = null;
+
+
+ try {
+ // InternalStatemachine.g:1020:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+ // InternalStatemachine.g:1021:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleJvmLowerBoundAnded;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+ // $ANTLR start "ruleJvmLowerBoundAnded"
+ // InternalStatemachine.g:1027:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ EObject lv_typeReference_1_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1033:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:1034:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ {
+ // InternalStatemachine.g:1034:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1035:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ {
+ otherlv_0=(Token)match(input,25,FOLLOW_14); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+
+ }
+ // InternalStatemachine.g:1039:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1040:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ {
+ // InternalStatemachine.g:1040:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1041:5: lv_typeReference_1_0= ruleJvmTypeReference
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+
+ }
+ pushFollow(FOLLOW_2);
+ lv_typeReference_1_0=ruleJvmTypeReference();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+ }
+ set(
+ current,
+ "typeReference",
+ lv_typeReference_1_0,
+ "org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleJvmLowerBoundAnded"
+
+
+ // $ANTLR start "entryRuleQualifiedName"
+ // InternalStatemachine.g:1062:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+ public final String entryRuleQualifiedName() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+ try {
+ // InternalStatemachine.g:1062:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+ // InternalStatemachine.g:1063:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getQualifiedNameRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleQualifiedName=ruleQualifiedName();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleQualifiedName.getText();
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleQualifiedName"
+
+
+ // $ANTLR start "ruleQualifiedName"
+ // InternalStatemachine.g:1069:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) ;
+ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+ AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+ AntlrDatatypeRuleToken this_ValidID_2 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1075:2: ( (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) )
+ // InternalStatemachine.g:1076:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
+ {
+ // InternalStatemachine.g:1076:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
+ // InternalStatemachine.g:1077:3: this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )*
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+
+ }
+ pushFollow(FOLLOW_19);
+ this_ValidID_0=ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(this_ValidID_0);
+
+ }
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+ // InternalStatemachine.g:1087:3: (kw= '.' this_ValidID_2= ruleValidID )*
+ loop20:
+ do {
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0==22) ) {
+ int LA20_2 = input.LA(2);
+
+ if ( (LA20_2==RULE_ID) ) {
+ alt20=1;
+ }
+
+
+ }
+
+
+ switch (alt20) {
+ case 1 :
+ // InternalStatemachine.g:1088:4: kw= '.' this_ValidID_2= ruleValidID
+ {
+ kw=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
+
+ }
+ pushFollow(FOLLOW_19);
+ this_ValidID_2=ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(this_ValidID_2);
+
+ }
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+ break;
+
+ default :
+ break loop20;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleQualifiedName"
+
+
+ // $ANTLR start "entryRuleQualifiedNameWithWildcard"
+ // InternalStatemachine.g:1108:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+ public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;
+
+
+ try {
+ // InternalStatemachine.g:1108:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+ // InternalStatemachine.g:1109:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleQualifiedNameWithWildcard.getText();
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+ // $ANTLR start "ruleQualifiedNameWithWildcard"
+ // InternalStatemachine.g:1115:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+ public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+ AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1121:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+ // InternalStatemachine.g:1122:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+ {
+ // InternalStatemachine.g:1122:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+ // InternalStatemachine.g:1123:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+
+ }
+ pushFollow(FOLLOW_23);
+ this_QualifiedName_0=ruleQualifiedName();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(this_QualifiedName_0);
+
+ }
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+ kw=(Token)match(input,22,FOLLOW_24); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+
+ }
+ kw=(Token)match(input,27,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
+
+ }
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleQualifiedNameWithWildcard"
+
+
+ // $ANTLR start "entryRuleValidID"
+ // InternalStatemachine.g:1147:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+ public final String entryRuleValidID() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+ try {
+ // InternalStatemachine.g:1147:47: (iv_ruleValidID= ruleValidID EOF )
+ // InternalStatemachine.g:1148:2: iv_ruleValidID= ruleValidID EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getValidIDRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleValidID=ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleValidID.getText();
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleValidID"
+
+
+ // $ANTLR start "ruleValidID"
+ // InternalStatemachine.g:1154:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+ public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token this_ID_0=null;
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1160:2: (this_ID_0= RULE_ID )
+ // InternalStatemachine.g:1161:2: this_ID_0= RULE_ID
+ {
+ this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(this_ID_0);
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+
+ }
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleValidID"
+
+
+ // $ANTLR start "entryRuleXImportDeclaration"
+ // InternalStatemachine.g:1171:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+ public final EObject entryRuleXImportDeclaration() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleXImportDeclaration = null;
+
+
+ try {
+ // InternalStatemachine.g:1171:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+ // InternalStatemachine.g:1172:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getXImportDeclarationRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleXImportDeclaration=ruleXImportDeclaration();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleXImportDeclaration;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleXImportDeclaration"
+
+
+ // $ANTLR start "ruleXImportDeclaration"
+ // InternalStatemachine.g:1178:1: ruleXImportDeclaration returns [EObject current=null] : (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) ;
+ public final EObject ruleXImportDeclaration() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token lv_static_1_0=null;
+ Token lv_extension_2_0=null;
+ Token lv_wildcard_4_0=null;
+ Token otherlv_8=null;
+ AntlrDatatypeRuleToken lv_memberName_5_0 = null;
+
+ AntlrDatatypeRuleToken lv_importedNamespace_7_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1184:2: ( (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) )
+ // InternalStatemachine.g:1185:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
+ {
+ // InternalStatemachine.g:1185:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
+ // InternalStatemachine.g:1186:3: otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )?
+ {
+ otherlv_0=(Token)match(input,28,FOLLOW_25); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
+
+ }
+ // InternalStatemachine.g:1190:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )
+ int alt23=3;
+ alt23 = dfa23.predict(input);
+ switch (alt23) {
+ case 1 :
+ // InternalStatemachine.g:1191:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
+ {
+ // InternalStatemachine.g:1191:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
+ // InternalStatemachine.g:1192:5: ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
+ {
+ // InternalStatemachine.g:1192:5: ( (lv_static_1_0= 'static' ) )
+ // InternalStatemachine.g:1193:6: (lv_static_1_0= 'static' )
+ {
+ // InternalStatemachine.g:1193:6: (lv_static_1_0= 'static' )
+ // InternalStatemachine.g:1194:7: lv_static_1_0= 'static'
+ {
+ lv_static_1_0=(Token)match(input,29,FOLLOW_26); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed(current, "static", lv_static_1_0 != null, "static");
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:1206:5: ( (lv_extension_2_0= 'extension' ) )?
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( (LA21_0==30) ) {
+ alt21=1;
+ }
+ switch (alt21) {
+ case 1 :
+ // InternalStatemachine.g:1207:6: (lv_extension_2_0= 'extension' )
+ {
+ // InternalStatemachine.g:1207:6: (lv_extension_2_0= 'extension' )
+ // InternalStatemachine.g:1208:7: lv_extension_2_0= 'extension'
+ {
+ lv_extension_2_0=(Token)match(input,30,FOLLOW_26); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed(current, "extension", lv_extension_2_0 != null, "extension");
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // InternalStatemachine.g:1220:5: ( ( ruleQualifiedNameInStaticImport ) )
+ // InternalStatemachine.g:1221:6: ( ruleQualifiedNameInStaticImport )
+ {
+ // InternalStatemachine.g:1221:6: ( ruleQualifiedNameInStaticImport )
+ // InternalStatemachine.g:1222:7: ruleQualifiedNameInStaticImport
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0());
+
+ }
+ pushFollow(FOLLOW_27);
+ ruleQualifiedNameInStaticImport();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+ // InternalStatemachine.g:1236:5: ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
+ int alt22=2;
+ int LA22_0 = input.LA(1);
+
+ if ( (LA22_0==27) ) {
+ alt22=1;
+ }
+ else if ( (LA22_0==RULE_ID) ) {
+ alt22=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return current;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 22, 0, input);
+
+ throw nvae;
+ }
+ switch (alt22) {
+ case 1 :
+ // InternalStatemachine.g:1237:6: ( (lv_wildcard_4_0= '*' ) )
+ {
+ // InternalStatemachine.g:1237:6: ( (lv_wildcard_4_0= '*' ) )
+ // InternalStatemachine.g:1238:7: (lv_wildcard_4_0= '*' )
+ {
+ // InternalStatemachine.g:1238:7: (lv_wildcard_4_0= '*' )
+ // InternalStatemachine.g:1239:8: lv_wildcard_4_0= '*'
+ {
+ lv_wildcard_4_0=(Token)match(input,27,FOLLOW_28); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+ setWithLastConsumed(current, "wildcard", lv_wildcard_4_0 != null, "*");
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1252:6: ( (lv_memberName_5_0= ruleValidID ) )
+ {
+ // InternalStatemachine.g:1252:6: ( (lv_memberName_5_0= ruleValidID ) )
+ // InternalStatemachine.g:1253:7: (lv_memberName_5_0= ruleValidID )
+ {
+ // InternalStatemachine.g:1253:7: (lv_memberName_5_0= ruleValidID )
+ // InternalStatemachine.g:1254:8: lv_memberName_5_0= ruleValidID
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0());
+
+ }
+ pushFollow(FOLLOW_28);
+ lv_memberName_5_0=ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+ }
+ set(
+ current,
+ "memberName",
+ lv_memberName_5_0,
+ "org.eclipse.xtext.xbase.Xtype.ValidID");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:1274:4: ( ( ruleQualifiedName ) )
+ {
+ // InternalStatemachine.g:1274:4: ( ( ruleQualifiedName ) )
+ // InternalStatemachine.g:1275:5: ( ruleQualifiedName )
+ {
+ // InternalStatemachine.g:1275:5: ( ruleQualifiedName )
+ // InternalStatemachine.g:1276:6: ruleQualifiedName
+ {
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getXImportDeclarationRule());
+ }
+
+ }
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0());
+
+ }
+ pushFollow(FOLLOW_28);
+ ruleQualifiedName();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // InternalStatemachine.g:1291:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
+ {
+ // InternalStatemachine.g:1291:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
+ // InternalStatemachine.g:1292:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
+ {
+ // InternalStatemachine.g:1292:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
+ // InternalStatemachine.g:1293:6: lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0());
+
+ }
+ pushFollow(FOLLOW_28);
+ lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+ }
+ set(
+ current,
+ "importedNamespace",
+ lv_importedNamespace_7_0,
+ "org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+ // InternalStatemachine.g:1311:3: (otherlv_8= ';' )?
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==31) ) {
+ alt24=1;
+ }
+ switch (alt24) {
+ case 1 :
+ // InternalStatemachine.g:1312:4: otherlv_8= ';'
+ {
+ otherlv_8=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleXImportDeclaration"
+
+
+ // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+ // InternalStatemachine.g:1321:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+ public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+ String current = null;
+
+ AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+ try {
+ // InternalStatemachine.g:1321:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+ // InternalStatemachine.g:1322:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleQualifiedNameInStaticImport.getText();
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+ // $ANTLR start "ruleQualifiedNameInStaticImport"
+ // InternalStatemachine.g:1328:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+ public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
+ AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+ Token kw=null;
+ AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:1334:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+ // InternalStatemachine.g:1335:2: (this_ValidID_0= ruleValidID kw= '.' )+
+ {
+ // InternalStatemachine.g:1335:2: (this_ValidID_0= ruleValidID kw= '.' )+
+ int cnt25=0;
+ loop25:
+ do {
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( (LA25_0==RULE_ID) ) {
+ int LA25_2 = input.LA(2);
+
+ if ( (LA25_2==22) ) {
+ alt25=1;
+ }
+
+
+ }
+
+
+ switch (alt25) {
+ case 1 :
+ // InternalStatemachine.g:1336:3: this_ValidID_0= ruleValidID kw= '.'
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+
+ }
+ pushFollow(FOLLOW_23);
+ this_ValidID_0=ruleValidID();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(this_ValidID_0);
+
+ }
+ if ( state.backtracking==0 ) {
+
+ afterParserOrEnumRuleCall();
+
+ }
+ kw=(Token)match(input,22,FOLLOW_29); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ current.merge(kw);
+ newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+
+ }
+
+ }
+ break;
+
+ default :
+ if ( cnt25 >= 1 ) break loop25;
+ if (state.backtracking>0) {state.failed=true; return current;}
+ EarlyExitException eee =
+ new EarlyExitException(25, input);
+ throw eee;
+ }
+ cnt25++;
+ } while (true);
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+ // $ANTLR start synpred1_InternalStatemachine
+ public final void synpred1_InternalStatemachine_fragment() throws RecognitionException {
+ // InternalStatemachine.g:393:5: ( ( () ruleArrayBrackets ) )
+ // InternalStatemachine.g:393:6: ( () ruleArrayBrackets )
+ {
+ // InternalStatemachine.g:393:6: ( () ruleArrayBrackets )
+ // InternalStatemachine.g:394:6: () ruleArrayBrackets
+ {
+ // InternalStatemachine.g:394:6: ()
+ // InternalStatemachine.g:395:6:
+ {
+ }
+
+ pushFollow(FOLLOW_2);
+ ruleArrayBrackets();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+ }
+ // $ANTLR end synpred1_InternalStatemachine
+
+ // $ANTLR start synpred2_InternalStatemachine
+ public final void synpred2_InternalStatemachine_fragment() throws RecognitionException {
+ // InternalStatemachine.g:590:5: ( '<' )
+ // InternalStatemachine.g:590:6: '<'
+ {
+ match(input,20,FOLLOW_2); if (state.failed) return ;
+
+ }
+ }
+ // $ANTLR end synpred2_InternalStatemachine
+
+ // $ANTLR start synpred3_InternalStatemachine
+ public final void synpred3_InternalStatemachine_fragment() throws RecognitionException {
+ // InternalStatemachine.g:646:6: ( ( () '.' ) )
+ // InternalStatemachine.g:646:7: ( () '.' )
+ {
+ // InternalStatemachine.g:646:7: ( () '.' )
+ // InternalStatemachine.g:647:7: () '.'
+ {
+ // InternalStatemachine.g:647:7: ()
+ // InternalStatemachine.g:648:7:
+ {
+ }
+
+ match(input,22,FOLLOW_2); if (state.failed) return ;
+
+ }
+
+
+ }
+ }
+ // $ANTLR end synpred3_InternalStatemachine
+
+ // $ANTLR start synpred4_InternalStatemachine
+ public final void synpred4_InternalStatemachine_fragment() throws RecognitionException {
+ // InternalStatemachine.g:684:7: ( '<' )
+ // InternalStatemachine.g:684:8: '<'
+ {
+ match(input,20,FOLLOW_2); if (state.failed) return ;
+
+ }
+ }
+ // $ANTLR end synpred4_InternalStatemachine
+
+ // Delegated rules
+
+ public final boolean synpred4_InternalStatemachine() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred4_InternalStatemachine_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred2_InternalStatemachine() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred2_InternalStatemachine_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred3_InternalStatemachine() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred3_InternalStatemachine_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred1_InternalStatemachine() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred1_InternalStatemachine_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+
+
+ protected DFA23 dfa23 = new DFA23(this);
+ static final String dfa_1s = "\7\uffff";
+ static final String dfa_2s = "\2\uffff\1\4\3\uffff\1\4";
+ static final String dfa_3s = "\1\4\1\uffff\1\26\1\4\2\uffff\1\26";
+ static final String dfa_4s = "\1\35\1\uffff\1\37\1\33\2\uffff\1\37";
+ static final String dfa_5s = "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+ static final String dfa_6s = "\7\uffff}>";
+ static final String[] dfa_7s = {
+ "\1\2\30\uffff\1\1",
+ "",
+ "\1\3\10\uffff\1\4",
+ "\1\6\26\uffff\1\5",
+ "",
+ "",
+ "\1\3\10\uffff\1\4"
+ };
+
+ static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+ static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+ static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+ static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+ static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+ static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+ static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+ class DFA23 extends DFA {
+
+ public DFA23(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 23;
+ this.eot = dfa_1;
+ this.eof = dfa_2;
+ this.min = dfa_3;
+ this.max = dfa_4;
+ this.accept = dfa_5;
+ this.special = dfa_6;
+ this.transition = dfa_7;
+ }
+ public String getDescription() {
+ return "1190:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )";
+ }
+ }
+
+
+ public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000810L});
+ public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000003002L});
+ public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000002002L});
+ public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000002800L});
+ public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000800L});
+ public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000008002L});
+ public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000010000L});
+ public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x00000000000E0010L});
+ public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000044000L});
+ public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x00000000000A0010L});
+ public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000080000L});
+ public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000100002L});
+ public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x00000000008A0010L});
+ public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000204000L});
+ public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000400002L});
+ public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000500002L});
+ public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000005000002L});
+ public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000002000002L});
+ public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000400000L});
+ public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000020000010L});
+ public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000040000010L});
+ public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000008000010L});
+ public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000012L});
+
+}
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/scoping/AbstractStatemachineScopeProvider.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/scoping/AbstractStatemachineScopeProvider.java
new file mode 100644
index 000000000..6f22991fd
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/scoping/AbstractStatemachineScopeProvider.java
@@ -0,0 +1,9 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.scoping;
+
+import org.eclipse.xtext.xbase.scoping.XtypeScopeProvider;
+
+public abstract class AbstractStatemachineScopeProvider extends XtypeScopeProvider {
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
new file mode 100644
index 000000000..2be58d521
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
@@ -0,0 +1,199 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.serializer;
+
+import com.google.inject.Inject;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.Statemachine;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import de.cognicrypt.order.editor.statemachine.Transition;
+import java.util.Set;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Parameter;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference;
+import org.eclipse.xtext.common.types.JvmInnerTypeReference;
+import org.eclipse.xtext.common.types.JvmLowerBound;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmTypeParameter;
+import org.eclipse.xtext.common.types.JvmUpperBound;
+import org.eclipse.xtext.common.types.JvmWildcardTypeReference;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.serializer.ISerializationContext;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+import org.eclipse.xtext.xbase.serializer.XtypeSemanticSequencer;
+import org.eclipse.xtext.xtype.XFunctionTypeRef;
+import org.eclipse.xtext.xtype.XImportDeclaration;
+import org.eclipse.xtext.xtype.XImportSection;
+import org.eclipse.xtext.xtype.XtypePackage;
+
+@SuppressWarnings("all")
+public class StatemachineSemanticSequencer extends XtypeSemanticSequencer {
+
+ @Inject
+ private StatemachineGrammarAccess grammarAccess;
+
+ @Override
+ public void sequence(ISerializationContext context, EObject semanticObject) {
+ EPackage epackage = semanticObject.eClass().getEPackage();
+ ParserRule rule = context.getParserRule();
+ Action action = context.getAssignedAction();
+ Set parameters = context.getEnabledBooleanParameters();
+ if (epackage == StatemachinePackage.eINSTANCE)
+ switch (semanticObject.eClass().getClassifierID()) {
+ case StatemachinePackage.EVENT:
+ sequence_Event(context, (Event) semanticObject);
+ return;
+ case StatemachinePackage.STATE:
+ sequence_State(context, (State) semanticObject);
+ return;
+ case StatemachinePackage.STATEMACHINE:
+ sequence_Statemachine(context, (Statemachine) semanticObject);
+ return;
+ case StatemachinePackage.TRANSITION:
+ sequence_Transition(context, (Transition) semanticObject);
+ return;
+ }
+ else if (epackage == TypesPackage.eINSTANCE)
+ switch (semanticObject.eClass().getClassifierID()) {
+ case TypesPackage.JVM_GENERIC_ARRAY_TYPE_REFERENCE:
+ sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject);
+ return;
+ case TypesPackage.JVM_INNER_TYPE_REFERENCE:
+ sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject);
+ return;
+ case TypesPackage.JVM_LOWER_BOUND:
+ if (rule == grammarAccess.getJvmLowerBoundAndedRule()) {
+ sequence_JvmLowerBoundAnded(context, (JvmLowerBound) semanticObject);
+ return;
+ }
+ else if (rule == grammarAccess.getJvmLowerBoundRule()) {
+ sequence_JvmLowerBound(context, (JvmLowerBound) semanticObject);
+ return;
+ }
+ else break;
+ case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
+ if (action == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()) {
+ sequence_JvmParameterizedTypeReference_JvmInnerTypeReference_1_4_0_0_0(context, (JvmParameterizedTypeReference) semanticObject);
+ return;
+ }
+ else if (rule == grammarAccess.getJvmTypeReferenceRule()
+ || action == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()
+ || rule == grammarAccess.getJvmParameterizedTypeReferenceRule()
+ || rule == grammarAccess.getJvmArgumentTypeReferenceRule()) {
+ sequence_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject);
+ return;
+ }
+ else break;
+ case TypesPackage.JVM_TYPE_PARAMETER:
+ sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject);
+ return;
+ case TypesPackage.JVM_UPPER_BOUND:
+ if (rule == grammarAccess.getJvmUpperBoundAndedRule()) {
+ sequence_JvmUpperBoundAnded(context, (JvmUpperBound) semanticObject);
+ return;
+ }
+ else if (rule == grammarAccess.getJvmUpperBoundRule()) {
+ sequence_JvmUpperBound(context, (JvmUpperBound) semanticObject);
+ return;
+ }
+ else break;
+ case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
+ sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject);
+ return;
+ }
+ else if (epackage == XtypePackage.eINSTANCE)
+ switch (semanticObject.eClass().getClassifierID()) {
+ case XtypePackage.XFUNCTION_TYPE_REF:
+ sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject);
+ return;
+ case XtypePackage.XIMPORT_DECLARATION:
+ sequence_XImportDeclaration(context, (XImportDeclaration) semanticObject);
+ return;
+ case XtypePackage.XIMPORT_SECTION:
+ sequence_XImportSection(context, (XImportSection) semanticObject);
+ return;
+ }
+ if (errorAcceptor != null)
+ errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+ }
+
+ /**
+ * Contexts:
+ * Event returns Event
+ *
+ * Constraint:
+ * (name=ID code=ID)
+ */
+ protected void sequence_Event(ISerializationContext context, Event semanticObject) {
+ if (errorAcceptor != null) {
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.EVENT__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.EVENT__NAME));
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.EVENT__CODE) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.EVENT__CODE));
+ }
+ SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+ feeder.accept(grammarAccess.getEventAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
+ feeder.accept(grammarAccess.getEventAccess().getCodeIDTerminalRuleCall_1_0(), semanticObject.getCode());
+ feeder.finish();
+ }
+
+
+ /**
+ * Contexts:
+ * State returns State
+ *
+ * Constraint:
+ * (name=ID transitions+=Transition*)
+ */
+ protected void sequence_State(ISerializationContext context, State semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Contexts:
+ * Statemachine returns Statemachine
+ *
+ * Constraint:
+ * (events+=Event* states+=State* transitions+=Transition*)
+ */
+ protected void sequence_Statemachine(ISerializationContext context, Statemachine semanticObject) {
+ genericSequencer.createSequence(context, semanticObject);
+ }
+
+
+ /**
+ * Contexts:
+ * Transition returns Transition
+ *
+ * Constraint:
+ * (name=ID fromState=[State|ID] event=[Event|ID] endState=[State|ID])
+ */
+ protected void sequence_Transition(ISerializationContext context, Transition semanticObject) {
+ if (errorAcceptor != null) {
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.TRANSITION__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.TRANSITION__NAME));
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.TRANSITION__FROM_STATE) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.TRANSITION__FROM_STATE));
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.TRANSITION__EVENT) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.TRANSITION__EVENT));
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.TRANSITION__END_STATE) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.TRANSITION__END_STATE));
+ }
+ SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+ feeder.accept(grammarAccess.getTransitionAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+ feeder.accept(grammarAccess.getTransitionAccess().getFromStateStateIDTerminalRuleCall_2_0_1(), semanticObject.eGet(StatemachinePackage.Literals.TRANSITION__FROM_STATE, false));
+ feeder.accept(grammarAccess.getTransitionAccess().getEventEventIDTerminalRuleCall_4_0_1(), semanticObject.eGet(StatemachinePackage.Literals.TRANSITION__EVENT, false));
+ feeder.accept(grammarAccess.getTransitionAccess().getEndStateStateIDTerminalRuleCall_6_0_1(), semanticObject.eGet(StatemachinePackage.Literals.TRANSITION__END_STATE, false));
+ feeder.finish();
+ }
+
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSyntacticSequencer.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSyntacticSequencer.java
new file mode 100644
index 000000000..6ca9529a3
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSyntacticSequencer.java
@@ -0,0 +1,91 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.serializer;
+
+import com.google.inject.Inject;
+import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public class StatemachineSyntacticSequencer extends AbstractSyntacticSequencer {
+
+ protected StatemachineGrammarAccess grammarAccess;
+ protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
+ protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
+
+ @Inject
+ protected void init(IGrammarAccess access) {
+ grammarAccess = (StatemachineGrammarAccess) access;
+ match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
+ match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+ }
+
+ @Override
+ protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+ if (ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
+ return getArrayBracketsToken(semanticObject, ruleCall, node);
+ return "";
+ }
+
+ /**
+ * ArrayBrackets :
+ * '[' ']'
+ * ;
+ */
+ protected String getArrayBracketsToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+ if (node != null)
+ return getTokenText(node);
+ return "[ ]";
+ }
+
+ @Override
+ protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+ if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+ List transitionNodes = collectNodes(fromNode, toNode);
+ for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+ List syntaxNodes = getNodesFor(transitionNodes, syntax);
+ if (match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
+ emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+ else if (match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
+ emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+ else acceptNodes(getLastNavigableState(), syntaxNodes);
+ }
+ }
+
+ /**
+ * Ambiguous syntax:
+ * ('(' ')')?
+ *
+ * This ambiguous syntax occurs at:
+ * (rule start) (ambiguity) '=>' returnType=JvmTypeReference
+ */
+ protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List nodes) {
+ acceptNodes(transition, nodes);
+ }
+
+ /**
+ * Ambiguous syntax:
+ * ';'?
+ *
+ * This ambiguous syntax occurs at:
+ * importedNamespace=QualifiedNameWithWildcard (ambiguity) (rule end)
+ * importedType=[JvmDeclaredType|QualifiedName] (ambiguity) (rule end)
+ * memberName=ValidID (ambiguity) (rule end)
+ * wildcard?='*' (ambiguity) (rule end)
+ */
+ protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List nodes) {
+ acceptNodes(transition, nodes);
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
new file mode 100644
index 000000000..4971ea3bf
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
@@ -0,0 +1,552 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.services;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.TerminalRule;
+import org.eclipse.xtext.service.AbstractElementFinder;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
+
+@Singleton
+public class StatemachineGrammarAccess extends AbstractElementFinder.AbstractGrammarElementFinder {
+
+ public class StatemachineElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.Statemachine");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Action cStatemachineAction_0 = (Action)cGroup.eContents().get(0);
+ private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+ private final Keyword cEventsKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+ private final Assignment cEventsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+ private final RuleCall cEventsEventParserRuleCall_1_1_0 = (RuleCall)cEventsAssignment_1_1.eContents().get(0);
+ private final Keyword cEndKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
+ private final Assignment cStatesAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cStatesStateParserRuleCall_2_0 = (RuleCall)cStatesAssignment_2.eContents().get(0);
+ private final Assignment cTransitionsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cTransitionsTransitionParserRuleCall_3_0 = (RuleCall)cTransitionsAssignment_3.eContents().get(0);
+
+ //Statemachine :
+ // {Statemachine}
+ // ('events'
+ // events+=Event+
+ // 'end')?
+ // states+=State*
+ // transitions+=Transition*
+ //;
+ @Override public ParserRule getRule() { return rule; }
+
+ //{Statemachine}
+ //('events'
+ // events+=Event+
+ //'end')?
+ //states+=State*
+ //transitions+=Transition*
+ public Group getGroup() { return cGroup; }
+
+ //{Statemachine}
+ public Action getStatemachineAction_0() { return cStatemachineAction_0; }
+
+ //('events'
+ // events+=Event+
+ //'end')?
+ public Group getGroup_1() { return cGroup_1; }
+
+ //'events'
+ public Keyword getEventsKeyword_1_0() { return cEventsKeyword_1_0; }
+
+ //events+=Event+
+ public Assignment getEventsAssignment_1_1() { return cEventsAssignment_1_1; }
+
+ //Event
+ public RuleCall getEventsEventParserRuleCall_1_1_0() { return cEventsEventParserRuleCall_1_1_0; }
+
+ //'end'
+ public Keyword getEndKeyword_1_2() { return cEndKeyword_1_2; }
+
+ //states+=State*
+ public Assignment getStatesAssignment_2() { return cStatesAssignment_2; }
+
+ //State
+ public RuleCall getStatesStateParserRuleCall_2_0() { return cStatesStateParserRuleCall_2_0; }
+
+ //transitions+=Transition*
+ public Assignment getTransitionsAssignment_3() { return cTransitionsAssignment_3; }
+
+ //Transition
+ public RuleCall getTransitionsTransitionParserRuleCall_3_0() { return cTransitionsTransitionParserRuleCall_3_0; }
+ }
+ public class EventElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.Event");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
+ private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+ private final Assignment cCodeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cCodeIDTerminalRuleCall_1_0 = (RuleCall)cCodeAssignment_1.eContents().get(0);
+
+ //Event:
+ // name=ID code=ID
+ //;
+ @Override public ParserRule getRule() { return rule; }
+
+ //name=ID code=ID
+ public Group getGroup() { return cGroup; }
+
+ //name=ID
+ public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+ //code=ID
+ public Assignment getCodeAssignment_1() { return cCodeAssignment_1; }
+
+ //ID
+ public RuleCall getCodeIDTerminalRuleCall_1_0() { return cCodeIDTerminalRuleCall_1_0; }
+ }
+ public class StateElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.State");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cStateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Assignment cTransitionsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final RuleCall cTransitionsTransitionParserRuleCall_2_0 = (RuleCall)cTransitionsAssignment_2.eContents().get(0);
+ private final Keyword cEndKeyword_3 = (Keyword)cGroup.eContents().get(3);
+
+ //State:
+ // 'state' name=ID
+ // transitions+=Transition*
+ // 'end'
+ //;
+ @Override public ParserRule getRule() { return rule; }
+
+ //'state' name=ID
+ // transitions+=Transition*
+ //'end'
+ public Group getGroup() { return cGroup; }
+
+ //'state'
+ public Keyword getStateKeyword_0() { return cStateKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //transitions+=Transition*
+ public Assignment getTransitionsAssignment_2() { return cTransitionsAssignment_2; }
+
+ //Transition
+ public RuleCall getTransitionsTransitionParserRuleCall_2_0() { return cTransitionsTransitionParserRuleCall_2_0; }
+
+ //'end'
+ public Keyword getEndKeyword_3() { return cEndKeyword_3; }
+ }
+ public class TransitionElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.Transition");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Assignment cFromStateAssignment_2 = (Assignment)cGroup.eContents().get(2);
+ private final CrossReference cFromStateStateCrossReference_2_0 = (CrossReference)cFromStateAssignment_2.eContents().get(0);
+ private final RuleCall cFromStateStateIDTerminalRuleCall_2_0_1 = (RuleCall)cFromStateStateCrossReference_2_0.eContents().get(1);
+ private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Assignment cEventAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final CrossReference cEventEventCrossReference_4_0 = (CrossReference)cEventAssignment_4.eContents().get(0);
+ private final RuleCall cEventEventIDTerminalRuleCall_4_0_1 = (RuleCall)cEventEventCrossReference_4_0.eContents().get(1);
+ private final Keyword cCommaKeyword_5 = (Keyword)cGroup.eContents().get(5);
+ private final Assignment cEndStateAssignment_6 = (Assignment)cGroup.eContents().get(6);
+ private final CrossReference cEndStateStateCrossReference_6_0 = (CrossReference)cEndStateAssignment_6.eContents().get(0);
+ private final RuleCall cEndStateStateIDTerminalRuleCall_6_0_1 = (RuleCall)cEndStateStateCrossReference_6_0.eContents().get(1);
+ private final Keyword cEndKeyword_7 = (Keyword)cGroup.eContents().get(7);
+
+ //Transition:
+ // 'transition' name=ID
+ // fromState=[State] ',' event=[Event] ',' endState=[State]
+ // 'end'
+ //;
+ @Override public ParserRule getRule() { return rule; }
+
+ //'transition' name=ID
+ //fromState=[State] ',' event=[Event] ',' endState=[State]
+ //'end'
+ public Group getGroup() { return cGroup; }
+
+ //'transition'
+ public Keyword getTransitionKeyword_0() { return cTransitionKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+ //fromState=[State]
+ public Assignment getFromStateAssignment_2() { return cFromStateAssignment_2; }
+
+ //[State]
+ public CrossReference getFromStateStateCrossReference_2_0() { return cFromStateStateCrossReference_2_0; }
+
+ //ID
+ public RuleCall getFromStateStateIDTerminalRuleCall_2_0_1() { return cFromStateStateIDTerminalRuleCall_2_0_1; }
+
+ //','
+ public Keyword getCommaKeyword_3() { return cCommaKeyword_3; }
+
+ //event=[Event]
+ public Assignment getEventAssignment_4() { return cEventAssignment_4; }
+
+ //[Event]
+ public CrossReference getEventEventCrossReference_4_0() { return cEventEventCrossReference_4_0; }
+
+ //ID
+ public RuleCall getEventEventIDTerminalRuleCall_4_0_1() { return cEventEventIDTerminalRuleCall_4_0_1; }
+
+ //','
+ public Keyword getCommaKeyword_5() { return cCommaKeyword_5; }
+
+ //endState=[State]
+ public Assignment getEndStateAssignment_6() { return cEndStateAssignment_6; }
+
+ //[State]
+ public CrossReference getEndStateStateCrossReference_6_0() { return cEndStateStateCrossReference_6_0; }
+
+ //ID
+ public RuleCall getEndStateStateIDTerminalRuleCall_6_0_1() { return cEndStateStateIDTerminalRuleCall_6_0_1; }
+
+ //'end'
+ public Keyword getEndKeyword_7() { return cEndKeyword_7; }
+ }
+
+
+ private final StatemachineElements pStatemachine;
+ private final EventElements pEvent;
+ private final StateElements pState;
+ private final TransitionElements pTransition;
+
+ private final Grammar grammar;
+
+ private final XtypeGrammarAccess gaXtype;
+
+ @Inject
+ public StatemachineGrammarAccess(GrammarProvider grammarProvider,
+ XtypeGrammarAccess gaXtype) {
+ this.grammar = internalFindGrammar(grammarProvider);
+ this.gaXtype = gaXtype;
+ this.pStatemachine = new StatemachineElements();
+ this.pEvent = new EventElements();
+ this.pState = new StateElements();
+ this.pTransition = new TransitionElements();
+ }
+
+ protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+ Grammar grammar = grammarProvider.getGrammar(this);
+ while (grammar != null) {
+ if ("de.cognicrypt.order.editor.Statemachine".equals(grammar.getName())) {
+ return grammar;
+ }
+ List grammars = grammar.getUsedGrammars();
+ if (!grammars.isEmpty()) {
+ grammar = grammars.iterator().next();
+ } else {
+ return null;
+ }
+ }
+ return grammar;
+ }
+
+ @Override
+ public Grammar getGrammar() {
+ return grammar;
+ }
+
+
+ public XtypeGrammarAccess getXtypeGrammarAccess() {
+ return gaXtype;
+ }
+
+
+ //Statemachine :
+ // {Statemachine}
+ // ('events'
+ // events+=Event+
+ // 'end')?
+ // states+=State*
+ // transitions+=Transition*
+ //;
+ public StatemachineElements getStatemachineAccess() {
+ return pStatemachine;
+ }
+
+ public ParserRule getStatemachineRule() {
+ return getStatemachineAccess().getRule();
+ }
+
+ //Event:
+ // name=ID code=ID
+ //;
+ public EventElements getEventAccess() {
+ return pEvent;
+ }
+
+ public ParserRule getEventRule() {
+ return getEventAccess().getRule();
+ }
+
+ //State:
+ // 'state' name=ID
+ // transitions+=Transition*
+ // 'end'
+ //;
+ public StateElements getStateAccess() {
+ return pState;
+ }
+
+ public ParserRule getStateRule() {
+ return getStateAccess().getRule();
+ }
+
+ //Transition:
+ // 'transition' name=ID
+ // fromState=[State] ',' event=[Event] ',' endState=[State]
+ // 'end'
+ //;
+ public TransitionElements getTransitionAccess() {
+ return pTransition;
+ }
+
+ public ParserRule getTransitionRule() {
+ return getTransitionAccess().getRule();
+ }
+
+ //JvmTypeReference:
+ // JvmParameterizedTypeReference =>({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
+ // | XFunctionTypeRef;
+ public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+ return gaXtype.getJvmTypeReferenceAccess();
+ }
+
+ public ParserRule getJvmTypeReferenceRule() {
+ return getJvmTypeReferenceAccess().getRule();
+ }
+
+ //ArrayBrackets :
+ // '[' ']'
+ //;
+ public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+ return gaXtype.getArrayBracketsAccess();
+ }
+
+ public ParserRule getArrayBracketsRule() {
+ return getArrayBracketsAccess().getRule();
+ }
+
+ //XFunctionTypeRef:
+ // ('(' (paramTypes+=JvmTypeReference (',' paramTypes+=JvmTypeReference)*)? ')')? '=>' returnType=JvmTypeReference;
+ public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+ return gaXtype.getXFunctionTypeRefAccess();
+ }
+
+ public ParserRule getXFunctionTypeRefRule() {
+ return getXFunctionTypeRefAccess().getRule();
+ }
+
+ //JvmParameterizedTypeReference:
+ // type=[JvmType|QualifiedName] (
+ // =>'<' arguments+=JvmArgumentTypeReference (',' arguments+=JvmArgumentTypeReference)* '>'
+ // (=>({JvmInnerTypeReference.outer=current} '.') type=[JvmType|ValidID] (=>'<' arguments+=JvmArgumentTypeReference (',' arguments+=JvmArgumentTypeReference)* '>')?)*
+ // )?;
+ public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
+ return gaXtype.getJvmParameterizedTypeReferenceAccess();
+ }
+
+ public ParserRule getJvmParameterizedTypeReferenceRule() {
+ return getJvmParameterizedTypeReferenceAccess().getRule();
+ }
+
+ //JvmArgumentTypeReference returns JvmTypeReference:
+ // JvmTypeReference | JvmWildcardTypeReference;
+ public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+ return gaXtype.getJvmArgumentTypeReferenceAccess();
+ }
+
+ public ParserRule getJvmArgumentTypeReferenceRule() {
+ return getJvmArgumentTypeReferenceAccess().getRule();
+ }
+
+ //JvmWildcardTypeReference:
+ // {JvmWildcardTypeReference} '?' (
+ // constraints+=JvmUpperBound (constraints+=JvmUpperBoundAnded)*
+ // | constraints+=JvmLowerBound (constraints+=JvmLowerBoundAnded)*
+ // )?;
+ public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+ return gaXtype.getJvmWildcardTypeReferenceAccess();
+ }
+
+ public ParserRule getJvmWildcardTypeReferenceRule() {
+ return getJvmWildcardTypeReferenceAccess().getRule();
+ }
+
+ //JvmUpperBound :
+ // 'extends' typeReference=JvmTypeReference;
+ public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+ return gaXtype.getJvmUpperBoundAccess();
+ }
+
+ public ParserRule getJvmUpperBoundRule() {
+ return getJvmUpperBoundAccess().getRule();
+ }
+
+ //JvmUpperBoundAnded returns JvmUpperBound:
+ // '&' typeReference=JvmTypeReference;
+ public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+ return gaXtype.getJvmUpperBoundAndedAccess();
+ }
+
+ public ParserRule getJvmUpperBoundAndedRule() {
+ return getJvmUpperBoundAndedAccess().getRule();
+ }
+
+ //JvmLowerBound :
+ // 'super' typeReference=JvmTypeReference;
+ public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+ return gaXtype.getJvmLowerBoundAccess();
+ }
+
+ public ParserRule getJvmLowerBoundRule() {
+ return getJvmLowerBoundAccess().getRule();
+ }
+
+ //JvmLowerBoundAnded returns JvmLowerBound:
+ // '&' typeReference=JvmTypeReference;
+ public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+ return gaXtype.getJvmLowerBoundAndedAccess();
+ }
+
+ public ParserRule getJvmLowerBoundAndedRule() {
+ return getJvmLowerBoundAndedAccess().getRule();
+ }
+
+ //JvmTypeParameter :
+ // name=ValidID
+ // (constraints+=JvmUpperBound (constraints+=JvmUpperBoundAnded)*)?;
+ public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+ return gaXtype.getJvmTypeParameterAccess();
+ }
+
+ public ParserRule getJvmTypeParameterRule() {
+ return getJvmTypeParameterAccess().getRule();
+ }
+
+ //QualifiedName:
+ // ValidID ('.' ValidID)*;
+ public XtypeGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+ return gaXtype.getQualifiedNameAccess();
+ }
+
+ public ParserRule getQualifiedNameRule() {
+ return getQualifiedNameAccess().getRule();
+ }
+
+ //QualifiedNameWithWildcard :
+ // QualifiedName '.' '*';
+ public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+ return gaXtype.getQualifiedNameWithWildcardAccess();
+ }
+
+ public ParserRule getQualifiedNameWithWildcardRule() {
+ return getQualifiedNameWithWildcardAccess().getRule();
+ }
+
+ //ValidID:
+ // ID;
+ public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+ return gaXtype.getValidIDAccess();
+ }
+
+ public ParserRule getValidIDRule() {
+ return getValidIDAccess().getRule();
+ }
+
+ //XImportSection:
+ // importDeclarations+=XImportDeclaration+;
+ public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+ return gaXtype.getXImportSectionAccess();
+ }
+
+ public ParserRule getXImportSectionRule() {
+ return getXImportSectionAccess().getRule();
+ }
+
+ //XImportDeclaration:
+ // 'import' (
+ // (static?='static' extension?='extension'? importedType=[JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' | memberName=ValidID))
+ // | importedType=[JvmDeclaredType|QualifiedName]
+ // | importedNamespace=QualifiedNameWithWildcard) ';'?
+ //;
+ public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
+ return gaXtype.getXImportDeclarationAccess();
+ }
+
+ public ParserRule getXImportDeclarationRule() {
+ return getXImportDeclarationAccess().getRule();
+ }
+
+ //QualifiedNameInStaticImport:
+ // (ValidID '.')+
+ //;
+ public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+ return gaXtype.getQualifiedNameInStaticImportAccess();
+ }
+
+ public ParserRule getQualifiedNameInStaticImportRule() {
+ return getQualifiedNameInStaticImportAccess().getRule();
+ }
+
+ //terminal ID:
+ // '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+ public TerminalRule getIDRule() {
+ return gaXtype.getIDRule();
+ }
+
+ //terminal STRING:
+ // '"' ( '\\' . /* ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') */ | !('\\'|'"') )* '"'? |
+ // "'" ( '\\' . /* ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') */ | !('\\'|"'") )* "'"?;
+ public TerminalRule getSTRINGRule() {
+ return gaXtype.getSTRINGRule();
+ }
+
+ //terminal ML_COMMENT: '/*' -> '*/';
+ public TerminalRule getML_COMMENTRule() {
+ return gaXtype.getML_COMMENTRule();
+ }
+
+ //terminal SL_COMMENT: '//' !('\n'|'\r')* ('\r'? '\n')?;
+ public TerminalRule getSL_COMMENTRule() {
+ return gaXtype.getSL_COMMENTRule();
+ }
+
+ //terminal WS: (' '|'\t'|'\r'|'\n')+;
+ public TerminalRule getWSRule() {
+ return gaXtype.getWSRule();
+ }
+
+ //terminal ANY_OTHER: .;
+ public TerminalRule getANY_OTHERRule() {
+ return gaXtype.getANY_OTHERRule();
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Event.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Event.java
new file mode 100644
index 000000000..ad2a6c349
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Event.java
@@ -0,0 +1,71 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Event'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.Event#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.Event#getCode Code}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getEvent()
+ * @model
+ * @generated
+ */
+public interface Event extends EObject
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getEvent_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Event#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Code' attribute.
+ *
+ *
+ * @return the value of the 'Code' attribute.
+ * @see #setCode(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getEvent_Code()
+ * @model
+ * @generated
+ */
+ String getCode();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Event#getCode Code}' attribute.
+ *
+ *
+ * @param value the new value of the 'Code' attribute.
+ * @see #getCode()
+ * @generated
+ */
+ void setCode(String value);
+
+} // Event
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
new file mode 100644
index 000000000..69d10e1df
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
@@ -0,0 +1,63 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'State'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.State#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.State#getTransitions Transitions}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getState()
+ * @model
+ * @generated
+ */
+public interface State extends EObject
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getState_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.State#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Transitions' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
+ *
+ *
+ * @return the value of the 'Transitions' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getState_Transitions()
+ * @model containment="true"
+ * @generated
+ */
+ EList getTransitions();
+
+} // State
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
new file mode 100644
index 000000000..ca52c195e
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
@@ -0,0 +1,66 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Statemachine'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getEvents Events}
+ * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getStates States}
+ * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine()
+ * @model
+ * @generated
+ */
+public interface Statemachine extends EObject
+{
+ /**
+ * Returns the value of the 'Events' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Event}.
+ *
+ *
+ * @return the value of the 'Events' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_Events()
+ * @model containment="true"
+ * @generated
+ */
+ EList getEvents();
+
+ /**
+ * Returns the value of the 'States' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.State}.
+ *
+ *
+ * @return the value of the 'States' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_States()
+ * @model containment="true"
+ * @generated
+ */
+ EList getStates();
+
+ /**
+ * Returns the value of the 'Transitions' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
+ *
+ *
+ * @return the value of the 'Transitions' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_Transitions()
+ * @model containment="true"
+ * @generated
+ */
+ EList getTransitions();
+
+} // Statemachine
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
new file mode 100644
index 000000000..7398dbb47
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
@@ -0,0 +1,71 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ *
+ * The Factory for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage
+ * @generated
+ */
+public interface StatemachineFactory extends EFactory
+{
+ /**
+ * The singleton instance of the factory.
+ *
+ *
+ * @generated
+ */
+ StatemachineFactory eINSTANCE = de.cognicrypt.order.editor.statemachine.impl.StatemachineFactoryImpl.init();
+
+ /**
+ * Returns a new object of class 'Statemachine'.
+ *
+ *
+ * @return a new object of class 'Statemachine'.
+ * @generated
+ */
+ Statemachine createStatemachine();
+
+ /**
+ * Returns a new object of class 'Event'.
+ *
+ *
+ * @return a new object of class 'Event'.
+ * @generated
+ */
+ Event createEvent();
+
+ /**
+ * Returns a new object of class 'State'.
+ *
+ *
+ * @return a new object of class 'State'.
+ * @generated
+ */
+ State createState();
+
+ /**
+ * Returns a new object of class 'Transition'.
+ *
+ *
+ * @return a new object of class 'Transition'.
+ * @generated
+ */
+ Transition createTransition();
+
+ /**
+ * Returns the package supported by this factory.
+ *
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ StatemachinePackage getStatemachinePackage();
+
+} //StatemachineFactory
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
new file mode 100644
index 000000000..97e9a8721
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
@@ -0,0 +1,550 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ *
+ * The Package for the model.
+ * It contains accessors for the meta objects to represent
+ *
+ * - each class,
+ * - each feature of each class,
+ * - each enum,
+ * - and each data type
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachineFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface StatemachinePackage extends EPackage
+{
+ /**
+ * The package name.
+ *
+ *
+ * @generated
+ */
+ String eNAME = "statemachine";
+
+ /**
+ * The package namespace URI.
+ *
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.cognicrypt.de/order/editor/Statemachine";
+
+ /**
+ * The package namespace name.
+ *
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "statemachine";
+
+ /**
+ * The singleton instance of the package.
+ *
+ *
+ * @generated
+ */
+ StatemachinePackage eINSTANCE = de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl Statemachine}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getStatemachine()
+ * @generated
+ */
+ int STATEMACHINE = 0;
+
+ /**
+ * The feature id for the 'Events' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATEMACHINE__EVENTS = 0;
+
+ /**
+ * The feature id for the 'States' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATEMACHINE__STATES = 1;
+
+ /**
+ * The feature id for the 'Transitions' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATEMACHINE__TRANSITIONS = 2;
+
+ /**
+ * The number of structural features of the 'Statemachine' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATEMACHINE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.EventImpl Event}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.EventImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getEvent()
+ * @generated
+ */
+ int EVENT = 1;
+
+ /**
+ * The feature id for the 'Name' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int EVENT__NAME = 0;
+
+ /**
+ * The feature id for the 'Code' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int EVENT__CODE = 1;
+
+ /**
+ * The number of structural features of the 'Event' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int EVENT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.StateImpl State}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.StateImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getState()
+ * @generated
+ */
+ int STATE = 2;
+
+ /**
+ * The feature id for the 'Name' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATE__NAME = 0;
+
+ /**
+ * The feature id for the 'Transitions' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATE__TRANSITIONS = 1;
+
+ /**
+ * The number of structural features of the 'State' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl Transition}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.TransitionImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getTransition()
+ * @generated
+ */
+ int TRANSITION = 3;
+
+ /**
+ * The feature id for the 'Name' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__NAME = 0;
+
+ /**
+ * The feature id for the 'From State' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__FROM_STATE = 1;
+
+ /**
+ * The feature id for the 'Event' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__EVENT = 2;
+
+ /**
+ * The feature id for the 'End State' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int TRANSITION__END_STATE = 3;
+
+ /**
+ * The number of structural features of the 'Transition' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int TRANSITION_FEATURE_COUNT = 4;
+
+
+ /**
+ * Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.Statemachine Statemachine}'.
+ *
+ *
+ * @return the meta object for class 'Statemachine'.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine
+ * @generated
+ */
+ EClass getStatemachine();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.Statemachine#getEvents Events}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'Events'.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine#getEvents()
+ * @see #getStatemachine()
+ * @generated
+ */
+ EReference getStatemachine_Events();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.Statemachine#getStates States}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'States'.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine#getStates()
+ * @see #getStatemachine()
+ * @generated
+ */
+ EReference getStatemachine_States();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'Transitions'.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions()
+ * @see #getStatemachine()
+ * @generated
+ */
+ EReference getStatemachine_Transitions();
+
+ /**
+ * Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.Event Event}'.
+ *
+ *
+ * @return the meta object for class 'Event'.
+ * @see de.cognicrypt.order.editor.statemachine.Event
+ * @generated
+ */
+ EClass getEvent();
+
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.Event#getName Name}'.
+ *
+ *
+ * @return the meta object for the attribute 'Name'.
+ * @see de.cognicrypt.order.editor.statemachine.Event#getName()
+ * @see #getEvent()
+ * @generated
+ */
+ EAttribute getEvent_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.Event#getCode Code}'.
+ *
+ *
+ * @return the meta object for the attribute 'Code'.
+ * @see de.cognicrypt.order.editor.statemachine.Event#getCode()
+ * @see #getEvent()
+ * @generated
+ */
+ EAttribute getEvent_Code();
+
+ /**
+ * Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.State State}'.
+ *
+ *
+ * @return the meta object for class 'State'.
+ * @see de.cognicrypt.order.editor.statemachine.State
+ * @generated
+ */
+ EClass getState();
+
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.State#getName Name}'.
+ *
+ *
+ * @return the meta object for the attribute 'Name'.
+ * @see de.cognicrypt.order.editor.statemachine.State#getName()
+ * @see #getState()
+ * @generated
+ */
+ EAttribute getState_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.State#getTransitions Transitions}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'Transitions'.
+ * @see de.cognicrypt.order.editor.statemachine.State#getTransitions()
+ * @see #getState()
+ * @generated
+ */
+ EReference getState_Transitions();
+
+ /**
+ * Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.Transition Transition}'.
+ *
+ *
+ * @return the meta object for class 'Transition'.
+ * @see de.cognicrypt.order.editor.statemachine.Transition
+ * @generated
+ */
+ EClass getTransition();
+
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.Transition#getName Name}'.
+ *
+ *
+ * @return the meta object for the attribute 'Name'.
+ * @see de.cognicrypt.order.editor.statemachine.Transition#getName()
+ * @see #getTransition()
+ * @generated
+ */
+ EAttribute getTransition_Name();
+
+ /**
+ * Returns the meta object for the reference '{@link de.cognicrypt.order.editor.statemachine.Transition#getFromState From State}'.
+ *
+ *
+ * @return the meta object for the reference 'From State'.
+ * @see de.cognicrypt.order.editor.statemachine.Transition#getFromState()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_FromState();
+
+ /**
+ * Returns the meta object for the reference '{@link de.cognicrypt.order.editor.statemachine.Transition#getEvent Event}'.
+ *
+ *
+ * @return the meta object for the reference 'Event'.
+ * @see de.cognicrypt.order.editor.statemachine.Transition#getEvent()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_Event();
+
+ /**
+ * Returns the meta object for the reference '{@link de.cognicrypt.order.editor.statemachine.Transition#getEndState End State}'.
+ *
+ *
+ * @return the meta object for the reference 'End State'.
+ * @see de.cognicrypt.order.editor.statemachine.Transition#getEndState()
+ * @see #getTransition()
+ * @generated
+ */
+ EReference getTransition_EndState();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ *
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ StatemachineFactory getStatemachineFactory();
+
+ /**
+ *
+ * Defines literals for the meta objects that represent
+ *
+ * - each class,
+ * - each feature of each class,
+ * - each enum,
+ * - and each data type
+ *
+ *
+ * @generated
+ */
+ interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl Statemachine}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getStatemachine()
+ * @generated
+ */
+ EClass STATEMACHINE = eINSTANCE.getStatemachine();
+
+ /**
+ * The meta object literal for the 'Events' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference STATEMACHINE__EVENTS = eINSTANCE.getStatemachine_Events();
+
+ /**
+ * The meta object literal for the 'States' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference STATEMACHINE__STATES = eINSTANCE.getStatemachine_States();
+
+ /**
+ * The meta object literal for the 'Transitions' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference STATEMACHINE__TRANSITIONS = eINSTANCE.getStatemachine_Transitions();
+
+ /**
+ * The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.EventImpl Event}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.EventImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getEvent()
+ * @generated
+ */
+ EClass EVENT = eINSTANCE.getEvent();
+
+ /**
+ * The meta object literal for the 'Name' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute EVENT__NAME = eINSTANCE.getEvent_Name();
+
+ /**
+ * The meta object literal for the 'Code' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute EVENT__CODE = eINSTANCE.getEvent_Code();
+
+ /**
+ * The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.StateImpl State}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.StateImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getState()
+ * @generated
+ */
+ EClass STATE = eINSTANCE.getState();
+
+ /**
+ * The meta object literal for the 'Name' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute STATE__NAME = eINSTANCE.getState_Name();
+
+ /**
+ * The meta object literal for the 'Transitions' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference STATE__TRANSITIONS = eINSTANCE.getState_Transitions();
+
+ /**
+ * The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl Transition}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.TransitionImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getTransition()
+ * @generated
+ */
+ EClass TRANSITION = eINSTANCE.getTransition();
+
+ /**
+ * The meta object literal for the 'Name' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute TRANSITION__NAME = eINSTANCE.getTransition_Name();
+
+ /**
+ * The meta object literal for the 'From State' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference TRANSITION__FROM_STATE = eINSTANCE.getTransition_FromState();
+
+ /**
+ * The meta object literal for the 'Event' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference TRANSITION__EVENT = eINSTANCE.getTransition_Event();
+
+ /**
+ * The meta object literal for the 'End State' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference TRANSITION__END_STATE = eINSTANCE.getTransition_EndState();
+
+ }
+
+} //StatemachinePackage
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Transition.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Transition.java
new file mode 100644
index 000000000..c6ccc021a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Transition.java
@@ -0,0 +1,117 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Transition'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.Transition#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.Transition#getFromState From State}
+ * - {@link de.cognicrypt.order.editor.statemachine.Transition#getEvent Event}
+ * - {@link de.cognicrypt.order.editor.statemachine.Transition#getEndState End State}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getTransition()
+ * @model
+ * @generated
+ */
+public interface Transition extends EObject
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getTransition_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Transition#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'From State' reference.
+ *
+ *
+ * @return the value of the 'From State' reference.
+ * @see #setFromState(State)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getTransition_FromState()
+ * @model
+ * @generated
+ */
+ State getFromState();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Transition#getFromState From State}' reference.
+ *
+ *
+ * @param value the new value of the 'From State' reference.
+ * @see #getFromState()
+ * @generated
+ */
+ void setFromState(State value);
+
+ /**
+ * Returns the value of the 'Event' reference.
+ *
+ *
+ * @return the value of the 'Event' reference.
+ * @see #setEvent(Event)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getTransition_Event()
+ * @model
+ * @generated
+ */
+ Event getEvent();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Transition#getEvent Event}' reference.
+ *
+ *
+ * @param value the new value of the 'Event' reference.
+ * @see #getEvent()
+ * @generated
+ */
+ void setEvent(Event value);
+
+ /**
+ * Returns the value of the 'End State' reference.
+ *
+ *
+ * @return the value of the 'End State' reference.
+ * @see #setEndState(State)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getTransition_EndState()
+ * @model
+ * @generated
+ */
+ State getEndState();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.Transition#getEndState End State}' reference.
+ *
+ *
+ * @param value the new value of the 'End State' reference.
+ * @see #getEndState()
+ * @generated
+ */
+ void setEndState(State value);
+
+} // Transition
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/EventImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/EventImpl.java
new file mode 100644
index 000000000..eb3b838a5
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/EventImpl.java
@@ -0,0 +1,238 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ *
+ * An implementation of the model object 'Event'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.EventImpl#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.EventImpl#getCode Code}
+ *
+ *
+ * @generated
+ */
+public class EventImpl extends MinimalEObjectImpl.Container implements Event
+{
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCode() Code}' attribute.
+ *
+ *
+ * @see #getCode()
+ * @generated
+ * @ordered
+ */
+ protected static final String CODE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCode() Code}' attribute.
+ *
+ *
+ * @see #getCode()
+ * @generated
+ * @ordered
+ */
+ protected String code = CODE_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected EventImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.EVENT;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.EVENT__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getCode()
+ {
+ return code;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setCode(String newCode)
+ {
+ String oldCode = code;
+ code = newCode;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.EVENT__CODE, oldCode, code));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.EVENT__NAME:
+ return getName();
+ case StatemachinePackage.EVENT__CODE:
+ return getCode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.EVENT__NAME:
+ setName((String)newValue);
+ return;
+ case StatemachinePackage.EVENT__CODE:
+ setCode((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.EVENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case StatemachinePackage.EVENT__CODE:
+ setCode(CODE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.EVENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case StatemachinePackage.EVENT__CODE:
+ return CODE_EDEFAULT == null ? code != null : !CODE_EDEFAULT.equals(code);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", code: ");
+ result.append(code);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EventImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
new file mode 100644
index 000000000..bf04722a2
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
@@ -0,0 +1,244 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import de.cognicrypt.order.editor.statemachine.Transition;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ *
+ * An implementation of the model object 'State'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StateImpl#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StateImpl#getTransitions Transitions}
+ *
+ *
+ * @generated
+ */
+public class StateImpl extends MinimalEObjectImpl.Container implements State
+{
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTransitions() Transitions}' containment reference list.
+ *
+ *
+ * @see #getTransitions()
+ * @generated
+ * @ordered
+ */
+ protected EList transitions;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected StateImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.STATE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getTransitions()
+ {
+ if (transitions == null)
+ {
+ transitions = new EObjectContainmentEList(Transition.class, this, StatemachinePackage.STATE__TRANSITIONS);
+ }
+ return transitions;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATE__TRANSITIONS:
+ return ((InternalEList>)getTransitions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATE__NAME:
+ return getName();
+ case StatemachinePackage.STATE__TRANSITIONS:
+ return getTransitions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATE__NAME:
+ setName((String)newValue);
+ return;
+ case StatemachinePackage.STATE__TRANSITIONS:
+ getTransitions().clear();
+ getTransitions().addAll((Collection extends Transition>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case StatemachinePackage.STATE__TRANSITIONS:
+ getTransitions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case StatemachinePackage.STATE__TRANSITIONS:
+ return transitions != null && !transitions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //StateImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
new file mode 100644
index 000000000..7cfbed492
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
@@ -0,0 +1,148 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ *
+ * An implementation of the model Factory.
+ *
+ * @generated
+ */
+public class StatemachineFactoryImpl extends EFactoryImpl implements StatemachineFactory
+{
+ /**
+ * Creates the default factory implementation.
+ *
+ *
+ * @generated
+ */
+ public static StatemachineFactory init()
+ {
+ try
+ {
+ StatemachineFactory theStatemachineFactory = (StatemachineFactory)EPackage.Registry.INSTANCE.getEFactory(StatemachinePackage.eNS_URI);
+ if (theStatemachineFactory != null)
+ {
+ return theStatemachineFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new StatemachineFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ *
+ *
+ * @generated
+ */
+ public StatemachineFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case StatemachinePackage.STATEMACHINE: return createStatemachine();
+ case StatemachinePackage.EVENT: return createEvent();
+ case StatemachinePackage.STATE: return createState();
+ case StatemachinePackage.TRANSITION: return createTransition();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Statemachine createStatemachine()
+ {
+ StatemachineImpl statemachine = new StatemachineImpl();
+ return statemachine;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Event createEvent()
+ {
+ EventImpl event = new EventImpl();
+ return event;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public State createState()
+ {
+ StateImpl state = new StateImpl();
+ return state;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Transition createTransition()
+ {
+ TransitionImpl transition = new TransitionImpl();
+ return transition;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public StatemachinePackage getStatemachinePackage()
+ {
+ return (StatemachinePackage)getEPackage();
+ }
+
+ /**
+ *
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static StatemachinePackage getPackage()
+ {
+ return StatemachinePackage.eINSTANCE;
+ }
+
+} //StatemachineFactoryImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
new file mode 100644
index 000000000..95f1bf593
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
@@ -0,0 +1,249 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.Statemachine;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import de.cognicrypt.order.editor.statemachine.Transition;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ *
+ * An implementation of the model object 'Statemachine'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getEvents Events}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getStates States}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getTransitions Transitions}
+ *
+ *
+ * @generated
+ */
+public class StatemachineImpl extends MinimalEObjectImpl.Container implements Statemachine
+{
+ /**
+ * The cached value of the '{@link #getEvents() Events}' containment reference list.
+ *
+ *
+ * @see #getEvents()
+ * @generated
+ * @ordered
+ */
+ protected EList events;
+
+ /**
+ * The cached value of the '{@link #getStates() States}' containment reference list.
+ *
+ *
+ * @see #getStates()
+ * @generated
+ * @ordered
+ */
+ protected EList states;
+
+ /**
+ * The cached value of the '{@link #getTransitions() Transitions}' containment reference list.
+ *
+ *
+ * @see #getTransitions()
+ * @generated
+ * @ordered
+ */
+ protected EList transitions;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected StatemachineImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.STATEMACHINE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getEvents()
+ {
+ if (events == null)
+ {
+ events = new EObjectContainmentEList(Event.class, this, StatemachinePackage.STATEMACHINE__EVENTS);
+ }
+ return events;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getStates()
+ {
+ if (states == null)
+ {
+ states = new EObjectContainmentEList(State.class, this, StatemachinePackage.STATEMACHINE__STATES);
+ }
+ return states;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getTransitions()
+ {
+ if (transitions == null)
+ {
+ transitions = new EObjectContainmentEList(Transition.class, this, StatemachinePackage.STATEMACHINE__TRANSITIONS);
+ }
+ return transitions;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATEMACHINE__EVENTS:
+ return ((InternalEList>)getEvents()).basicRemove(otherEnd, msgs);
+ case StatemachinePackage.STATEMACHINE__STATES:
+ return ((InternalEList>)getStates()).basicRemove(otherEnd, msgs);
+ case StatemachinePackage.STATEMACHINE__TRANSITIONS:
+ return ((InternalEList>)getTransitions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATEMACHINE__EVENTS:
+ return getEvents();
+ case StatemachinePackage.STATEMACHINE__STATES:
+ return getStates();
+ case StatemachinePackage.STATEMACHINE__TRANSITIONS:
+ return getTransitions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATEMACHINE__EVENTS:
+ getEvents().clear();
+ getEvents().addAll((Collection extends Event>)newValue);
+ return;
+ case StatemachinePackage.STATEMACHINE__STATES:
+ getStates().clear();
+ getStates().addAll((Collection extends State>)newValue);
+ return;
+ case StatemachinePackage.STATEMACHINE__TRANSITIONS:
+ getTransitions().clear();
+ getTransitions().addAll((Collection extends Transition>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATEMACHINE__EVENTS:
+ getEvents().clear();
+ return;
+ case StatemachinePackage.STATEMACHINE__STATES:
+ getStates().clear();
+ return;
+ case StatemachinePackage.STATEMACHINE__TRANSITIONS:
+ getTransitions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.STATEMACHINE__EVENTS:
+ return events != null && !events.isEmpty();
+ case StatemachinePackage.STATEMACHINE__STATES:
+ return states != null && !states.isEmpty();
+ case StatemachinePackage.STATEMACHINE__TRANSITIONS:
+ return transitions != null && !transitions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StatemachineImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
new file mode 100644
index 000000000..6c70815e9
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
@@ -0,0 +1,389 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.Statemachine;
+import de.cognicrypt.order.editor.statemachine.StatemachineFactory;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import de.cognicrypt.order.editor.statemachine.Transition;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ *
+ * An implementation of the model Package.
+ *
+ * @generated
+ */
+public class StatemachinePackageImpl extends EPackageImpl implements StatemachinePackage
+{
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass statemachineEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass eventEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass stateEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass transitionEClass = null;
+
+ /**
+ * Creates an instance of the model Package, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ *
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private StatemachinePackageImpl()
+ {
+ super(eNS_URI, StatemachineFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
This method is used to initialize {@link StatemachinePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static StatemachinePackage init()
+ {
+ if (isInited) return (StatemachinePackage)EPackage.Registry.INSTANCE.getEPackage(StatemachinePackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredStatemachinePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ StatemachinePackageImpl theStatemachinePackage = registeredStatemachinePackage instanceof StatemachinePackageImpl ? (StatemachinePackageImpl)registeredStatemachinePackage : new StatemachinePackageImpl();
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theStatemachinePackage.createPackageContents();
+
+ // Initialize created meta-data
+ theStatemachinePackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theStatemachinePackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(StatemachinePackage.eNS_URI, theStatemachinePackage);
+ return theStatemachinePackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getStatemachine()
+ {
+ return statemachineEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStatemachine_Events()
+ {
+ return (EReference)statemachineEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStatemachine_States()
+ {
+ return (EReference)statemachineEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStatemachine_Transitions()
+ {
+ return (EReference)statemachineEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getEvent()
+ {
+ return eventEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getEvent_Name()
+ {
+ return (EAttribute)eventEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getEvent_Code()
+ {
+ return (EAttribute)eventEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getState()
+ {
+ return stateEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getState_Name()
+ {
+ return (EAttribute)stateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getState_Transitions()
+ {
+ return (EReference)stateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getTransition()
+ {
+ return transitionEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getTransition_Name()
+ {
+ return (EAttribute)transitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTransition_FromState()
+ {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTransition_Event()
+ {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTransition_EndState()
+ {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public StatemachineFactory getStatemachineFactory()
+ {
+ return (StatemachineFactory)getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ statemachineEClass = createEClass(STATEMACHINE);
+ createEReference(statemachineEClass, STATEMACHINE__EVENTS);
+ createEReference(statemachineEClass, STATEMACHINE__STATES);
+ createEReference(statemachineEClass, STATEMACHINE__TRANSITIONS);
+
+ eventEClass = createEClass(EVENT);
+ createEAttribute(eventEClass, EVENT__NAME);
+ createEAttribute(eventEClass, EVENT__CODE);
+
+ stateEClass = createEClass(STATE);
+ createEAttribute(stateEClass, STATE__NAME);
+ createEReference(stateEClass, STATE__TRANSITIONS);
+
+ transitionEClass = createEClass(TRANSITION);
+ createEAttribute(transitionEClass, TRANSITION__NAME);
+ createEReference(transitionEClass, TRANSITION__FROM_STATE);
+ createEReference(transitionEClass, TRANSITION__EVENT);
+ createEReference(transitionEClass, TRANSITION__END_STATE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(statemachineEClass, Statemachine.class, "Statemachine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStatemachine_Events(), this.getEvent(), null, "events", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStatemachine_States(), this.getState(), null, "states", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStatemachine_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getEvent_Name(), ecorePackage.getEString(), "name", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEvent_Code(), ecorePackage.getEString(), "code", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getState_Name(), ecorePackage.getEString(), "name", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getState_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTransition_Name(), ecorePackage.getEString(), "name", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_FromState(), this.getState(), null, "fromState", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_Event(), this.getEvent(), null, "event", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTransition_EndState(), this.getState(), null, "endState", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //StatemachinePackageImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/TransitionImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/TransitionImpl.java
new file mode 100644
index 000000000..5603b1e8a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/TransitionImpl.java
@@ -0,0 +1,384 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+import de.cognicrypt.order.editor.statemachine.Transition;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ *
+ * An implementation of the model object 'Transition'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl#getFromState From State}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl#getEvent Event}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl#getEndState End State}
+ *
+ *
+ * @generated
+ */
+public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition
+{
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFromState() From State}' reference.
+ *
+ *
+ * @see #getFromState()
+ * @generated
+ * @ordered
+ */
+ protected State fromState;
+
+ /**
+ * The cached value of the '{@link #getEvent() Event}' reference.
+ *
+ *
+ * @see #getEvent()
+ * @generated
+ * @ordered
+ */
+ protected Event event;
+
+ /**
+ * The cached value of the '{@link #getEndState() End State}' reference.
+ *
+ *
+ * @see #getEndState()
+ * @generated
+ * @ordered
+ */
+ protected State endState;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TransitionImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.TRANSITION;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public State getFromState()
+ {
+ if (fromState != null && fromState.eIsProxy())
+ {
+ InternalEObject oldFromState = (InternalEObject)fromState;
+ fromState = (State)eResolveProxy(oldFromState);
+ if (fromState != oldFromState)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachinePackage.TRANSITION__FROM_STATE, oldFromState, fromState));
+ }
+ }
+ return fromState;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public State basicGetFromState()
+ {
+ return fromState;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setFromState(State newFromState)
+ {
+ State oldFromState = fromState;
+ fromState = newFromState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__FROM_STATE, oldFromState, fromState));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Event getEvent()
+ {
+ if (event != null && event.eIsProxy())
+ {
+ InternalEObject oldEvent = (InternalEObject)event;
+ event = (Event)eResolveProxy(oldEvent);
+ if (event != oldEvent)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachinePackage.TRANSITION__EVENT, oldEvent, event));
+ }
+ }
+ return event;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Event basicGetEvent()
+ {
+ return event;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEvent(Event newEvent)
+ {
+ Event oldEvent = event;
+ event = newEvent;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__EVENT, oldEvent, event));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public State getEndState()
+ {
+ if (endState != null && endState.eIsProxy())
+ {
+ InternalEObject oldEndState = (InternalEObject)endState;
+ endState = (State)eResolveProxy(oldEndState);
+ if (endState != oldEndState)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachinePackage.TRANSITION__END_STATE, oldEndState, endState));
+ }
+ }
+ return endState;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public State basicGetEndState()
+ {
+ return endState;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEndState(State newEndState)
+ {
+ State oldEndState = endState;
+ endState = newEndState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__END_STATE, oldEndState, endState));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.TRANSITION__NAME:
+ return getName();
+ case StatemachinePackage.TRANSITION__FROM_STATE:
+ if (resolve) return getFromState();
+ return basicGetFromState();
+ case StatemachinePackage.TRANSITION__EVENT:
+ if (resolve) return getEvent();
+ return basicGetEvent();
+ case StatemachinePackage.TRANSITION__END_STATE:
+ if (resolve) return getEndState();
+ return basicGetEndState();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.TRANSITION__NAME:
+ setName((String)newValue);
+ return;
+ case StatemachinePackage.TRANSITION__FROM_STATE:
+ setFromState((State)newValue);
+ return;
+ case StatemachinePackage.TRANSITION__EVENT:
+ setEvent((Event)newValue);
+ return;
+ case StatemachinePackage.TRANSITION__END_STATE:
+ setEndState((State)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.TRANSITION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case StatemachinePackage.TRANSITION__FROM_STATE:
+ setFromState((State)null);
+ return;
+ case StatemachinePackage.TRANSITION__EVENT:
+ setEvent((Event)null);
+ return;
+ case StatemachinePackage.TRANSITION__END_STATE:
+ setEndState((State)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.TRANSITION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case StatemachinePackage.TRANSITION__FROM_STATE:
+ return fromState != null;
+ case StatemachinePackage.TRANSITION__EVENT:
+ return event != null;
+ case StatemachinePackage.TRANSITION__END_STATE:
+ return endState != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TransitionImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
new file mode 100644
index 000000000..819905b71
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
@@ -0,0 +1,193 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.util;
+
+import de.cognicrypt.order.editor.statemachine.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * The Adapter Factory for the model.
+ * It provides an adapter createXXX method for each class of the model.
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage
+ * @generated
+ */
+public class StatemachineAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ *
+ *
+ * @generated
+ */
+ protected static StatemachinePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ *
+ *
+ * @generated
+ */
+ public StatemachineAdapterFactory()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = StatemachinePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ *
+ * This implementation returns true if the object is either the model's package or is an instance object of the model.
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object)
+ {
+ if (object == modelPackage)
+ {
+ return true;
+ }
+ if (object instanceof EObject)
+ {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the createXXX methods.
+ *
+ *
+ * @generated
+ */
+ protected StatemachineSwitch modelSwitch =
+ new StatemachineSwitch()
+ {
+ @Override
+ public Adapter caseStatemachine(Statemachine object)
+ {
+ return createStatemachineAdapter();
+ }
+ @Override
+ public Adapter caseEvent(Event object)
+ {
+ return createEventAdapter();
+ }
+ @Override
+ public Adapter caseState(State object)
+ {
+ return createStateAdapter();
+ }
+ @Override
+ public Adapter caseTransition(Transition object)
+ {
+ return createTransitionAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object)
+ {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the target.
+ *
+ *
+ * @param target the object to adapt.
+ * @return the adapter for the target.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target)
+ {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.Statemachine Statemachine}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine
+ * @generated
+ */
+ public Adapter createStatemachineAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.Event Event}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see de.cognicrypt.order.editor.statemachine.Event
+ * @generated
+ */
+ public Adapter createEventAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.State State}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see de.cognicrypt.order.editor.statemachine.State
+ * @generated
+ */
+ public Adapter createStateAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.Transition Transition}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see de.cognicrypt.order.editor.statemachine.Transition
+ * @generated
+ */
+ public Adapter createTransitionAdapter()
+ {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ *
+ * This default implementation returns null.
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter()
+ {
+ return null;
+ }
+
+} //StatemachineAdapterFactory
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
new file mode 100644
index 000000000..8b8f75357
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
@@ -0,0 +1,189 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.util;
+
+import de.cognicrypt.order.editor.statemachine.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ *
+ * The Switch for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the caseXXX method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage
+ * @generated
+ */
+public class StatemachineSwitch extends Switch
+{
+ /**
+ * The cached model package
+ *
+ *
+ * @generated
+ */
+ protected static StatemachinePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ *
+ *
+ * @generated
+ */
+ public StatemachineSwitch()
+ {
+ if (modelPackage == null)
+ {
+ modelPackage = StatemachinePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ *
+ *
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage)
+ {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls caseXXX for each class of the model until one returns a non null result; it yields that result.
+ *
+ *
+ * @return the first non-null result returned by a caseXXX call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject)
+ {
+ switch (classifierID)
+ {
+ case StatemachinePackage.STATEMACHINE:
+ {
+ Statemachine statemachine = (Statemachine)theEObject;
+ T result = caseStatemachine(statemachine);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StatemachinePackage.EVENT:
+ {
+ Event event = (Event)theEObject;
+ T result = caseEvent(event);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StatemachinePackage.STATE:
+ {
+ State state = (State)theEObject;
+ T result = caseState(state);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StatemachinePackage.TRANSITION:
+ {
+ Transition transition = (Transition)theEObject;
+ T result = caseTransition(transition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Statemachine'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Statemachine'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStatemachine(Statemachine object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Event'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Event'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEvent(Event object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'State'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'State'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseState(State object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Transition'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Transition'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransition(Transition object)
+ {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'EObject'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'EObject'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object)
+ {
+ return null;
+ }
+
+} //StatemachineSwitch
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/AbstractStatemachineValidator.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/AbstractStatemachineValidator.java
new file mode 100644
index 000000000..53adaaf07
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/AbstractStatemachineValidator.java
@@ -0,0 +1,21 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.xbase.validation.XtypeValidator;
+
+public abstract class AbstractStatemachineValidator extends XtypeValidator {
+
+ @Override
+ protected List getEPackages() {
+ List result = new ArrayList(super.getEPackages());
+ result.add(de.cognicrypt.order.editor.statemachine.StatemachinePackage.eINSTANCE);
+ result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
+ result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
+ return result;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/StatemachineConfigurableIssueCodesProvider.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/StatemachineConfigurableIssueCodesProvider.java
new file mode 100644
index 000000000..bc9f3a571
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/validation/StatemachineConfigurableIssueCodesProvider.java
@@ -0,0 +1,22 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.validation;
+
+import org.eclipse.xtext.preferences.PreferenceKey;
+import org.eclipse.xtext.util.IAcceptor;
+import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider;
+import org.eclipse.xtext.validation.SeverityConverter;
+
+@SuppressWarnings("restriction")
+public class StatemachineConfigurableIssueCodesProvider extends ConfigurableIssueCodesProvider {
+ protected static final String ISSUE_CODE_PREFIX = "de.cognicrypt.order.editor.";
+
+ public static final String DEPRECATED_MODEL_PART = ISSUE_CODE_PREFIX + "deprecatedModelPart";
+
+ @Override
+ protected void initialize(IAcceptor acceptor) {
+ super.initialize(acceptor);
+ acceptor.accept(create(DEPRECATED_MODEL_PART, SeverityConverter.SEVERITY_WARNING));
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Activator.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Activator.java
new file mode 100644
index 000000000..dd8e056e9
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Activator.java
@@ -0,0 +1,75 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+package de.cognicrypt.order.editor;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "de.cognicrypt.order.editor"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {}
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ private void log(final int severity, final String message, final Exception ex) {
+ getLog().log(new Status(severity, Activator.PLUGIN_ID, message, ex));
+ }
+
+ public void logError(final Exception ex) {
+ logError(ex, ex.getMessage());
+ }
+
+ public void logError(final Exception ex, final String message) {
+ log(IStatus.ERROR, message, ex);
+ }
+
+ public void logError(final String message) {
+ log(IStatus.ERROR, message, null);
+ }
+
+ public void logInfo(final String message) {
+ log(IStatus.INFO, message, null);
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Constants.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Constants.java
new file mode 100644
index 000000000..c83fabe4a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Constants.java
@@ -0,0 +1,30 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+
+ * http://www.eclipse.org/legal/epl-2.0. SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+package de.cognicrypt.order.editor;
+
+/**
+ * This class comprises all constants that are used by the plugin.
+ */
+public class Constants {
+
+ public static final String innerFileSeparator = "/";
+ //public static final String rsrcPath = "src" + innerFileSeparator + "main" + innerFileSeparator + "resources" + innerFileSeparator;
+
+ public final static String RELATIVE_STATEMACHINE_CONFIG_DIR = "config" + innerFileSeparator;
+ public final static String RELATIVE_STATEMACHINE_MODELS_DIR = "output" + innerFileSeparator;
+
+ public static final String STATEMACHINE_EXTENSION = ".statemachine";
+ public static final String XML_EXTENSION = ".xml";
+
+ public final static String RELATIVE_JCA_FOLDER = innerFileSeparator + "git" + innerFileSeparator + "Crypto-API-Rules" + innerFileSeparator + "JavaCryptographicArchitecture" + innerFileSeparator + "src";
+ public final static String RELATIVE_BC_FOLDER = innerFileSeparator + "git" + innerFileSeparator + "Crypto-API-Rules" + innerFileSeparator + "BouncyCastle" + innerFileSeparator + "src";
+ public final static String RELATIVE_BC_JCA_FOLDER = innerFileSeparator + "git" + innerFileSeparator + "Crypto-API-Rules" + innerFileSeparator + "BouncyCastle-JCA" + innerFileSeparator + "src";
+ public final static String RELATIVE_TINK_FOLDER = innerFileSeparator + "git" + innerFileSeparator + "Crypto-API-Rules" + innerFileSeparator + "Tink" + innerFileSeparator + "src";
+
+ public static final String ERROR_MESSAGE_NO_FILE = "No file found";
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2 b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
new file mode 100644
index 000000000..a1d1f66c5
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
@@ -0,0 +1,60 @@
+module de.cognicrypt.order.editor.GenerateStatemachine
+
+import org.eclipse.xtext.xtext.generator.*
+import org.eclipse.xtext.xtext.generator.model.project.*
+
+var rootPath = ".."
+
+Workflow {
+
+ component = XtextGenerator {
+ configuration = {
+ project = StandardProjectConfig {
+ baseName = "de.cognicrypt.order.editor"
+ rootPath = rootPath
+ runtimeTest = {
+ enabled = true
+ }
+ eclipsePlugin = {
+ enabled = true
+ }
+ eclipsePluginTest = {
+ enabled = true
+ }
+ createEclipseMetaData = true
+ }
+ code = {
+ encoding = "windows-1252"
+ lineDelimiter = "\r\n"
+ fileHeader = "/*\n * generated by Xtext \${version}\n */"
+ preferXtendStubs = false
+ }
+ }
+ language = StandardLanguage {
+ name = "de.cognicrypt.order.editor.Statemachine"
+ fileExtensions = "statemachine"
+ scopeProvider = {
+ generateXtendStub = false
+ }
+
+ serializer = {
+ generateStub = false
+ }
+ validator = {
+ // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+ // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage
+ generateDeprecationValidation = true
+ }
+ generator = {
+ generateXtendStub = true
+ generateJavaMain = true
+ }
+ fileWizard = {
+ generate = true
+ }
+ junitSupport = {
+ junitVersion = "5"
+ }
+ }
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
new file mode 100644
index 000000000..600f4f0da
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
@@ -0,0 +1,29 @@
+grammar de.cognicrypt.order.editor.Statemachine with org.eclipse.xtext.xbase.Xtype // with org.eclipse.xtext.common.Terminals
+
+generate statemachine "http://www.cognicrypt.de/order/editor/Statemachine"
+
+Statemachine :
+ {Statemachine}
+ ('events'
+ events+=Event+
+ 'end')?
+ states+=State*
+ transitions+=Transition*
+;
+
+Event:
+ name=ID code=ID
+;
+
+State:
+ 'state' name=ID
+ transitions+=Transition*
+ 'end'
+;
+
+Transition:
+ 'transition' name=ID
+ fromState=[State] ',' event=[Event] ',' endState=[State]
+ 'end'
+;
+
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineRuntimeModule.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineRuntimeModule.java
new file mode 100644
index 000000000..353dbb68a
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineRuntimeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor;
+
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class StatemachineRuntimeModule extends AbstractStatemachineRuntimeModule {
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineStandaloneSetup.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineStandaloneSetup.java
new file mode 100644
index 000000000..523319819
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/StatemachineStandaloneSetup.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor;
+
+
+/**
+ * Initialization support for running Xtext languages without Equinox extension registry.
+ */
+public class StatemachineStandaloneSetup extends StatemachineStandaloneSetupGenerated {
+
+ public static void doSetup() {
+ new StatemachineStandaloneSetup().createInjectorAndDoEMFRegistration();
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/actions/RunOrderEditorHandler.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/actions/RunOrderEditorHandler.java
new file mode 100644
index 000000000..9380dfd97
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/actions/RunOrderEditorHandler.java
@@ -0,0 +1,32 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+package de.cognicrypt.order.editor.actions;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.ui.PlatformUI;
+
+import de.cognicrypt.core.Constants;
+import de.cognicrypt.order.editor.wizard.OrderEditorWizard;
+import de.cognicrypt.order.editor.wizard.OrderEditorWizardDialog;
+
+public class RunOrderEditorHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Constants.WizardActionFromContextMenuFlag = true;
+ final OrderEditorWizardDialog dialog = new OrderEditorWizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), new OrderEditorWizard());
+ dialog.setHelpAvailable(false);
+ return dialog.open();
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/CryslFile.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/CryslFile.java
new file mode 100644
index 000000000..c07dcb4ed
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/CryslFile.java
@@ -0,0 +1,27 @@
+package de.cognicrypt.order.editor.config;
+
+public class CryslFile { //represents a CryslFile object from config.xml
+
+ private String rule;
+ private String path;
+
+ public String getRule() {
+ return rule;
+ }
+
+ public String getRuleName() {
+ return rule.substring(0, rule.length()-6);
+ }
+
+ public void setRule(String rule) {
+ this.rule = rule;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxParser.java
new file mode 100644
index 000000000..c647058c7
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxParser.java
@@ -0,0 +1,70 @@
+package de.cognicrypt.order.editor.config;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.EndElement;
+import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
+
+
+import de.cognicrypt.order.editor.parser.StatemachineParser;
+
+
+public class StaxParser {
+
+ static final String CRYSLFILE = "cryslFile";
+ static final String RULE = "rule";
+ static final String PATH = "path";
+
+ @SuppressWarnings({ "unchecked", "null" })
+ public List readConfig(String configFile) {
+ List cryslFileList = new ArrayList();
+ try {
+ XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ InputStream in = new FileInputStream(configFile);
+ XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
+ CryslFile cryslFile = null;
+
+ while (eventReader.hasNext()) {
+ XMLEvent event = eventReader.nextEvent();
+
+ if (event.isStartElement()) {
+ StartElement startElement = event.asStartElement();
+ String elementName = startElement.getName().getLocalPart();
+ switch (elementName) {
+ case CRYSLFILE:
+ cryslFile = new CryslFile();
+ break;
+ case RULE:
+ event = eventReader.nextEvent();
+ cryslFile.setRule(event.asCharacters().getData());
+ break;
+ case PATH:
+ event = eventReader.nextEvent();
+ cryslFile.setPath(event.asCharacters().getData());
+ break;
+ }
+ }
+ if (event.isEndElement()) {
+ EndElement endElement = event.asEndElement();
+ if (endElement.getName().getLocalPart().equals(CRYSLFILE)) {
+ cryslFileList.add(cryslFile);
+ }
+ }
+
+ }
+ } catch (FileNotFoundException | XMLStreamException e) {
+ e.printStackTrace();
+ }
+ StatemachineParser.generate(cryslFileList);
+ return cryslFileList;
+ }
+}
+
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxWriter.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxWriter.java
new file mode 100644
index 000000000..4b04aeb43
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/config/StaxWriter.java
@@ -0,0 +1,178 @@
+package de.cognicrypt.order.editor.config;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Arrays;
+import java.util.Enumeration;
+
+import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.XMLEventWriter;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.Characters;
+import javax.xml.stream.events.EndElement;
+import javax.xml.stream.events.StartDocument;
+import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Bundle;
+
+import de.cognicrypt.order.editor.Activator;
+import de.cognicrypt.order.editor.Constants;
+import de.cognicrypt.utils.Utils;
+
+public class StaxWriter {
+ private File f;
+
+ public void setFile(String configFile) {
+
+ final Bundle bundle = Platform.getBundle(de.cognicrypt.order.editor.Activator.PLUGIN_ID);
+
+ URL entry = null;
+ URL resolvedURL = null;
+ if (bundle == null) {
+ }
+ else {
+ entry = bundle.getEntry(Constants.RELATIVE_STATEMACHINE_CONFIG_DIR);
+ }
+ if (entry == null) {
+ }
+ try {
+ resolvedURL = FileLocator.toFileURL(entry);
+ } catch (IOException e8) {
+ e8.printStackTrace();
+ }
+ java.net.URI resolvedURI = null;
+ if (!(resolvedURL == null)) {
+ try {
+ resolvedURI = new java.net.URI(resolvedURL.getProtocol(), resolvedURL.getPath(), null);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }finally {
+
+ }}
+ else {
+ try {
+ resolvedURI = FileLocator.resolve(entry).toURI();
+ } catch (URISyntaxException e1) {
+ e1.printStackTrace();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+
+ java.net.URI fileUri = null;
+
+ try {
+ fileUri = new java.net.URI(resolvedURI + configFile);
+ } catch (URISyntaxException e8) {
+ e8.printStackTrace();
+ }
+
+ File file = new File(fileUri);
+
+ if(!file.exists()) {
+ try {
+ file.createNewFile();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ f = file;
+ }
+
+ public void saveConfig() throws Exception {
+
+ File folderJCA = new File(System.getProperty("user.home") + Constants.RELATIVE_JCA_FOLDER);
+ File folderBC = new File(System.getProperty("user.home") + Constants.RELATIVE_BC_FOLDER);
+ File folderBCJCA = new File(System.getProperty("user.home") + Constants.RELATIVE_BC_JCA_FOLDER);
+ File folderTink = new File(System.getProperty("user.home") + Constants.RELATIVE_TINK_FOLDER);
+
+ File[] listOfFilesJCA = folderJCA.listFiles();
+ File[] listOfFilesBC = folderBC.listFiles();
+ File[] listOfFilesBCJCA = folderBCJCA.listFiles();
+ File[] listOfFilesTink = folderTink.listFiles();
+ File[] all = concatAll(listOfFilesJCA, listOfFilesBC, listOfFilesBCJCA, listOfFilesTink);
+
+ XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+ XMLEventWriter eventWriter = outputFactory
+ .createXMLEventWriter(new FileOutputStream(f));
+ XMLEventFactory eventFactory = XMLEventFactory.newInstance();
+ XMLEvent end = eventFactory.createDTD("\n");
+
+ StartDocument startDocument = eventFactory.createStartDocument();
+ eventWriter.add(startDocument);
+
+ eventWriter.add(eventFactory.createStartElement("",
+ "", "folders"));
+
+ for (int i = 0; i < all.length; i++) {
+ if (all[i].isFile()) {
+ if(all[i].getName().contains("crysl")) {
+
+ StartElement folderStartElement = eventFactory.createStartElement("",
+ "", "cryslFile");
+ eventWriter.add(folderStartElement);
+ createNode(eventWriter, "rule", all[i].getName());
+ createNode(eventWriter, "path", all[i].getAbsolutePath());
+ eventWriter.add(eventFactory.createEndElement("", "", "cryslFile"));
+ eventWriter.add(end);
+ }
+ }
+ }
+
+ eventWriter.add(end);
+
+ eventWriter.add(eventFactory.createEndElement("", "", "folders"));
+ eventWriter.add(end);
+
+ eventWriter.add(eventFactory.createEndDocument());
+ eventWriter.close();
+ }
+
+ private void createNode(XMLEventWriter eventWriter, String name,
+ String value) throws XMLStreamException {
+
+ XMLEventFactory eventFactory = XMLEventFactory.newInstance();
+ XMLEvent end = eventFactory.createDTD("\n");
+ XMLEvent tab = eventFactory.createDTD("\t");
+
+ StartElement sElement = eventFactory.createStartElement("", "", name);
+ eventWriter.add(tab);
+ eventWriter.add(sElement);
+
+ Characters characters = eventFactory.createCharacters(value);
+ eventWriter.add(characters);
+
+ EndElement eElement = eventFactory.createEndElement("", "", name);
+ eventWriter.add(eElement);
+ eventWriter.add(end);
+ }
+
+ public static T[] concatAll(T[] head, T[]... tail) {
+ int totalLength = head.length;
+ for (T[] array : tail) {
+ totalLength += array.length;
+ }
+ T[] result = Arrays.copyOf(head, totalLength);
+ int offset = head.length;
+ for (T[] array : tail) {
+ System.arraycopy(array, 0, result, offset, array.length);
+ offset += array.length;
+ }
+ return result;
+ }
+
+ public File getFile() {
+ return f;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/Main.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/Main.java
new file mode 100644
index 000000000..16df1ba4d
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/Main.java
@@ -0,0 +1,68 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.generator;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Provider;
+import de.cognicrypt.order.editor.StatemachineStandaloneSetup;
+import java.util.List;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.generator.GeneratorContext;
+import org.eclipse.xtext.generator.GeneratorDelegate;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.util.CancelIndicator;
+import org.eclipse.xtext.validation.CheckMode;
+import org.eclipse.xtext.validation.IResourceValidator;
+import org.eclipse.xtext.validation.Issue;
+
+public class Main {
+
+ public static void main(String[] args) {
+ if (args.length == 0) {
+ System.err.println("Aborting: no path to EMF resource provided!");
+ return;
+ }
+ Injector injector = new StatemachineStandaloneSetup().createInjectorAndDoEMFRegistration();
+ Main main = injector.getInstance(Main.class);
+ main.runGenerator(args[0]);
+ }
+
+ @Inject
+ private Provider resourceSetProvider;
+
+ @Inject
+ private IResourceValidator validator;
+
+ @Inject
+ private GeneratorDelegate generator;
+
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ protected void runGenerator(String string) {
+ // Load the resource
+ ResourceSet set = resourceSetProvider.get();
+ Resource resource = set.getResource(URI.createFileURI(string), true);
+
+ // Validate the resource
+ List list = validator.validate(resource, CheckMode.ALL, CancelIndicator.NullImpl);
+ if (!list.isEmpty()) {
+ for (Issue issue : list) {
+ System.err.println(issue);
+ }
+ return;
+ }
+
+ // Configure and start the generator
+ fileAccess.setOutputPath("src-gen/");
+ GeneratorContext context = new GeneratorContext();
+ context.setCancelIndicator(CancelIndicator.NullImpl);
+ generator.generate(resource, fileAccess, context);
+
+ System.out.println("Code generation finished.");
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/StatemachineGenerator.xtend b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/StatemachineGenerator.xtend
new file mode 100644
index 000000000..e621c60de
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/generator/StatemachineGenerator.xtend
@@ -0,0 +1,25 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.generator
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.AbstractGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess2
+import org.eclipse.xtext.generator.IGeneratorContext
+
+/**
+ * Generates code from your model files on save.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
+ */
+class StatemachineGenerator extends AbstractGenerator {
+
+ override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
+// fsa.generateFile('greetings.txt', 'People to greet: ' +
+// resource.allContents
+// .filter(Greeting)
+// .map[name]
+// .join(', '))
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
new file mode 100644
index 000000000..27452bad4
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
@@ -0,0 +1,251 @@
+package de.cognicrypt.order.editor.parser;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.resource.URIHandler;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider;
+import org.eclipse.xtext.resource.SaveOptions;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import de.cognicrypt.order.editor.Activator;
+import de.cognicrypt.order.editor.Constants;
+import de.cognicrypt.order.editor.config.CryslFile;
+import de.darmstadt.tu.crossing.CrySLStandaloneSetup;
+import de.darmstadt.tu.crossing.StatemachineStandaloneSetup;
+import de.darmstadt.tu.crossing.crySL.Domainmodel;
+import de.darmstadt.tu.crossing.crySL.Expression;
+import de.darmstadt.tu.crossing.crySL.SuperType;
+import de.darmstadt.tu.crossing.statemachine.StateMachineGraph;
+import de.darmstadt.tu.crossing.statemachine.StateMachineGraphBuilder;
+import de.darmstadt.tu.crossing.statemachine.StateNode;
+import de.darmstadt.tu.crossing.statemachine.Statemachine;
+import de.darmstadt.tu.crossing.statemachine.StatemachineFactory;
+import de.darmstadt.tu.crossing.statemachine.StatemachinePackage;
+import de.darmstadt.tu.crossing.statemachine.TransitionEdge;
+
+public class StatemachineParser {
+
+ public static void generate(List cryslFileList) {
+ HashMap selfs = new HashMap();
+ for(CryslFile f : cryslFileList) {
+
+ try {
+ EObject self = provideCrySLEObject(f.getPath());
+ generateStatemachineXtextResource(self, f.getRuleName());
+ } catch (MalformedURLException e2) {
+ e2.printStackTrace();
+ }
+ }
+ }
+
+ public static void generateStatemachineXtextResource(EObject self, String ruleName) {
+ final Domainmodel dm = (Domainmodel) self;
+ Expression order = dm.getOrder();
+
+ StateMachineGraph smgb = new StateMachineGraphBuilder(order).buildSMG();
+ Set stateNodes = smgb.getNodes();
+ java.util.List transitionEdges = smgb.getEdges();
+ java.util.List myTransitionEvents = new ArrayList(); // only for labels as they do not provide info what is source and target
+
+ for(TransitionEdge e : transitionEdges) {
+ myTransitionEvents.add(e.getLabel());
+ }
+
+ StatemachineStandaloneSetup.doSetup();
+
+ StatemachineStandaloneSetup stmStandaloneSetup = new StatemachineStandaloneSetup();
+ final Injector injector = stmStandaloneSetup.createInjectorAndDoEMFRegistration();
+ stmStandaloneSetup.register(injector);
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ StatemachinePackage.eINSTANCE.eClass();
+
+ String path = Activator.PLUGIN_ID + "/output/" + ruleName + Constants.STATEMACHINE_EXTENSION;
+ Resource resource = createAndAddXtextResourcePlatformPluginURI(path, resourceSet);
+
+ resourceSet.getResources().add(resource);
+
+ Statemachine statemachine = StatemachineFactory.eINSTANCE.createStatemachine();
+
+ de.darmstadt.tu.crossing.statemachine.State state = null;
+ de.darmstadt.tu.crossing.statemachine.Event event = null;
+ de.darmstadt.tu.crossing.statemachine.Transition transition = null;
+ HashMap stateNodeMap = new HashMap();
+
+ SuperType ev = null;
+ int counter = 0;
+
+ //process stateNodes separately, still unsorted
+ for(StateNode s: stateNodes) {
+ state = StatemachineFactory.eINSTANCE.createState();
+ state.setName("s" + s.getName());
+ statemachine.getStates().add(state);
+ counter++;
+ stateNodeMap.put(s, state);
+ }
+
+ //process transition edges for states and transitions
+ for(int i = 0; i < transitionEdges.size(); i++) {
+ if(transitionEdges.get(i).getLabel() instanceof SuperType) {
+ ev = (SuperType) transitionEdges.get(i).getLabel();
+ event = StatemachineFactory.eINSTANCE.createEvent();
+ // check for duplicate events to avoid same naming for different edges (causes serialization error)
+ if(sameEvent(transitionEdges, transitionEdges.get(i))) {
+ event.setName(((SuperType) ev).getName() + i);
+ event.setCode(((SuperType) ev).getName() + i);
+ }
+ else {
+ event.setName(((SuperType) ev).getName());
+ event.setCode(((SuperType) ev).getName());
+ }
+ statemachine.getEvents().add(event);
+ }
+
+ transition = StatemachineFactory.eINSTANCE.createTransition();
+
+ transition.setName("t" + i);
+ transition.setEvent(event);
+ transition.setFromState(stateNodeMap.get(transitionEdges.get(i).from()));
+ transition.setEndState(stateNodeMap.get(transitionEdges.get(i).to()));
+ transition.getFromState().getTransitions().add(transition);
+ statemachine.getTransitions().add(transition);
+ }
+
+ resource.getContents().add(statemachine);
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+ try {
+ resource.save(outputStream, SaveOptions.newBuilder().format().getOptions().toOptionsMap());
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ // store in file
+ java.net.URI resolvedURI = null;
+
+ try {
+ final Bundle bundle = Platform.getBundle(de.cognicrypt.order.editor.Activator.PLUGIN_ID);
+ final URL entry = bundle.getEntry(Constants.RELATIVE_STATEMACHINE_MODELS_DIR);
+ final URL resolvedURL = FileLocator.toFileURL(entry);
+ if (!(resolvedURL == null)) {
+ resolvedURI = new URI(resolvedURL.getProtocol(), resolvedURL.getPath(), null);
+ } else {
+ resolvedURI = FileLocator.resolve(entry).toURI();
+ }
+ }
+ catch (final IOException ex) {
+ Activator.getDefault().logError(ex, Constants.ERROR_MESSAGE_NO_FILE);
+ } catch (URISyntaxException ex) {
+ Activator.getDefault().logError(ex);
+ }
+ java.net.URI fileURI = null;
+
+ try {
+ fileURI = new java.net.URI(resolvedURI + ruleName + Constants.STATEMACHINE_EXTENSION);
+ } catch (URISyntaxException e3) {
+ e3.printStackTrace();
+ }
+
+ File file = new File(fileURI);
+
+ if(!file.exists()) {
+ try {
+ file.createNewFile();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+
+ try (OutputStream fileOutputStream = new FileOutputStream(file)) {
+ try {
+ outputStream.writeTo(fileOutputStream);
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ } finally {
+ fileOutputStream.close();
+ }
+ } catch (IOException e2) {
+ e2.printStackTrace();
+ }
+ }
+
+ // method for checking whether events occur more frequently
+ public static boolean sameEvent(List edges, TransitionEdge e) {
+ int counter = 0;
+ for(TransitionEdge ed: edges) {
+ if(ed != e) {
+ if(ed.getLabel().equals(e.getLabel())) {
+ counter++;
+ }
+ }
+ }
+ if(counter > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ public static XtextResource createAndAddXtextResourcePlatformPluginURI(String outputFile, ResourceSet resourceSet) {
+ // parsing a plug-in-based path string, with an option to encode the created URI
+ org.eclipse.emf.common.util.URI uri = org.eclipse.emf.common.util.URI.createPlatformPluginURI(outputFile, false);
+ XtextResource resource = (XtextResource) resourceSet.createResource(uri);
+ return resource;
+ }
+
+ public static EObject provideCrySLEObject(String pathToCryslFile) throws MalformedURLException {
+ // Loading model
+ CrySLStandaloneSetup crySLStandaloneSetup = new CrySLStandaloneSetup();
+ final Injector injector = crySLStandaloneSetup.createInjectorAndDoEMFRegistration();
+ XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
+ String a = System.getProperty("java.class.path");
+ String[] l = a.split(";");
+ URL[] classpath = new URL[l.length];
+ for (int i = 0; i < classpath.length; i++) {
+ classpath[i] = new File(l[i]).toURI().toURL();
+ }
+ URLClassLoader ucl = new URLClassLoader(classpath);
+ resourceSet.setClasspathURIContext(new URLClassLoader(classpath));
+ new ClasspathTypeProvider(ucl, resourceSet, null, null);
+ resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
+ final Resource resource = resourceSet.getResource(org.eclipse.emf.common.util.URI.createFileURI(pathToCryslFile), true);
+ final EObject eObject = resource.getContents().get(0);
+ return eObject;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/scoping/StatemachineScopeProvider.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/scoping/StatemachineScopeProvider.java
new file mode 100644
index 000000000..c5af0d9e8
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/scoping/StatemachineScopeProvider.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.scoping;
+
+
+/**
+ * This class contains custom scoping description.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
+ * on how and when to use it.
+ */
+public class StatemachineScopeProvider extends AbstractStatemachineScopeProvider {
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/validation/StatemachineValidator.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/validation/StatemachineValidator.java
new file mode 100644
index 000000000..bb828f593
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/validation/StatemachineValidator.java
@@ -0,0 +1,25 @@
+/*
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.validation;
+
+
+/**
+ * This class contains custom validation rules.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
+ */
+public class StatemachineValidator extends AbstractStatemachineValidator {
+
+// public static final String INVALID_NAME = "invalidName";
+//
+// @Check
+// public void checkGreetingStartsWithCapital(Greeting greeting) {
+// if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+// warning("Name should start with a capital",
+// StatemachinePackage.Literals.GREETING__NAME,
+// INVALID_NAME);
+// }
+// }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizard.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizard.java
new file mode 100644
index 000000000..536a98507
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizard.java
@@ -0,0 +1,32 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+
+ * http://www.eclipse.org/legal/epl-2.0. SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+package de.cognicrypt.order.editor.wizard;
+
+import org.eclipse.jface.wizard.Wizard;
+import de.cognicrypt.core.Constants;
+
+public class OrderEditorWizard extends Wizard {
+
+ public OrderEditorWizard() {
+
+ }
+
+ @Override
+ public void addPages() {
+ addPage(new PageForOrderDiagramWizard(Constants.PAGE_NAME_FOR_MODE_OF_WIZARD, Constants.PAGE_TITLE_FOR_MODE_OF_WIZARD, Constants.PAGE_DESCRIPTION_FOR_MODE_OF_WIZARD));
+
+ //addPage(new PageForTaskIntegratorWizard(Constants.PAGE_NAME_FOR_LINK_ANSWERS, Constants.PAGE_TITLE_FOR_LINK_ANSWERS, Constants.PAGE_DESCIPTION_FOR_LINK_ANSWERS));
+
+ }
+
+ @Override
+ public boolean performFinish() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizardDialog.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizardDialog.java
new file mode 100644
index 000000000..9c9837904
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/OrderEditorWizardDialog.java
@@ -0,0 +1,33 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+package de.cognicrypt.order.editor.wizard;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+public class OrderEditorWizardDialog extends WizardDialog {
+
+ public OrderEditorWizardDialog(final Shell parentShell, final IWizard newWizard) {
+ super(parentShell, newWizard);
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(final Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ final Button finishButton = getButton(IDialogConstants.FINISH_ID);
+ finishButton.setText("Generate");
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/PageForOrderDiagramWizard.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/PageForOrderDiagramWizard.java
new file mode 100644
index 000000000..ff96659a7
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/wizard/PageForOrderDiagramWizard.java
@@ -0,0 +1,83 @@
+/********************************************************************************
+ * Copyright (c) 2015-2019 TU Darmstadt, Paderborn University
+ *
+
+ * http://www.eclipse.org/legal/epl-2.0. SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+/**
+ *
+ */
+package de.cognicrypt.order.editor.wizard;
+
+import java.util.List;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import de.cognicrypt.order.editor.Constants;
+import de.cognicrypt.order.editor.config.CryslFile;
+import de.cognicrypt.order.editor.config.StaxParser;
+import de.cognicrypt.order.editor.config.StaxWriter;
+
+public class PageForOrderDiagramWizard extends WizardPage {
+
+ /**
+ * Create the wizard.
+ */
+ public PageForOrderDiagramWizard(final String name, final String title, final String description) {
+ super(name);
+ setTitle(title);
+ setDescription(description);
+ setPageComplete(false);
+ }
+
+ /**
+ * Create contents of the wizard.
+ *
+ * @param parent
+ */
+ @Override
+ public void createControl(final Composite parent) {
+ final Composite container = new Composite(parent, SWT.NONE);
+ setControl(container);
+
+ container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ container.setLayout(new GridLayout(2, false));
+
+ // needs to be replaced by file selection drop down menu later
+ final Button button = new Button(container, SWT.PUSH);
+ button.setText("Generate Statemachine Models");
+
+ button.addSelectionListener(new SelectionListener() {
+
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ StaxWriter configFile = new StaxWriter();
+
+ configFile.setFile("config" + Constants.XML_EXTENSION);
+ try {
+ configFile.saveConfig();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ StaxParser read = new StaxParser();
+ List readConfig = read.readConfig(configFile.getFile().getPath());
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.java._trace b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..5977d03553b8caa5219fa965b62199ecb71bb584
GIT binary patch
literal 414
zcmY+-KTE?v7{~E@@<&o4m|SYw3W6>Qg3VAzhr4IV;-rg{5R#(?G0~7gN72Q}cTn&}
z_%58fy7d*fItbo9p%AC!bKm?fj4>AgKOkn7JeFVn1ehpPlGpR9%$vu%HmRFJHHj+9
zwr-NSs#KGiw~IDw)oqqvmz7G_r_+a4RfP?QU^5F2EQf)d$tQn%eLJ(|Of38@W3ku_
zbYF^9VEUJOQyKXDjpF5^H~9C6Y&*RuWza4MepP@j6@myg*7q8mk;q06~`^aYsu
z)M8&Z!1FO_pKIB8Ip{Q?U0;A%*N#jByxFBMPe!!6k2*!P>kIJ3p_V$dd)*_Q?a=Ox
RcQSvsurI)OkJ^=Ic7HG2M_d2^
literal 0
HcmV?d00001
diff --git a/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.xtendbin b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..3a8a8672ec9ec5b8d914eb595f1d7a3173c119da
GIT binary patch
literal 2311
zcmaJ@c{mi_8XjvVWMr&ATZQZ;TegtN*qN-6tb-9l#xi5g7+d^GLK%CAEJYbRWl5wV
zM#O~1zK^Yt?Q;M5=|1<~_xy3rbDnd)^F7b|e((9r4C&~>0463TfNdPFIp73Xj@EE*
zHyIZnq(2<#kIJ%e@*yjMQXySwh2M}11bZ?8H571H(@4_FQRo4y4Zb`&fdE{P*{H#$
z^_;QO2kVW*Z?VPf&kIP{-K$oqI3*J4xAlc;bv60l~_*wFB38&O(JoWQ&&05>9M!ND$%5}+3wq*K(y+CNK6Y?DD
z{%4{9QoT4sb1J%P`RMGn&h<&0=UCn{u7fR>H#ONG0rQ1dDT|AR_KGR%O0D8$*HU7v
zzwjf^u(PNbo7|#NbRzYh6N*YQAqT3Zj=Dv&A8PWdR@b-#e2f?bml#z{hjH`kTscu7
zX$DQ)##zFJ%Cbcy{M!D|IA470xKL9kdVOsculGnodhL^n_)B*qWG&DD8+ev@5+Oy8oj|#6qZq`8gCtg3#aU3u$VXs%d
z%u#kF(uvKyITX#LL*prS+SrfdaShX2Wh6(>%~FB`aM`9JQ$p#~JTV{?lSYk#Mel(Z
z`AUlypDOI=6|IU#i&IEgQD>OvXrb_Vy>u>H85QYTV=s5Ab8CN{&Ud?St=a-5m#8@I
z+J^Rqa3EaCbam>D@@51~HvyrLnd+wZ&Ky?ZEJ;P0Jx#x1
zQK^cZVf_Q8T*UYcM4DsQ;Y1&6xXGT9V1UJScyITGIgTNWmbz4E#k|U+G}*;{HH)qv
z3mt=Cp0eF(=KcjIyGwPQi0VRj!3o2!G26*ik~-?P%I(%X<*aKz>(9L^pFgY|j7WVy
z-ZOTyvwnQJ-Rp3BXu;}D&MNpfN6W?mZNtiB47N&`R1waY>E`+ZZ{BOpViFp6ceP9=Fw9+
z0N{`b05JQX1r0tbXg@g0C&14IF5?PEx%eS`{SiLMrWE7516n*EbC#PoKb$Xne(DA&
zcq7Rv2$puI%+cCT8q3++W0JjOqJQPy%X>AJ|f&(xgQ#{JWl`FZ*Ny*lil+H>83G8n$U`8*=;U`O93#@gRhXKFSnN#b!;*y$
zq}lPY#IQ3?tA}BOHgrnAAzi92Z4}>`sXd#S=~Y;Pb2V{mCn{?;GM_sWOWeClDdMq#<#->PNJh6(%X6!$(M3+@j%c(
z$7%X*c_0>b(bHyYJ@{aq{CzVBebat#{h)0p77DkSdv8!&J5FgGZDQyi2paxnIY*xQ
z%~)WEsGa)7jJRQ@^ako%$6l48T{G`6&6<;-TROV>nqX%?4F`-V7T7;)+G7UOW+lIU;?_r)V#=GSIwS)JJ6x6@*gR&@
zm3?29RBY5C1hb>B+(nv9nvXL^~-d^YSAw0iyQ>@5+|V{EGCwz_52Cxp&-w1bhv(Y
zbBs0_3+vXM;gXcgSbEPS#bMN44fk`;XIkO7%aWidI|hp4)F|RsX;a*o8);FH3beef
z(FO^3UWxOvt-Q<9;h*2ea%S@^5)iBa|1iy{AvS!B
zy>8=M#Ewd+GW29o7+u{=on+~6N~`#Ob9mkCsX?c=HPe^+D1Eg%9`OoJ{-!h7LKb4
zb@ag;kl8Oj`>Jp3ExOE3ZAVQDfKs960Va%f4G&9wjV6jC0wK{CMY1g@xORQc?BuKE
ztrGF>7HHcE3}<#K8Wznha>t4yDz_qZ%&(qIi_8le06^j2{L;{Z0sk})Ctc{6;XiS*
zl`u2>^X5s_9J|y%=sR+?|K?f$8R2AJf4*&Zl<7&WnHe%1?EnCDN2B^^Ry*=c0N`K!
CgB*PT
literal 0
HcmV?d00001
diff --git a/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/StatemachineGenerator.java b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/StatemachineGenerator.java
new file mode 100644
index 000000000..8e31ae68d
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/StatemachineGenerator.java
@@ -0,0 +1,21 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.generator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.generator.AbstractGenerator;
+import org.eclipse.xtext.generator.IFileSystemAccess2;
+import org.eclipse.xtext.generator.IGeneratorContext;
+
+/**
+ * Generates code from your model files on save.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
+ */
+@SuppressWarnings("all")
+public class StatemachineGenerator extends AbstractGenerator {
+ @Override
+ public void doGenerate(final Resource resource, final IFileSystemAccess2 fsa, final IGeneratorContext context) {
+ }
+}
From ecdd65c4648a28bcd009edd7f9858031b52c67b6 Mon Sep 17 00:00:00 2001
From: Anemone
Date: Wed, 1 Sep 2021 15:37:20 +0200
Subject: [PATCH 02/18] Add some classes to resolve wrong imports in parser,
add project to pom
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Anemone Kampkötter
---
.../build.properties | 4 +-
.../editor/parser/StatemachineParser.java | 49 +-
.../order/editor/statemachine/CrySLEvent.java | 25 +
.../editor/statemachine/CrySLMethod.java | 110 ++++
.../editor/statemachine/CryslReaderUtils.java | 76 +++
.../statemachine/StateMachineGraph.java | 127 +++++
.../StateMachineGraphBuilder.java | 473 ++++++++++++++++++
.../order/editor/statemachine/StateNode.java | 112 +++++
.../editor/statemachine/StateTransition.java | 11 +
.../editor/statemachine/TransitionEdge.java | 90 ++++
pom.xml | 1 +
11 files changed, 1049 insertions(+), 29 deletions(-)
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLEvent.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLMethod.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CryslReaderUtils.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraph.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraphBuilder.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateNode.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateTransition.java
create mode 100644 plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/TransitionEdge.java
diff --git a/plugins/de.cognicrypt.order.editor/build.properties b/plugins/de.cognicrypt.order.editor/build.properties
index 2587971a6..33156c43b 100644
--- a/plugins/de.cognicrypt.order.editor/build.properties
+++ b/plugins/de.cognicrypt.order.editor/build.properties
@@ -4,6 +4,4 @@ source.. = src/,\
bin.includes = model/generated/,\
.,\
META-INF/,\
- plugin.xml\
- lib/claferchocoig.jar,\
- lib/dom4j-2.0.0.jar
+ plugin.xml
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
index 27452bad4..a25ebd45e 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
@@ -2,32 +2,24 @@
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.URIConverter;
-import org.eclipse.emf.ecore.resource.URIHandler;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider;
import org.eclipse.xtext.resource.SaveOptions;
@@ -40,18 +32,21 @@
import de.cognicrypt.order.editor.Activator;
import de.cognicrypt.order.editor.Constants;
import de.cognicrypt.order.editor.config.CryslFile;
+import de.cognicrypt.order.editor.statemachine.Statemachine;
+import de.cognicrypt.order.editor.statemachine.StatemachineFactory;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
import de.darmstadt.tu.crossing.CrySLStandaloneSetup;
-import de.darmstadt.tu.crossing.StatemachineStandaloneSetup;
+import de.cognicrypt.order.editor.StatemachineStandaloneSetup;
import de.darmstadt.tu.crossing.crySL.Domainmodel;
import de.darmstadt.tu.crossing.crySL.Expression;
import de.darmstadt.tu.crossing.crySL.SuperType;
-import de.darmstadt.tu.crossing.statemachine.StateMachineGraph;
-import de.darmstadt.tu.crossing.statemachine.StateMachineGraphBuilder;
-import de.darmstadt.tu.crossing.statemachine.StateNode;
-import de.darmstadt.tu.crossing.statemachine.Statemachine;
-import de.darmstadt.tu.crossing.statemachine.StatemachineFactory;
-import de.darmstadt.tu.crossing.statemachine.StatemachinePackage;
-import de.darmstadt.tu.crossing.statemachine.TransitionEdge;
+import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.Transition;
+import de.cognicrypt.order.editor.statemachine.StateMachineGraph;
+import de.cognicrypt.order.editor.statemachine.StateMachineGraphBuilder;
+import de.cognicrypt.order.editor.statemachine.StateNode;
+import de.cognicrypt.order.editor.statemachine.TransitionEdge;
public class StatemachineParser {
@@ -75,10 +70,11 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
StateMachineGraph smgb = new StateMachineGraphBuilder(order).buildSMG();
Set stateNodes = smgb.getNodes();
java.util.List transitionEdges = smgb.getEdges();
- java.util.List myTransitionEvents = new ArrayList(); // only for labels as they do not provide info what is source and target
+ java.util.List myTransitionEvents = new ArrayList(); // only for labels as they do not provide info what is source and target
+ //java.util.List myTransitionEvents = new ArrayList(); // only for labels as they do not provide info what is source and target
for(TransitionEdge e : transitionEdges) {
- myTransitionEvents.add(e.getLabel());
+ myTransitionEvents.add((de.darmstadt.tu.crossing.crySL.Event) e.getLabel());
}
StatemachineStandaloneSetup.doSetup();
@@ -97,19 +93,20 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
Statemachine statemachine = StatemachineFactory.eINSTANCE.createStatemachine();
- de.darmstadt.tu.crossing.statemachine.State state = null;
- de.darmstadt.tu.crossing.statemachine.Event event = null;
- de.darmstadt.tu.crossing.statemachine.Transition transition = null;
- HashMap stateNodeMap = new HashMap();
+ State state = null;
+ Event event = null;
+ //de.darmstadt.tu.crossing.statemachine.Transition transition = null;
+ Transition transition = null;
+ HashMap stateNodeMap = new HashMap();
SuperType ev = null;
int counter = 0;
//process stateNodes separately, still unsorted
for(StateNode s: stateNodes) {
- state = StatemachineFactory.eINSTANCE.createState();
+ state = (State) StatemachineFactory.eINSTANCE.createState();
state.setName("s" + s.getName());
- statemachine.getStates().add(state);
+ statemachine.getStates().add((de.cognicrypt.order.editor.statemachine.State) state);
counter++;
stateNodeMap.put(s, state);
}
@@ -118,7 +115,7 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
for(int i = 0; i < transitionEdges.size(); i++) {
if(transitionEdges.get(i).getLabel() instanceof SuperType) {
ev = (SuperType) transitionEdges.get(i).getLabel();
- event = StatemachineFactory.eINSTANCE.createEvent();
+ event = (Event) StatemachineFactory.eINSTANCE.createEvent();
// check for duplicate events to avoid same naming for different edges (causes serialization error)
if(sameEvent(transitionEdges, transitionEdges.get(i))) {
event.setName(((SuperType) ev).getName() + i);
@@ -128,7 +125,7 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
event.setName(((SuperType) ev).getName());
event.setCode(((SuperType) ev).getName());
}
- statemachine.getEvents().add(event);
+ statemachine.getEvents().add((de.cognicrypt.order.editor.statemachine.Event) event);
}
transition = StatemachineFactory.eINSTANCE.createTransition();
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLEvent.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLEvent.java
new file mode 100644
index 000000000..96b1743eb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLEvent.java
@@ -0,0 +1,25 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import de.darmstadt.tu.crossing.crySL.Event;
+import de.darmstadt.tu.crossing.crySL.impl.EventImpl;
+
+public class CrySLEvent extends EventImpl {
+
+
+ public CrySLEvent() {
+ super();
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLMethod.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLMethod.java
new file mode 100644
index 000000000..4ebb6bac5
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CrySLMethod.java
@@ -0,0 +1,110 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map.Entry;
+
+public class CrySLMethod implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private final String methodName;
+ private final Entry retObject;
+ private final List> parameters;
+ private final List backward;
+
+ public CrySLMethod(String methName, List> pars, List backw, Entry returnObject) {
+ methodName = methName;
+ parameters = pars;
+ backward = backw;
+ retObject = returnObject;
+ }
+
+ /**
+ * @return the FQ methodName
+ */
+ public String getMethodName() {
+ return methodName;
+ }
+
+ /**
+ * @return the short methodName
+ */
+ public String getShortMethodName() {
+ return methodName.substring(methodName.lastIndexOf(".") + 1);
+ }
+
+
+ /**
+ * @return the parameters
+ */
+ public List> getParameters() {
+ return parameters;
+ }
+
+ /**
+ * @return the backward
+ */
+ public List getBackward() {
+ return backward;
+ }
+
+
+ public Entry getRetObject() {
+ return retObject;
+ }
+ public String toString() {
+ return getName();
+ }
+
+ public String getName() {
+ StringBuilder stmntBuilder = new StringBuilder();
+ String returnValue = retObject.getKey();
+ if (!"_".equals(returnValue)) {
+ stmntBuilder.append(returnValue);
+ stmntBuilder.append(" = ");
+ }
+
+ stmntBuilder.append(this.methodName);
+ stmntBuilder.append("(");
+
+
+ for (Entry par: parameters) {
+ stmntBuilder.append(" ");
+ stmntBuilder.append(par.getKey());
+// if (backward != null && backward.size() == parameters.size()) {
+// stmntBuilder.append(" (");
+// stmntBuilder.append(backward.get(parameters.indexOf(par)));
+// stmntBuilder.append("),");
+// }
+ }
+
+ stmntBuilder.append(");");
+ return stmntBuilder.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((backward == null) ? 0 : backward.hashCode());
+ result = prime * result + ((methodName == null) ? 0 : methodName.hashCode());
+ result = prime * result + ((parameters == null) ? 0 : parameters.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof CrySLMethod)) {
+ return false;
+ }
+ CrySLMethod other = (CrySLMethod) obj;
+ return this.getMethodName().equals(other.getMethodName()) && parameters.equals(other.parameters);
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CryslReaderUtils.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CryslReaderUtils.java
new file mode 100644
index 000000000..3c97ad123
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/CryslReaderUtils.java
@@ -0,0 +1,76 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.util.AbstractMap.SimpleEntry;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map.Entry;
+
+import de.darmstadt.tu.crossing.crySL.Aggregate;
+import de.darmstadt.tu.crossing.crySL.Event;
+import de.darmstadt.tu.crossing.crySL.Method;
+import de.darmstadt.tu.crossing.crySL.ObjectDecl;
+import de.darmstadt.tu.crossing.crySL.Par;
+import de.darmstadt.tu.crossing.crySL.ParList;
+import de.darmstadt.tu.crossing.crySL.SuperType;
+
+public class CryslReaderUtils {
+ protected static Event resolveAggregateToMethodeNames(final Event leaf) {
+ if (leaf instanceof Aggregate) {
+ final Aggregate ev = (Aggregate) leaf;
+ return ev;
+ } else {
+ final ArrayList statements = new ArrayList<>();
+ CrySLMethod stringifyMethodSignature = stringifyMethodSignature(leaf);
+ if (stringifyMethodSignature != null) {
+ statements.add(stringifyMethodSignature);
+ }
+ return leaf;
+ }
+ }
+
+ protected static CrySLMethod stringifyMethodSignature(final Event lab) {
+ if (!(lab instanceof SuperType)) {
+ return null;
+ }
+ final Method method = ((SuperType) lab).getMeth();
+
+ String methodName = method.getMethName().getSimpleName();
+ if (methodName == null) {
+ methodName = ((de.darmstadt.tu.crossing.crySL.Domainmodel) (method.eContainer().eContainer().eContainer())).getJavaType().getSimpleName();
+ }
+ final String qualifiedName =
+ ((de.darmstadt.tu.crossing.crySL.Domainmodel) (method.eContainer().eContainer().eContainer())).getJavaType().getQualifiedName() + "." + methodName; // method.getMethName().getQualifiedName();
+ // qualifiedName = removeSPI(qualifiedName);
+ final List> pars = new ArrayList<>();
+ final de.darmstadt.tu.crossing.crySL.Object returnValue = method.getLeftSide();
+ Entry returnObject = null;
+ if (returnValue != null && returnValue.getName() != null) {
+ final ObjectDecl v = ((ObjectDecl) returnValue.eContainer());
+ returnObject = new SimpleEntry<>(returnValue.getName(), v.getObjectType().getQualifiedName() + ((v.getArray() != null) ? v.getArray() : ""));
+ } else {
+ returnObject = new SimpleEntry<>("_", "void");
+ }
+ final ParList parList = method.getParList();
+ if (parList != null) {
+ for (final Par par : parList.getParameters()) {
+ String parValue = "_";
+ if (par.getVal() != null && par.getVal().getName() != null) {
+ final ObjectDecl objectDecl = (ObjectDecl) par.getVal().eContainer();
+ parValue = par.getVal().getName();
+ final String parType = objectDecl.getObjectType().getIdentifier() + ((objectDecl.getArray() != null) ? objectDecl.getArray() : "");
+ pars.add(new SimpleEntry<>(parValue, parType));
+ } else {
+ pars.add(new SimpleEntry<>(parValue, "AnyType"));
+ }
+ }
+ }
+ return new CrySLMethod(qualifiedName, pars, new ArrayList(), returnObject);
+ }
+
+ public static File getResourceFromWithin(final String inputPath) {
+ return new File(inputPath);
+ }
+}
+
+
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraph.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraph.java
new file mode 100644
index 000000000..e96fc3e17
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraph.java
@@ -0,0 +1,127 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import de.darmstadt.tu.crossing.crySL.CrySLFactory;
+import de.darmstadt.tu.crossing.crySL.Expression;
+import de.darmstadt.tu.crossing.crySL.Order;
+import de.darmstadt.tu.crossing.crySL.SimpleOrder;
+import de.darmstadt.tu.crossing.crySL.impl.ExpressionImpl;
+
+public final class StateMachineGraph{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private final Set nodes;
+ private final List edges;
+
+ private final HashMap nodemaps;
+ public StateMachineGraph() {
+ nodes = new HashSet();
+ edges = new ArrayList();
+ nodemaps = new HashMap();
+ }
+
+ public Boolean addEdge(TransitionEdge edge) {
+ final StateNode right = edge.getRight();
+ final StateNode left = edge.getLeft();
+ if(edge.getLeft().getName().equals("init")) {
+ //remove initial node (Order) and put an expression instead of it
+ Expression newElement = CrySLFactory.eINSTANCE.createExpression();
+ nodemaps.put("init", newElement);
+
+ }
+ if (!(nodes.parallelStream().anyMatch(e -> e.equals(left)) || nodes.parallelStream().anyMatch(e -> e.equals(right)))) {
+ return false;
+ }
+ if (edges.contains(edge)) {
+ return false;
+ }
+ edges.add(edge);
+ return true;
+ }
+
+ public void wrapUpCreation() {
+ getAcceptingStates().parallelStream().forEach(e -> {
+ e.setHopsToAccepting(0);
+ updateHops(e);
+ });
+ }
+
+ private void updateHops(StateNode node) {
+ int newPath = node.getHopsToAccepting() + 1;
+ getAllTransitions().parallelStream().forEach(e -> {
+ StateNode theNewRight = e.getLeft();
+ if (e.getRight().equals(node) && theNewRight.getHopsToAccepting() > newPath) {
+ theNewRight.setHopsToAccepting(newPath);
+ updateHops(theNewRight);
+ }
+ });
+ }
+
+ public Boolean addNode(StateNode node, Expression expression) {
+ for (StateNode innerNode : nodes) {
+ if (innerNode.getName().equals(node.getName())) {
+ return false;
+ }
+ }
+ nodes.add(node);
+ nodemaps.put(node.getName(), expression);
+ return true;
+ }
+
+ public String toString() {
+ StringBuilder graphSB = new StringBuilder();
+ for (StateNode node : nodes) {
+ graphSB.append(node.toString());
+ graphSB.append(System.lineSeparator());
+ }
+
+ for (TransitionEdge te : edges) {
+ graphSB.append(te.toString());
+ graphSB.append(System.lineSeparator());
+ }
+
+ return graphSB.toString();
+ }
+
+ public Set getNodes() {
+ return nodes;
+ }
+
+ public HashMap getNodeMap() {
+ return nodemaps;
+ }
+
+ public List getEdges() {
+ return edges;
+ }
+
+ public TransitionEdge getInitialTransition() {
+ return edges.get(0);
+ }
+
+ public Collection getAcceptingStates() {
+ Collection accNodes = new ArrayList();
+ for (StateNode node : nodes) {
+ if (node.getAccepting()) {
+ accNodes.add(node);
+ }
+ }
+
+ return accNodes;
+ }
+
+ public Collection getAllTransitions() {
+ return getEdges();
+ }
+
+}
+
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraphBuilder.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraphBuilder.java
new file mode 100644
index 000000000..f91f0a244
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateMachineGraphBuilder.java
@@ -0,0 +1,473 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.util.AbstractMap.SimpleEntry;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+
+import de.darmstadt.tu.crossing.crySL.Event;
+import de.darmstadt.tu.crossing.crySL.Expression;
+import de.darmstadt.tu.crossing.crySL.Order;
+import de.darmstadt.tu.crossing.crySL.SimpleOrder;
+
+public class StateMachineGraphBuilder {
+
+ private final Expression head;
+ private final StateMachineGraph result = new StateMachineGraph();
+ private int nodeNameCounter = 0;
+
+ public StateMachineGraphBuilder(final Expression order) {
+ this.head = order;
+ this.result.addNode(new StateNode("init", true, true), order);
+
+ }
+
+ private StateNode addRegularEdge(final Expression leaf, final StateNode prevNode, final StateNode nextNode) {
+ return addRegularEdge(leaf, prevNode, nextNode, false);
+ }
+
+ private StateNode addRegularEdge(final Expression leaf, final StateNode prevNode, final StateNode nextNode, final Boolean isStillAccepting) {
+ final Event label = CryslReaderUtils.resolveAggregateToMethodeNames(leaf.getOrderEv().get(0));
+ return addRegularEdge(leaf,label, prevNode, nextNode, isStillAccepting);
+ }
+
+
+ private StateNode addRegularEdge(Expression leaf,final Event label, final StateNode prevNode, StateNode nextNode, final Boolean isStillAccepting) {
+ if (nextNode == null) {
+ nextNode = getNewNode();
+ this.result.addNode(nextNode, leaf);
+ }
+ if (!isStillAccepting) {
+ prevNode.setAccepting(false);
+ }
+ boolean added = this.result.addEdge(new TransitionEdge(label, prevNode, nextNode));
+ return nextNode;
+ }
+
+ public StateMachineGraph buildSMG() {
+ StateNode initialNode = null;
+ for (final StateNode n : this.result.getNodes()) {
+ initialNode = n;
+ }
+ if (this.head != null) {
+ processHead(this.head, 0, HashMultimap.create(), initialNode);
+ } else {
+ //see the implementation in CryptoAnalysis StateMachineGraphBuilder
+ // may be required to keep it as it is.
+ //this.result.addEdge(new TransitionEdge(new ArrayList(), initialNode, initialNode));
+ this.result.addEdge(new TransitionEdge(new CrySLEvent(), initialNode, initialNode));
+ }
+ return this.result;
+ }
+
+ private StateNode getNewNode() {
+ return new StateNode(String.valueOf(this.nodeNameCounter++), false, true);
+ }
+
+ private List getOutgoingEdges(final StateNode curNode, final StateNode notTo) {
+ final List outgoingEdges = new ArrayList<>();
+ for (final TransitionEdge comp : this.result.getAllTransitions()) {
+ if (comp.getLeft().equals(curNode) && !(comp.getRight().equals(curNode) || comp.getRight().equals(notTo))) {
+ outgoingEdges.add(comp);
+ }
+ }
+ return outgoingEdges;
+ }
+
+ private StateNode isGeneric(final String el, final int level, final Multimap> leftOvers) {
+ for (final Entry entry : leftOvers.get(level)) {
+ if (el.equals(entry.getKey())) {
+ return entry.getValue();
+ }
+ }
+ return null;
+ }
+
+ private StateNode isOr(final int level, final Multimap> leftOvers) {
+ return isGeneric("|", level, leftOvers);
+ }
+
+ private StateNode isQM(final int level, final Multimap> leftOvers) {
+ return isGeneric("?", level, leftOvers);
+ }
+
+ private StateNode process(final Expression curLevel, final int level, final Multimap> leftOvers, StateNode prevNode) {
+ final Expression left = curLevel.getLeft();
+ final Expression right = curLevel.getRight();
+ final String leftElOp = (left != null) ? left.getElementop() : "";
+ final String rightElOp = (right != null) ? right.getElementop() : "";
+ final String orderOp = curLevel.getOrderop();
+ // case 1 = left & right = non-leaf
+ // case 2 = left = non-leaf & right = leaf
+ // case 3 = left = leaf & right = non-leaf
+ // case 4 = left = leaf & right = leaf
+
+ if (left == null && right == null) {
+ addRegularEdge(left, prevNode, null);
+ } else if ((left instanceof Order || left instanceof SimpleOrder) && (right instanceof Order || right instanceof SimpleOrder)) {
+ final StateNode leftPrev = prevNode;
+ prevNode = process(left, level + 1, leftOvers, prevNode);
+
+ final StateNode rightPrev = prevNode;
+ StateNode returnToNode = null;
+ if ("|".equals(orderOp)) {
+ leftOvers.put(level + 1, new HashMap.SimpleEntry<>(orderOp, prevNode));
+ prevNode = process(right, level + 1, leftOvers, leftPrev);
+ } else if ((returnToNode = isOr(level, leftOvers)) != null) {
+ prevNode = process(right, level + 1, leftOvers, returnToNode);
+ } else {
+ prevNode = process(right, level + 1, leftOvers, prevNode);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ final List outgoingEdges = new ArrayList();
+ if ("|".equals(orderOp)) {
+ final List tmpOutgoingEdges = getOutgoingEdges(leftPrev, null);
+ for (final TransitionEdge outgoingEdge : tmpOutgoingEdges) {
+ if (isReachable(outgoingEdge.to(), prevNode, new ArrayList())) {
+ outgoingEdges.addAll(getOutgoingEdges(outgoingEdge.to(), prevNode));
+ }
+ }
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ if (isReachable(prevNode, outgoingEdge.from(), new ArrayList())) {
+ addRegularEdge(right,outgoingEdge.getLabel(), prevNode, outgoingEdge.from(), true);
+ }
+ }
+
+ } else {
+ outgoingEdges.addAll(getOutgoingEdges(rightPrev, prevNode));
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ addRegularEdge(right,outgoingEdge.getLabel(), prevNode, outgoingEdge.to(), true);
+ }
+ }
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(right, leftPrev, prevNode, true);
+ }
+
+ } else if ((left instanceof Order || left instanceof SimpleOrder) && !(right instanceof Order || right instanceof SimpleOrder)) {
+ StateNode leftPrev = prevNode;
+
+ Optional> optionalOrLevel = leftOvers.get(level).stream().filter(e -> "|".equals(e.getKey())).findFirst();
+ if (optionalOrLevel.isPresent()) {
+ Entry orLevel = optionalOrLevel.get();
+ StateNode p = orLevel.getValue();
+ List orEdges = getOutgoingEdges(prevNode, null);
+ if (!orEdges.isEmpty()) {
+ Optional edge = orEdges.stream().filter(e -> e.getRight().equals(p)).findFirst();
+ if (edge.isPresent() && edge.get().getLabel().equals(CryslReaderUtils.resolveAggregateToMethodeNames(getLeftMostChild(left).getOrderEv().get(0)))) {
+ leftOvers.put(level + 1, orLevel);
+ }
+ }
+ }
+ prevNode = process(left, level + 1, leftOvers, prevNode);
+
+ if (rightElOp != null && ("?".equals(rightElOp) || "*".equals(rightElOp))) {
+ leftOvers.put(level - 1, new HashMap.SimpleEntry<>(rightElOp, prevNode));
+ prevNode = addRegularEdge(right, prevNode, null, true);
+ } else {
+ prevNode = addRegularEdge(right, prevNode, null);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ addRegularEdge(right, prevNode, prevNode, true);
+ }
+
+ } else if (!(left instanceof Order || left instanceof SimpleOrder) && (right instanceof Order || right instanceof SimpleOrder)) {
+ StateNode leftPrev = prevNode;
+ prevNode = addRegularEdge(left, prevNode, null);
+
+ if (leftElOp != null && ("+".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(left, prevNode, prevNode, true);
+ }
+
+ if (rightElOp != null && ("?".equals(rightElOp) || "*".equals(rightElOp))) {
+ leftOvers.put(level - 1, new HashMap.SimpleEntry<>(rightElOp, prevNode));
+ }
+ final StateNode rightPrev = prevNode;
+ if ("|".equals(orderOp)) {
+ leftOvers.put(level + 1, new HashMap.SimpleEntry<>(orderOp, prevNode));
+ prevNode = process(right, level + 1, leftOvers, leftPrev);
+ } else {
+ prevNode = process(right, level + 1, leftOvers, prevNode);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ final List outgoingEdges = getOutgoingEdges(rightPrev, prevNode);
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ addRegularEdge(right,outgoingEdge.getLabel(), prevNode, outgoingEdge.to(), true);
+ }
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(right, leftPrev, prevNode, true);
+ }
+
+ } else if (!(left instanceof Order || left instanceof SimpleOrder) && !(right instanceof Order || right instanceof SimpleOrder)) {
+ StateNode leftPrev = null;
+ leftPrev = prevNode;
+
+ boolean sameName = false;
+ List orEdges = getOutgoingEdges(prevNode, null);
+ Optional> alternative = leftOvers.get(level).stream().filter(e -> "|".equals(e.getKey())).findFirst();
+ if (alternative.isPresent()) {
+ Entry orLevel = alternative.get();
+ StateNode p = orLevel.getValue();
+ if (!orEdges.isEmpty()) {
+ Optional edge = orEdges.stream().filter(e -> e.getRight().equals(p)).findFirst();
+ if (edge.isPresent() && edge.get().getLabel().equals(CryslReaderUtils.resolveAggregateToMethodeNames(getLeftMostChild(left).getOrderEv().get(0)))) {
+ sameName = true;
+ prevNode = p;
+ leftOvers.remove(level, orLevel);
+ }
+ }
+ }
+ if (!sameName) {
+ prevNode = addRegularEdge(left, prevNode, null);
+ }
+
+ StateNode returnToNode = isOr(level, leftOvers);
+ if (leftElOp != null && ("+".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(left, prevNode, prevNode, true);
+ }
+
+ if (rightElOp != null && ("?".equals(rightElOp) || "*".equals(rightElOp))) {
+ leftOvers.put(level - 1, new HashMap.SimpleEntry<>(rightElOp, prevNode));
+ }
+ if (returnToNode != null || "|".equals(orderOp)) {
+ if ("|".equals(orderOp)) {
+ addRegularEdge(right, leftPrev, prevNode);
+ }
+ if ((returnToNode = isOr(level, leftOvers)) != null) {
+ prevNode = addRegularEdge(right, prevNode, returnToNode);
+ }
+ } else {
+ prevNode = addRegularEdge(right, prevNode, null);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ addRegularEdge(right, prevNode, prevNode, true);
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(right, leftPrev, prevNode, true);
+ }
+
+ if (sameName) {
+ setAcceptingState(alternative.get().getValue());
+ }
+
+ }
+ leftOvers.removeAll(level);
+ return prevNode;
+ }
+
+ private boolean isReachable(final StateNode stateNode, final StateNode prevNode, final List skippable) {
+ for (final TransitionEdge edge : getOutgoingEdges(stateNode, stateNode)) {
+ if (edge.to().equals(prevNode)) {
+ return true;
+ } else if (!skippable.contains(edge.to())) {
+ skippable.add(edge.to());
+ return isReachable(edge.to(), prevNode, skippable);
+ }
+ }
+ return false;
+ }
+
+ private void processHead(final Expression curLevel, final int level, final Multimap> leftOvers, StateNode prevNode) {
+ final Expression left = curLevel.getLeft();
+ final Expression right = curLevel.getRight();
+ final String leftElOp = (left != null) ? left.getElementop() : "";
+ final String rightElOp = (right != null) ? right.getElementop() : "";
+ final String orderOp = curLevel.getOrderop();
+
+ if (left == null && right == null) {
+ final String elOp = curLevel.getElementop();
+ if ("*".equals(elOp) || "?".equals(elOp)) {
+ prevNode = addRegularEdge(curLevel, prevNode, null, true);
+ } else {
+ addRegularEdge(curLevel, prevNode, null);
+ }
+ if ("*".equals(elOp) || "+".equals(elOp)) {
+ addRegularEdge(curLevel, prevNode, prevNode, true);
+ }
+ } else if ((left instanceof Order || left instanceof SimpleOrder) && (right instanceof Order || right instanceof SimpleOrder)) {
+ final StateNode leftPrev = prevNode;
+ prevNode = process(left, level + 1, leftOvers, prevNode);
+ final StateNode rightPrev = prevNode;
+ if ("|".equals(orderOp)) {
+ prevNode = process(right, level + 1, leftOvers, leftPrev);
+ } else {
+ prevNode = process(right, level + 1, leftOvers, prevNode);
+ }
+ for (Entry a : leftOvers.get(level).stream().filter(e -> "?".equals(e.getKey())).collect(Collectors.toList())) {
+ if ("*".equals(rightElOp) || "?".equals(rightElOp)) {
+ setAcceptingState(a.getValue());
+ for (TransitionEdge l : getOutgoingEdges(rightPrev, null)) {
+ addRegularEdge(right, l.getLabel(), a.getValue(), l.getRight(), true);
+ }
+ }
+ }
+
+ if ("*".equals(rightElOp) || "?".equals(rightElOp)) {
+ setAcceptingState(rightPrev);
+ }
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ final String orderop = right.getOrderop();
+ List outgoingEdges = null;
+ if (orderop != null && "|".equals(orderop)) {
+ outgoingEdges = getOutgoingEdges(rightPrev, null);
+ } else {
+ outgoingEdges = getOutgoingEdges(rightPrev, prevNode);
+ }
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ addRegularEdge(right, outgoingEdge.getLabel(), prevNode, outgoingEdge.to(), true);
+ }
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(right, leftPrev, prevNode, true);
+ }
+ } else if ((left instanceof Order || left instanceof SimpleOrder) && !(right instanceof Order || right instanceof SimpleOrder)) {
+ final StateNode leftPrev = prevNode;
+ prevNode = process(left, level + 1, leftOvers, prevNode);
+ final StateNode rightPrev = prevNode;
+ if ("|".equals(orderOp)) {
+ prevNode = addRegularEdge(right, leftPrev, prevNode);
+ } else {
+ prevNode = addRegularEdge(right, prevNode, null);
+ }
+ for (Entry a : leftOvers.get(level).stream().filter(e -> "*".equals(e.getKey())).collect(Collectors.toList())) {
+ addRegularEdge(right, a.getValue(), prevNode, true);
+ }
+ boolean isOptional = "*".equals(rightElOp) || "?".equals(rightElOp);
+ if (isOptional) {
+ setAcceptingState(rightPrev);
+ if ("?".equals(left.getRight().getElementop()) || "*".equals(left.getRight().getElementop())) {
+ final List outgoingEdges = getOutgoingEdges(leftPrev, null);
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ setAcceptingState(outgoingEdge.to());
+ }
+ }
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ final List outgoingEdges = getOutgoingEdges(rightPrev, null);
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ addRegularEdge(right, outgoingEdge.getLabel(), prevNode, outgoingEdge.to(), true);
+ }
+ }
+ if (leftOvers.containsKey(level)) {
+ for (Entry entry : leftOvers.get(level).stream().filter(e -> "*".equals(e.getKey()) || "?".equals(e.getKey())).collect(Collectors.toList())) {
+ addRegularEdge(right, entry.getValue(), prevNode, isOptional);
+ }
+ }
+ StateNode returnToNode = null;
+ if ((returnToNode = isQM(level, leftOvers)) != null) {
+ addRegularEdge(right, returnToNode, prevNode, true);
+ }
+ } else if (!(left instanceof Order || left instanceof SimpleOrder) && (right instanceof Order || right instanceof SimpleOrder)) {
+ StateNode leftPrev = null;
+ leftPrev = prevNode;
+ prevNode = addRegularEdge(left, prevNode, null);
+
+ if (leftElOp != null && ("+".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(left, prevNode, prevNode);
+ }
+
+ final StateNode rightPrev = prevNode;
+ StateNode returnToNode = null;
+ if (rightElOp != null && ("?".equals(rightElOp) || "*".equals(rightElOp))) {
+ setAcceptingState(rightPrev);
+ }
+ if ("|".equals(orderOp)) {
+ setAcceptingState(prevNode);
+ SimpleEntry entry = new HashMap.SimpleEntry<>(orderOp, prevNode);
+ leftOvers.put(level + 1, entry);
+ prevNode = process(right, level + 1, leftOvers, leftPrev);
+
+ } else if ((returnToNode = isOr(level, leftOvers)) != null) {
+ prevNode = process(right, level + 1, leftOvers, returnToNode);
+ } else {
+ prevNode = process(right, level + 1, leftOvers, prevNode);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ final List outgoingEdges = getOutgoingEdges(rightPrev, null);
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ addRegularEdge(right, outgoingEdge.getLabel(), prevNode, outgoingEdge.to(), true);
+ }
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ setAcceptingState(leftPrev);
+ final List outgoingEdges = getOutgoingEdges(rightPrev, null);
+ for (final TransitionEdge outgoingEdge : outgoingEdges) {
+ setAcceptingState(outgoingEdge.to());
+ addRegularEdge(right, outgoingEdge.getLabel(), leftPrev, outgoingEdge.to(), true);
+ }
+ }
+ if (rightElOp != null && ("?".equals(rightElOp) || "*".equals(rightElOp))) {
+ setAcceptingState(rightPrev);
+ if (leftOvers.containsKey(level)) {
+ leftOvers.get(level).stream().filter(e -> "*".equals(e.getKey()) || "?".equals(e.getKey())).forEach(e -> setAcceptingState(e.getValue()));
+ }
+ }
+
+ } else if (!(left instanceof Order || left instanceof SimpleOrder) && !(right instanceof Order || right instanceof SimpleOrder)) {
+ StateNode leftPrev = null;
+ leftPrev = prevNode;
+ StateNode returnToNode = isOr(level, leftOvers);
+
+ final boolean leftOptional = "?".equals(leftElOp) || "*".equals(leftElOp);
+ prevNode = addRegularEdge(left, prevNode, null, leftOptional);
+
+ if (leftElOp != null && ("+".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(left, prevNode, prevNode, true);
+ }
+
+ final boolean rightoptional = "?".equals(rightElOp) || "*".equals(rightElOp);
+ if (returnToNode != null || "|".equals(orderOp)) {
+ if ("|".equals(orderOp)) {
+ addRegularEdge(right, leftPrev, prevNode, rightoptional);
+ }
+ if ((returnToNode = isOr(level, leftOvers)) != null) {
+ prevNode = addRegularEdge(right, prevNode, returnToNode, rightoptional);
+ }
+ } else {
+ prevNode = addRegularEdge(right, prevNode, null, rightoptional);
+ }
+
+ if (rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) {
+ addRegularEdge(right, prevNode, prevNode, true);
+ }
+
+ if (leftElOp != null && ("?".equals(leftElOp) || "*".equals(leftElOp))) {
+ addRegularEdge(right, leftPrev, prevNode, true);
+ }
+ }
+ }
+
+ private void setAcceptingState(final StateNode prevNode) {
+ prevNode.setAccepting(true);
+ }
+
+ private Expression getLeftMostChild(Expression ex) {
+ if (ex.getOrderEv().size() > 0) {
+ return ex;
+ }
+ if (ex.getLeft() != null) {
+ return getLeftMostChild(ex.getLeft());
+ }
+ return null;
+ }
+
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateNode.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateNode.java
new file mode 100644
index 000000000..9e0ff311e
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateNode.java
@@ -0,0 +1,112 @@
+package de.cognicrypt.order.editor.statemachine;
+
+
+public class StateNode implements java.io.Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private final String name;
+
+ private Boolean init = false;
+ private Boolean accepting = false;
+ private int hopsToAccepting = Integer.MAX_VALUE;
+
+ public StateNode(String _name) {
+ name = _name;
+ }
+
+ public StateNode(String _name, Boolean _init) {
+ this(_name);
+ init = _init;
+ }
+
+ public StateNode(String _name, Boolean _init, Boolean _accepting) {
+ this(_name, _init);
+ accepting = _accepting;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Boolean getInit() {
+ return init;
+ }
+
+ public Boolean getAccepting() {
+ return accepting;
+ }
+
+ public void setAccepting(Boolean _accepting) {
+ accepting = _accepting;
+ }
+
+ public String toString() {
+ StringBuilder nodeSB = new StringBuilder();
+ nodeSB.append("Name: ");
+ nodeSB.append(name);
+ nodeSB.append(" (");
+ if (!accepting) {
+ nodeSB.append(hopsToAccepting + "hops to ");
+ }
+ nodeSB.append("accepting)");
+ return nodeSB.toString();
+ }
+
+ public boolean isErrorState() {
+ return !accepting;
+ }
+
+ public boolean isInitialState() {
+ return init;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((accepting == null) ? 0 : accepting.hashCode());
+ result = prime * result + ((init == null) ? 0 : init.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StateNode other = (StateNode) obj;
+ if (accepting == null) {
+ if (other.accepting != null)
+ return false;
+ } else if (!accepting.equals(other.accepting))
+ return false;
+ if (init == null) {
+ if (other.init != null)
+ return false;
+ } else if (!init.equals(other.init))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ public void setHopsToAccepting(int hops) {
+ hopsToAccepting = hops;
+ }
+
+ public int getHopsToAccepting() {
+ return hopsToAccepting;
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateTransition.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateTransition.java
new file mode 100644
index 000000000..2630dfa58
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/StateTransition.java
@@ -0,0 +1,11 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.util.List;
+
+import de.darmstadt.tu.crossing.crySL.Event;
+
+public interface StateTransition{
+ State from();
+ State to();
+ Event getLabel();
+}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/TransitionEdge.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/TransitionEdge.java
new file mode 100644
index 000000000..354092759
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/statemachine/TransitionEdge.java
@@ -0,0 +1,90 @@
+package de.cognicrypt.order.editor.statemachine;
+
+import java.util.List;
+
+import de.darmstadt.tu.crossing.crySL.Event;
+
+public class TransitionEdge implements StateTransition, java.io.Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private StateNode left = null;
+ private StateNode right = null;
+ private Event method = null;
+
+ // see the implementation in CryptoAnalysis TransitionEdge
+ // may be it is required to keep it as in CryptoAnalysis.
+ public TransitionEdge(Event _method, StateNode _left, StateNode _right) {
+ left = _left;
+ right = _right;
+ method = _method;
+ }
+
+ public StateNode getLeft() {
+ return left;
+ }
+
+ public StateNode getRight() {
+ return right;
+ }
+
+ public Event getLabel() {
+ return method;
+ }
+
+ public String toString() {
+ StringBuilder edgeSB = new StringBuilder();
+ edgeSB.append("Left: ");
+ edgeSB.append(this.left.getName());
+ edgeSB.append(" ====");
+ edgeSB.append(method);
+ edgeSB.append("====> Right:");
+ edgeSB.append(this.right.getName());
+ return edgeSB.toString();
+ }
+
+ public StateNode from() {
+ return left;
+ }
+
+ public StateNode to() {
+ return right;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((method == null) ? 0 : method.hashCode());
+ result = prime * result + ((left == null) ? 0 : left.hashCode());
+ result = prime * result + ((right == null) ? 0 : right.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ TransitionEdge other = (TransitionEdge) obj;
+ if (method == null) {
+ if (other.method != null)
+ return false;
+ } else if (!method.equals(other.method))
+ return false;
+ if (left == null) {
+ if (other.left != null)
+ return false;
+ } else if (!left.equals(other.left))
+ return false;
+ if (right == null) {
+ if (other.right != null)
+ return false;
+ } else if (!right.equals(other.right))
+ return false;
+ return true;
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index bcf0a5b92..f3a9562b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,6 +95,7 @@
plugins/de.cognicrypt.staticanalyzer/
plugins/de.cognicrypt.integrator.task/
plugins/de.cognicrypt.integrator.primitive/
+ plugins/de.cognicrypt.order.editor/
features/de.cognicrypt.core.feature/
features/de.cognicrypt.codegenerator.feature/
features/de.cognicrypt.cryslhandler.feature/
From c890905bf893b0fdfc89eb8704f5adb02f2f8ad5 Mon Sep 17 00:00:00 2001
From: Anemone
Date: Sun, 5 Sep 2021 14:42:21 +0200
Subject: [PATCH 03/18] Fix edge label in Sirius description to show event
name.
Signed-off-by: Anemone
---
.../my.project.design/description/project.odesign | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
index 02170076a..b6c7aa840 100644
--- a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/description/project.odesign
@@ -14,7 +14,7 @@
From 7d110a9fcc50950ca54389776317217266045b89 Mon Sep 17 00:00:00 2001
From: Anemone
Date: Fri, 10 Sep 2021 16:12:50 +0200
Subject: [PATCH 04/18] Correct package name of Sirius Service class.
Signed-off-by: Anemone
---
.../my.project.design/src/my/project/design/Services.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
index 2fb6e08c6..9412c2ab7 100644
--- a/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
+++ b/plugins/de.cognicrypt.order.editor.sirius/my.project.design/src/my/project/design/Services.java
@@ -1,4 +1,4 @@
-package my.project.design;
+package de.cognicrypt.order.editor;
import org.eclipse.emf.ecore.EObject;
From 1195dbf96417fbbaca89efa7ee0f0ead5173c72f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anemone=20Kampk=C3=B6tter?=
Date: Sun, 3 Oct 2021 16:41:00 +0200
Subject: [PATCH 05/18] Add java service creating a border around final state.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Anemone Kampkötter
---
.../META-INF/MANIFEST.MF | 17 ++
.../build.properties | 7 +
.../description/statemachine.odesign | 57 ++++++
.../plugin.properties | 3 +
.../order.statemachine.design/plugin.xml | 10 +
.../order/statemachine/design/Activator.java | 66 +++++++
.../order/statemachine/design/Services.java | 33 ++++
.../representations.aird | 182 ++++++++++++++++++
.../model/generated/Statemachine.ecore | 6 +
.../model/generated/Statemachine.genmodel | 5 +
.../order/editor/statemachine/FinalState.java | 48 +++++
.../editor/statemachine/Statemachine.java | 13 ++
.../statemachine/impl/FinalStateImpl.java | 180 +++++++++++++++++
.../order/editor/GenerateStatemachine.mwe2 | 6 +-
.../order/editor/Statemachine.xtext | 10 +-
.../editor/parser/StatemachineParser.java | 17 ++
16 files changed, 656 insertions(+), 4 deletions(-)
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..84619df66
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: order.statemachine.design;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: order.statemachine.design.Activator
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.sirius,
+ org.eclipse.sirius.common.acceleo.aql,
+ de.cognicrypt.order.editor;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Automatic-Module-Name: order.statemachine.design
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
new file mode 100644
index 000000000..1ab7df2cb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ description/,\
+ plugin.properties,\
+ plugin.xml
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
new file mode 100644
index 000000000..3e793a90f
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
new file mode 100644
index 000000000..8d2f3aceb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
@@ -0,0 +1,3 @@
+pluginName = order.statemachine.design
+providerName = Eclipse Modeling Project
+viewpointName = MyViewpoint
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
new file mode 100644
index 000000000..8ec8ec9ab
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
new file mode 100644
index 000000000..2a90f9e98
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
@@ -0,0 +1,66 @@
+package order.statemachine.design;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+ // The plug-in ID
+ public static final String PLUGIN_ID = "order.statemachine.design";
+
+ // The shared instance
+ private static Activator plugin;
+
+ private static Set viewpoints;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ viewpoints = new HashSet();
+ viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/statemachine.odesign"));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ if (viewpoints != null) {
+ for (final Viewpoint viewpoint: viewpoints) {
+ ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+ }
+ viewpoints.clear();
+ viewpoints = null;
+ }
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
new file mode 100644
index 000000000..df6767854
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
@@ -0,0 +1,33 @@
+package order.statemachine.design;
+
+import org.eclipse.emf.ecore.EObject;
+
+import de.cognicrypt.order.editor.statemachine.State;
+
+/**
+ * The services class used by VSM.
+ */
+public class Services {
+
+ /**
+ * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods.
+ */
+ public EObject myService(EObject self, String arg) {
+ // TODO Auto-generated code
+ return self;
+ }
+
+ public int changeBorderFinalNode(EObject self) {
+
+ if(self instanceof State) {
+ State s = (State) self;
+ boolean finalNode = s.isIsFinal();
+ if(finalNode) {
+ return 5;
+ }
+ }
+
+ return 1;
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
new file mode 100644
index 000000000..fe82ee471
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
@@ -0,0 +1,182 @@
+
+
+
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AlgorithmParameters.statemachine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
index 301931d03..84a3baed8 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
@@ -7,6 +7,8 @@
eType="#//Event" containment="true"/>
+
@@ -16,9 +18,13 @@
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
index 537d7eb8a..430b5011d 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
@@ -9,6 +9,7 @@
+
@@ -17,8 +18,12 @@
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
new file mode 100644
index 000000000..fb0c0af75
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
@@ -0,0 +1,48 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Final State'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState()
+ * @model
+ * @generated
+ */
+public interface FinalState extends EObject
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // FinalState
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
index ca52c195e..7108ec754 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
@@ -18,6 +18,7 @@
*
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getEvents Events}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getStates States}
+ * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getFinalstates Finalstates}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}
*
*
@@ -51,6 +52,18 @@ public interface Statemachine extends EObject
*/
EList getStates();
+ /**
+ * Returns the value of the 'Finalstates' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.FinalState}.
+ *
+ *
+ * @return the value of the 'Finalstates' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_Finalstates()
+ * @model containment="true"
+ * @generated
+ */
+ EList getFinalstates();
+
/**
* Returns the value of the 'Transitions' containment reference list.
* The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
new file mode 100644
index 000000000..7ae08183c
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.FinalState;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ *
+ * An implementation of the model object 'Final State'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl#getName Name}
+ *
+ *
+ * @generated
+ */
+public class FinalStateImpl extends MinimalEObjectImpl.Container implements FinalState
+{
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected FinalStateImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.FINAL_STATE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.FINAL_STATE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FinalStateImpl
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2 b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
index a1d1f66c5..4e209519c 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
@@ -13,13 +13,13 @@ Workflow {
baseName = "de.cognicrypt.order.editor"
rootPath = rootPath
runtimeTest = {
- enabled = true
+ enabled = false
}
eclipsePlugin = {
- enabled = true
+ enabled = false
}
eclipsePluginTest = {
- enabled = true
+ enabled = false
}
createEclipseMetaData = true
}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
index 600f4f0da..daa58335a 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
@@ -8,6 +8,7 @@ Statemachine :
events+=Event+
'end')?
states+=State*
+ finalstates+=FinalState*
transitions+=Transition*
;
@@ -16,14 +17,21 @@ Event:
;
State:
- 'state' name=ID
+ 'state' name=ID (isFinal?='true'|'false')
transitions+=Transition*
'end'
;
+FinalState:
+ 'finalstate' name=ID
+ 'end'
+;
+
Transition:
'transition' name=ID
fromState=[State] ',' event=[Event] ',' endState=[State]
'end'
;
+
+
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
index a25ebd45e..5fcc30a4c 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
@@ -42,6 +42,7 @@
import de.darmstadt.tu.crossing.crySL.SuperType;
import de.cognicrypt.order.editor.statemachine.Event;
import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.Transition;
import de.cognicrypt.order.editor.statemachine.StateMachineGraph;
import de.cognicrypt.order.editor.statemachine.StateMachineGraphBuilder;
@@ -94,10 +95,12 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
Statemachine statemachine = StatemachineFactory.eINSTANCE.createStatemachine();
State state = null;
+ FinalState finalstate = null;
Event event = null;
//de.darmstadt.tu.crossing.statemachine.Transition transition = null;
Transition transition = null;
HashMap stateNodeMap = new HashMap();
+ HashMap finalstateNodeMap = new HashMap();
SuperType ev = null;
int counter = 0;
@@ -106,9 +109,23 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
for(StateNode s: stateNodes) {
state = (State) StatemachineFactory.eINSTANCE.createState();
state.setName("s" + s.getName());
+ if(s.getAccepting().equals(true)) {
+ state.setIsFinal(true);
+ }
+ else {
+ state.setIsFinal(false);
+ }
statemachine.getStates().add((de.cognicrypt.order.editor.statemachine.State) state);
counter++;
stateNodeMap.put(s, state);
+
+ if(s.getAccepting().equals(true)) {
+ finalstate = (FinalState) StatemachineFactory.eINSTANCE.createFinalState();
+ finalstate.setName("f" + s.getName());
+ //do not actually want to add a new node, but change the border of the current stateNode
+ statemachine.getFinalstates().add(finalstate);
+ finalstateNodeMap.put(s, finalstate);
+ }
}
//process transition edges for states and transitions
From e2fee09691743138b3945e11d854f0b9154f3a10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anemone=20Kampk=C3=B6tter?=
Date: Thu, 7 Oct 2021 15:30:56 +0200
Subject: [PATCH 06/18] Revert "Add java service creating a border around final
state."
This reverts commit 1195dbf96417fbbaca89efa7ee0f0ead5173c72f.
---
.../META-INF/MANIFEST.MF | 17 --
.../build.properties | 7 -
.../description/statemachine.odesign | 57 ------
.../plugin.properties | 3 -
.../order.statemachine.design/plugin.xml | 10 -
.../order/statemachine/design/Activator.java | 66 -------
.../order/statemachine/design/Services.java | 33 ----
.../representations.aird | 182 ------------------
.../model/generated/Statemachine.ecore | 6 -
.../model/generated/Statemachine.genmodel | 5 -
.../order/editor/statemachine/FinalState.java | 48 -----
.../editor/statemachine/Statemachine.java | 13 --
.../statemachine/impl/FinalStateImpl.java | 180 -----------------
.../order/editor/GenerateStatemachine.mwe2 | 6 +-
.../order/editor/Statemachine.xtext | 10 +-
.../editor/parser/StatemachineParser.java | 17 --
16 files changed, 4 insertions(+), 656 deletions(-)
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
delete mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
delete mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
delete mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
deleted file mode 100644
index 84619df66..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: order.statemachine.design;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: order.statemachine.design.Activator
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.sirius,
- org.eclipse.sirius.common.acceleo.aql,
- de.cognicrypt.order.editor;bundle-version="1.0.0"
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Vendor: %providerName
-Automatic-Module-Name: order.statemachine.design
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
deleted file mode 100644
index 1ab7df2cb..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- description/,\
- plugin.properties,\
- plugin.xml
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
deleted file mode 100644
index 3e793a90f..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
deleted file mode 100644
index 8d2f3aceb..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-pluginName = order.statemachine.design
-providerName = Eclipse Modeling Project
-viewpointName = MyViewpoint
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
deleted file mode 100644
index 8ec8ec9ab..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
deleted file mode 100644
index 2a90f9e98..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package order.statemachine.design;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
-import org.eclipse.sirius.viewpoint.description.Viewpoint;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
- // The plug-in ID
- public static final String PLUGIN_ID = "order.statemachine.design";
-
- // The shared instance
- private static Activator plugin;
-
- private static Set viewpoints;
-
- /**
- * The constructor
- */
- public Activator() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- viewpoints = new HashSet();
- viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/statemachine.odesign"));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- if (viewpoints != null) {
- for (final Viewpoint viewpoint: viewpoints) {
- ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
- }
- viewpoints.clear();
- viewpoints = null;
- }
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return plugin;
- }
-}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
deleted file mode 100644
index df6767854..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package order.statemachine.design;
-
-import org.eclipse.emf.ecore.EObject;
-
-import de.cognicrypt.order.editor.statemachine.State;
-
-/**
- * The services class used by VSM.
- */
-public class Services {
-
- /**
- * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods.
- */
- public EObject myService(EObject self, String arg) {
- // TODO Auto-generated code
- return self;
- }
-
- public int changeBorderFinalNode(EObject self) {
-
- if(self instanceof State) {
- State s = (State) self;
- boolean finalNode = s.isIsFinal();
- if(finalNode) {
- return 5;
- }
- }
-
- return 1;
- }
-
-}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
deleted file mode 100644
index fe82ee471..000000000
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
+++ /dev/null
@@ -1,182 +0,0 @@
-
-
-
- file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
- file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AlgorithmParameters.statemachine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KEEP_LOCATION
- KEEP_SIZE
- KEEP_RATIO
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
index 84a3baed8..301931d03 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
@@ -7,8 +7,6 @@
eType="#//Event" containment="true"/>
-
@@ -18,13 +16,9 @@
-
-
-
-
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
index 430b5011d..537d7eb8a 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
@@ -9,7 +9,6 @@
-
@@ -18,12 +17,8 @@
-
-
-
-
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
deleted file mode 100644
index fb0c0af75..000000000
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * generated by Xtext 2.25.0
- */
-package de.cognicrypt.order.editor.statemachine;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- *
- * A representation of the model object 'Final State'.
- *
- *
- *
- * The following features are supported:
- *
- *
- * - {@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}
- *
- *
- * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState()
- * @model
- * @generated
- */
-public interface FinalState extends EObject
-{
- /**
- * Returns the value of the 'Name' attribute.
- *
- *
- * @return the value of the 'Name' attribute.
- * @see #setName(String)
- * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState_Name()
- * @model
- * @generated
- */
- String getName();
-
- /**
- * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}' attribute.
- *
- *
- * @param value the new value of the 'Name' attribute.
- * @see #getName()
- * @generated
- */
- void setName(String value);
-
-} // FinalState
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
index 7108ec754..ca52c195e 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
@@ -18,7 +18,6 @@
*
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getEvents Events}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getStates States}
- * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getFinalstates Finalstates}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}
*
*
@@ -52,18 +51,6 @@ public interface Statemachine extends EObject
*/
EList getStates();
- /**
- * Returns the value of the 'Finalstates' containment reference list.
- * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.FinalState}.
- *
- *
- * @return the value of the 'Finalstates' containment reference list.
- * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_Finalstates()
- * @model containment="true"
- * @generated
- */
- EList getFinalstates();
-
/**
* Returns the value of the 'Transitions' containment reference list.
* The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
deleted file mode 100644
index 7ae08183c..000000000
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * generated by Xtext 2.25.0
- */
-package de.cognicrypt.order.editor.statemachine.impl;
-
-import de.cognicrypt.order.editor.statemachine.FinalState;
-import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
-
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-/**
- *
- * An implementation of the model object 'Final State'.
- *
- *
- * The following features are implemented:
- *
- *
- * - {@link de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl#getName Name}
- *
- *
- * @generated
- */
-public class FinalStateImpl extends MinimalEObjectImpl.Container implements FinalState
-{
- /**
- * The default value of the '{@link #getName() Name}' attribute.
- *
- *
- * @see #getName()
- * @generated
- * @ordered
- */
- protected static final String NAME_EDEFAULT = null;
-
- /**
- * The cached value of the '{@link #getName() Name}' attribute.
- *
- *
- * @see #getName()
- * @generated
- * @ordered
- */
- protected String name = NAME_EDEFAULT;
-
- /**
- *
- *
- * @generated
- */
- protected FinalStateImpl()
- {
- super();
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- protected EClass eStaticClass()
- {
- return StatemachinePackage.Literals.FINAL_STATE;
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public String getName()
- {
- return name;
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public void setName(String newName)
- {
- String oldName = name;
- name = newName;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.FINAL_STATE__NAME, oldName, name));
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public Object eGet(int featureID, boolean resolve, boolean coreType)
- {
- switch (featureID)
- {
- case StatemachinePackage.FINAL_STATE__NAME:
- return getName();
- }
- return super.eGet(featureID, resolve, coreType);
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public void eSet(int featureID, Object newValue)
- {
- switch (featureID)
- {
- case StatemachinePackage.FINAL_STATE__NAME:
- setName((String)newValue);
- return;
- }
- super.eSet(featureID, newValue);
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public void eUnset(int featureID)
- {
- switch (featureID)
- {
- case StatemachinePackage.FINAL_STATE__NAME:
- setName(NAME_EDEFAULT);
- return;
- }
- super.eUnset(featureID);
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public boolean eIsSet(int featureID)
- {
- switch (featureID)
- {
- case StatemachinePackage.FINAL_STATE__NAME:
- return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
- }
- return super.eIsSet(featureID);
- }
-
- /**
- *
- *
- * @generated
- */
- @Override
- public String toString()
- {
- if (eIsProxy()) return super.toString();
-
- StringBuilder result = new StringBuilder(super.toString());
- result.append(" (name: ");
- result.append(name);
- result.append(')');
- return result.toString();
- }
-
-} //FinalStateImpl
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2 b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
index 4e209519c..a1d1f66c5 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
@@ -13,13 +13,13 @@ Workflow {
baseName = "de.cognicrypt.order.editor"
rootPath = rootPath
runtimeTest = {
- enabled = false
+ enabled = true
}
eclipsePlugin = {
- enabled = false
+ enabled = true
}
eclipsePluginTest = {
- enabled = false
+ enabled = true
}
createEclipseMetaData = true
}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
index daa58335a..600f4f0da 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
@@ -8,7 +8,6 @@ Statemachine :
events+=Event+
'end')?
states+=State*
- finalstates+=FinalState*
transitions+=Transition*
;
@@ -17,21 +16,14 @@ Event:
;
State:
- 'state' name=ID (isFinal?='true'|'false')
+ 'state' name=ID
transitions+=Transition*
'end'
;
-FinalState:
- 'finalstate' name=ID
- 'end'
-;
-
Transition:
'transition' name=ID
fromState=[State] ',' event=[Event] ',' endState=[State]
'end'
;
-
-
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
index 5fcc30a4c..a25ebd45e 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
@@ -42,7 +42,6 @@
import de.darmstadt.tu.crossing.crySL.SuperType;
import de.cognicrypt.order.editor.statemachine.Event;
import de.cognicrypt.order.editor.statemachine.State;
-import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.Transition;
import de.cognicrypt.order.editor.statemachine.StateMachineGraph;
import de.cognicrypt.order.editor.statemachine.StateMachineGraphBuilder;
@@ -95,12 +94,10 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
Statemachine statemachine = StatemachineFactory.eINSTANCE.createStatemachine();
State state = null;
- FinalState finalstate = null;
Event event = null;
//de.darmstadt.tu.crossing.statemachine.Transition transition = null;
Transition transition = null;
HashMap stateNodeMap = new HashMap();
- HashMap finalstateNodeMap = new HashMap();
SuperType ev = null;
int counter = 0;
@@ -109,23 +106,9 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
for(StateNode s: stateNodes) {
state = (State) StatemachineFactory.eINSTANCE.createState();
state.setName("s" + s.getName());
- if(s.getAccepting().equals(true)) {
- state.setIsFinal(true);
- }
- else {
- state.setIsFinal(false);
- }
statemachine.getStates().add((de.cognicrypt.order.editor.statemachine.State) state);
counter++;
stateNodeMap.put(s, state);
-
- if(s.getAccepting().equals(true)) {
- finalstate = (FinalState) StatemachineFactory.eINSTANCE.createFinalState();
- finalstate.setName("f" + s.getName());
- //do not actually want to add a new node, but change the border of the current stateNode
- statemachine.getFinalstates().add(finalstate);
- finalstateNodeMap.put(s, finalstate);
- }
}
//process transition edges for states and transitions
From 9c3e70d27b3f4f77bc1f70fc40eee05141555930 Mon Sep 17 00:00:00 2001
From: Anemone
Date: Thu, 7 Oct 2021 15:52:49 +0200
Subject: [PATCH 07/18] Correct small spelling mistake in Readme.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Anemone Kampkötter
---
plugins/de.cognicrypt.order.editor/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/de.cognicrypt.order.editor/README.md b/plugins/de.cognicrypt.order.editor/README.md
index 8e093fb61..9f9907ad1 100644
--- a/plugins/de.cognicrypt.order.editor/README.md
+++ b/plugins/de.cognicrypt.order.editor/README.md
@@ -1,6 +1,6 @@
# CrySL Visual Order Editor
-The Order Editotr displays the usage pattern of the class as defined in the Order expression of its CrySL rule as a state machine.
+The Order Editor displays the usage pattern of the class as defined in the Order expression of its CrySL rule as a state machine.
## Set up
From 1c43b0c495b6b6f1c0504687ec0dcfe66fc4e74e Mon Sep 17 00:00:00 2001
From: Anemone
Date: Thu, 7 Oct 2021 16:48:27 +0200
Subject: [PATCH 08/18] Add style change for final state.
Signed-off-by: Anemone
---
.../META-INF/MANIFEST.MF | 17 +
.../build.properties | 7 +
.../description/statemachine.odesign | 57 +
.../plugin.properties | 3 +
.../order.statemachine.design/plugin.xml | 10 +
.../order/statemachine/design/Activator.java | 66 +
.../order/statemachine/design/Services.java | 33 +
.../representations.aird | 98 ++
plugins/de.cognicrypt.order.editor/README.md | 2 +-
.../config/config.xml | 404 +++++
.../model/generated/Statemachine.ecore | 6 +
.../model/generated/Statemachine.genmodel | 5 +
.../de.cognicrypt.order.editor/plugin.xml_gen | 10 +
.../order/editor/Statemachine.xtextbin | Bin 4869 -> 5055 bytes
.../antlr/internal/InternalStatemachine.g | 101 +-
.../internal/InternalStatemachine.tokens | 44 +-
.../internal/InternalStatemachineLexer.java | 466 ++++--
.../internal/InternalStatemachineParser.java | 1462 ++++++++++-------
.../StatemachineSemanticSequencer.java | 26 +-
.../services/StatemachineGrammarAccess.java | 98 +-
.../order/editor/statemachine/FinalState.java | 48 +
.../order/editor/statemachine/State.java | 23 +
.../editor/statemachine/Statemachine.java | 13 +
.../statemachine/StatemachineFactory.java | 9 +
.../statemachine/StatemachinePackage.java | 133 +-
.../statemachine/impl/FinalStateImpl.java | 180 ++
.../editor/statemachine/impl/StateImpl.java | 58 +
.../impl/StatemachineFactoryImpl.java | 13 +
.../statemachine/impl/StatemachineImpl.java | 40 +
.../impl/StatemachinePackageImpl.java | 66 +-
.../util/StatemachineAdapterFactory.java | 20 +
.../statemachine/util/StatemachineSwitch.java | 23 +
.../order/editor/GenerateStatemachine.mwe2 | 6 +-
.../order/editor/Statemachine.xtext | 10 +-
.../editor/parser/StatemachineParser.java | 17 +
.../.StatemachineGenerator.java._trace | Bin 414 -> 414 bytes
.../generator/.StatemachineGenerator.xtendbin | Bin 2311 -> 2308 bytes
37 files changed, 2736 insertions(+), 838 deletions(-)
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
create mode 100644 plugins/de.cognicrypt.order.editor/config/config.xml
create mode 100644 plugins/de.cognicrypt.order.editor/plugin.xml_gen
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
create mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..84619df66
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: order.statemachine.design;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: order.statemachine.design.Activator
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.sirius,
+ org.eclipse.sirius.common.acceleo.aql,
+ de.cognicrypt.order.editor;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Automatic-Module-Name: order.statemachine.design
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
new file mode 100644
index 000000000..1ab7df2cb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ description/,\
+ plugin.properties,\
+ plugin.xml
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
new file mode 100644
index 000000000..3e793a90f
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
new file mode 100644
index 000000000..8d2f3aceb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.properties
@@ -0,0 +1,3 @@
+pluginName = order.statemachine.design
+providerName = Eclipse Modeling Project
+viewpointName = MyViewpoint
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
new file mode 100644
index 000000000..8ec8ec9ab
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/plugin.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
new file mode 100644
index 000000000..2a90f9e98
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Activator.java
@@ -0,0 +1,66 @@
+package order.statemachine.design;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
+import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+ // The plug-in ID
+ public static final String PLUGIN_ID = "order.statemachine.design";
+
+ // The shared instance
+ private static Activator plugin;
+
+ private static Set viewpoints;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ viewpoints = new HashSet();
+ viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/statemachine.odesign"));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ if (viewpoints != null) {
+ for (final Viewpoint viewpoint: viewpoints) {
+ ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+ }
+ viewpoints.clear();
+ viewpoints = null;
+ }
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
new file mode 100644
index 000000000..df6767854
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
@@ -0,0 +1,33 @@
+package order.statemachine.design;
+
+import org.eclipse.emf.ecore.EObject;
+
+import de.cognicrypt.order.editor.statemachine.State;
+
+/**
+ * The services class used by VSM.
+ */
+public class Services {
+
+ /**
+ * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods.
+ */
+ public EObject myService(EObject self, String arg) {
+ // TODO Auto-generated code
+ return self;
+ }
+
+ public int changeBorderFinalNode(EObject self) {
+
+ if(self instanceof State) {
+ State s = (State) self;
+ boolean finalNode = s.isIsFinal();
+ if(finalNode) {
+ return 5;
+ }
+ }
+
+ return 1;
+ }
+
+}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
new file mode 100644
index 000000000..da9091644
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
@@ -0,0 +1,98 @@
+
+
+
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AlgorithmParameters.statemachine
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AESEngine.statemachine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/README.md b/plugins/de.cognicrypt.order.editor/README.md
index 9f9907ad1..8e093fb61 100644
--- a/plugins/de.cognicrypt.order.editor/README.md
+++ b/plugins/de.cognicrypt.order.editor/README.md
@@ -1,6 +1,6 @@
# CrySL Visual Order Editor
-The Order Editor displays the usage pattern of the class as defined in the Order expression of its CrySL rule as a state machine.
+The Order Editotr displays the usage pattern of the class as defined in the Order expression of its CrySL rule as a state machine.
## Set up
diff --git a/plugins/de.cognicrypt.order.editor/config/config.xml b/plugins/de.cognicrypt.order.editor/config/config.xml
new file mode 100644
index 000000000..ebce77feb
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/config/config.xml
@@ -0,0 +1,404 @@
+ AlgorithmParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\AlgorithmParameters.crysl
+
+ CertPathTrustManagerParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\CertPathTrustManagerParameters.crysl
+
+ Cipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\Cipher.crysl
+
+ CipherInputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\CipherInputStream.crysl
+
+ CipherOutputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\CipherOutputStream.crysl
+
+ Cookie.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\Cookie.crysl
+
+ DHGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DHGenParameterSpec.crysl
+
+ DHParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DHParameterSpec.crysl
+
+ DigestInputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DigestInputStream.crysl
+
+ DigestOutputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DigestOutputStream.crysl
+
+ DSAGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DSAGenParameterSpec.crysl
+
+ DSAParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\DSAParameterSpec.crysl
+
+ GCMParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\GCMParameterSpec.crysl
+
+ HMACParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\HMACParameterSpec.crysl
+
+ IvParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\IvParameterSpec.crysl
+
+ Key.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\Key.crysl
+
+ KeyGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyGenerator.crysl
+
+ KeyManagerFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyManagerFactory.crysl
+
+ KeyPair.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyPair.crysl
+
+ KeyPairGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyPairGenerator.crysl
+
+ KeyStore.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyStore.crysl
+
+ KeyStoreBuilderParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\KeyStoreBuilderParameters.crysl
+
+ Mac.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\Mac.crysl
+
+ MessageDigest.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\MessageDigest.crysl
+
+ PBEKeySpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\PBEKeySpec.crysl
+
+ PBEParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\PBEParameterSpec.crysl
+
+ PKIXBuilderParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\PKIXBuilderParameters.crysl
+
+ PKIXParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\PKIXParameters.crysl
+
+ RSAKeyGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\RSAKeyGenParameterSpec.crysl
+
+ SecretKey.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SecretKey.crysl
+
+ SecretKeyFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SecretKeyFactory.crysl
+
+ SecretKeySpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SecretKeySpec.crysl
+
+ SecureRandom.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SecureRandom.crysl
+
+ Signature.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\Signature.crysl
+
+ SSLContext.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SSLContext.crysl
+
+ SSLEngine.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SSLEngine.crysl
+
+ SSLParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\SSLParameters.crysl
+
+ TrustAnchor.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\TrustAnchor.crysl
+
+ TrustManagerFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\JavaCryptographicArchitecture\src\TrustManagerFactory.crysl
+
+ AEADParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\AEADParameters.crysl
+
+ AESEngine.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\AESEngine.crysl
+
+ AsymmetricCipherKeyPair.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\AsymmetricCipherKeyPair.crysl
+
+ BufferedBlockCipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\BufferedBlockCipher.crysl
+
+ CBCBlockCipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\CBCBlockCipher.crysl
+
+ ECDomainParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECDomainParameters.crysl
+
+ ECElGamalDecryptor.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECElGamalDecryptor.crysl
+
+ ECElGamalEncryptor.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECElGamalEncryptor.crysl
+
+ ECFixedTransform.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECFixedTransform.crysl
+
+ ECKeyGenerationParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECKeyGenerationParameters.crysl
+
+ ECKeyPairGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECKeyPairGenerator.crysl
+
+ ECKeyParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECKeyParameters.crysl
+
+ ECNewPublicKeyTransform.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECNewPublicKeyTransform.crysl
+
+ ECNewRandomnessTransform.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECNewRandomnessTransform.crysl
+
+ ECPair.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECPair.crysl
+
+ ECPrivateKeyParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECPrivateKeyParameters.crysl
+
+ ECPublicKeyParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ECPublicKeyParameters.crysl
+
+ GCMBlockCipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\GCMBlockCipher.crysl
+
+ HMac.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\HMac.crysl
+
+ KeyParameter.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\KeyParameter.crysl
+
+ PaddedBufferedBlockCipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\PaddedBufferedBlockCipher.crysl
+
+ ParametersWithIV.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ParametersWithIV.crysl
+
+ ParametersWithRandom.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\ParametersWithRandom.crysl
+
+ RSADigestSigner.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSADigestSigner.crysl
+
+ RSAEngine.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSAEngine.crysl
+
+ RSAKeyGenerationParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSAKeyGenerationParameters.crysl
+
+ RSAKeyPairGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSAKeyPairGenerator.crysl
+
+ RSAKeyParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSAKeyParameters.crysl
+
+ RSAPrivateCrtKeyParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\RSAPrivateCrtKeyParameters.crysl
+
+ SecureRandom.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\SecureRandom.crysl
+
+ SHA256Digest.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle\src\SHA256Digest.crysl
+
+ AlgorithmParameterGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\AlgorithmParameterGenerator.crysl
+
+ AlgorithmParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\AlgorithmParameters.crysl
+
+ CertificateFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\CertificateFactory.crysl
+
+ CertPathTrustManagerParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\CertPathTrustManagerParameters.crysl
+
+ Cipher.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\Cipher.crysl
+
+ CipherInputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\CipherInputStream.crysl
+
+ CipherOutputStream.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\CipherOutputStream.crysl
+
+ DHGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\DHGenParameterSpec.crysl
+
+ DHParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\DHParameterSpec.crysl
+
+ DSAGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\DSAGenParameterSpec.crysl
+
+ DSAParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\DSAParameterSpec.crysl
+
+ GCMParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\GCMParameterSpec.crysl
+
+ HMACParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\HMACParameterSpec.crysl
+
+ IvParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\IvParameterSpec.crysl
+
+ Key.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\Key.crysl
+
+ KeyAgreement.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyAgreement.crysl
+
+ KeyFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyFactory.crysl
+
+ KeyGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyGenerator.crysl
+
+ KeyManagerFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyManagerFactory.crysl
+
+ KeyPair.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyPair.crysl
+
+ KeyPairGenerator.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyPairGenerator.crysl
+
+ KeyStore.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyStore.crysl
+
+ KeyStoreBuilderParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\KeyStoreBuilderParameters.crysl
+
+ Mac.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\Mac.crysl
+
+ MessageDigest.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\MessageDigest.crysl
+
+ PBEKeySpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\PBEKeySpec.crysl
+
+ PBEParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\PBEParameterSpec.crysl
+
+ PKIXBuilderParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\PKIXBuilderParameters.crysl
+
+ PKIXParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\PKIXParameters.crysl
+
+ RSAKeyGenParameterSpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\RSAKeyGenParameterSpec.crysl
+
+ SecretKey.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SecretKey.crysl
+
+ SecretKeyFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SecretKeyFactory.crysl
+
+ SecretKeySpec.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SecretKeySpec.crysl
+
+ SecureRandom.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SecureRandom.crysl
+
+ Signature.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\Signature.crysl
+
+ SSLContext.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SSLContext.crysl
+
+ SSLEngine.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SSLEngine.crysl
+
+ SSLParameters.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\SSLParameters.crysl
+
+ TrustAnchor.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\TrustAnchor.crysl
+
+ TrustManagerFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\BouncyCastle-JCA\src\TrustManagerFactory.crysl
+
+ AeadFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\AeadFactory.crysl
+
+ AeadKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\AeadKeyTemplates.crysl
+
+ AeadPrimitive.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\AeadPrimitive.crysl
+
+ DeterministicAead.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\DeterministicAead.crysl
+
+ DeterministicAeadFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\DeterministicAeadFactory.crysl
+
+ DeterministicAeadKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\DeterministicAeadKeyTemplates.crysl
+
+ HybridDecrypt.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\HybridDecrypt.crysl
+
+ HybridDecryptFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\HybridDecryptFactory.crysl
+
+ HybridEncrypt.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\HybridEncrypt.crysl
+
+ HybridEncryptFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\HybridEncryptFactory.crysl
+
+ HybridKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\HybridKeyTemplates.crysl
+
+ KeysetHandle.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\KeysetHandle.crysl
+
+ KeyTemplate.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\KeyTemplate.crysl
+
+ MacFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\MacFactory.crysl
+
+ MacKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\MacKeyTemplates.crysl
+
+ MacPrimitive.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\MacPrimitive.crysl
+
+ PublicKeySign.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\PublicKeySign.crysl
+
+ PublicKeySignFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\PublicKeySignFactory.crysl
+
+ PublicKeyVerify.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\PublicKeyVerify.crysl
+
+ PublicKeyVerifyFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\PublicKeyVerifyFactory.crysl
+
+ SignatureKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\SignatureKeyTemplates.crysl
+
+ StreamingAead.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\StreamingAead.crysl
+
+ StreamingAeadFactory.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\StreamingAeadFactory.crysl
+
+ StreamingAeadKeyTemplates.crysl
+ C:\Users\T440s\git\Crypto-API-Rules\Tink\src\StreamingAeadKeyTemplates.crysl
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
index 301931d03..84a3baed8 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
@@ -7,6 +7,8 @@
eType="#//Event" containment="true"/>
+
@@ -16,9 +18,13 @@
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
index 537d7eb8a..430b5011d 100644
--- a/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
+++ b/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.genmodel
@@ -9,6 +9,7 @@
+
@@ -17,8 +18,12 @@
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/plugin.xml_gen b/plugins/de.cognicrypt.order.editor/plugin.xml_gen
new file mode 100644
index 000000000..2a656bbbf
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/plugin.xml_gen
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/Statemachine.xtextbin b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/Statemachine.xtextbin
index 2dab2b3625b02ad893d929c00181a605ef87e29e..0ab1405da2dfe5e86ee775dc0ae9b58ea2277e98 100644
GIT binary patch
delta 553
zcmZ{h%TB^T6ox%Bok1wX>H`=zY7`UV4e)|^yx?6_K;1U6Bu!vQXm#6_YZpF*Ti?LP
z@ijct4ptU+G3m^i@Bjb&^Sbc0_^BL_?*peo>xc7A>)Z5vBm~D*$csroX!y$QNnWpI
za1Epo;qci5z;*hUUAGtL%?9KdTNe3n=&HaE{ecQ3FA}i{w!kvvnBD#zajXDmIK#2Z
z_=G5wO6d$N+=7gVvbat9cB%)sLve(1`<`SZyi3AWa<0*7t~(s`TcH~!qdh1HtQ(6W
zNZe2E0wQU$6~F_6r1#>fFxEQMz>xvw2sn;LM8gm#L}Wenl)9X1=BkhI~p=_
zvpO0vaxrm-z@?ZSjTxDl9EF%2O_-P&Sb6pJ5ps+yj;4(4telQ!jBKpj2;&$X%^7)E
zS@RNeQ`wk+=2`&FwP0j)v;>NBr4{AZ=LVM~mO$jJ7'=19
-'>'=21
-'?'=23
-'['=15
-']'=16
+'&'=28
+'('=20
+')'=21
+'*'=30
+','=17
+'.'=25
+';'=34
+'<'=23
+'=>'=22
+'>'=24
+'?'=26
+'['=18
+']'=19
'end'=11
'events'=10
-'extends'=24
-'extension'=30
-'import'=28
+'extends'=27
+'extension'=33
+'false'=14
+'finalstate'=15
+'import'=31
'state'=12
-'static'=29
-'super'=26
-'transition'=13
+'static'=32
+'super'=29
+'transition'=16
+'true'=13
RULE_ANY_OTHER=9
RULE_ID=4
RULE_ML_COMMENT=6
@@ -48,3 +51,6 @@ T__28=28
T__29=29
T__30=30
T__31=31
+T__32=32
+T__33=33
+T__34=34
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
index 2ca8a9646..6623fe5a5 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineLexer.java
@@ -20,13 +20,16 @@ public class InternalStatemachineLexer extends Lexer {
public static final int T__17=17;
public static final int T__18=18;
public static final int T__11=11;
+ public static final int T__33=33;
public static final int T__12=12;
+ public static final int T__34=34;
public static final int T__13=13;
public static final int T__14=14;
public static final int EOF=-1;
public static final int T__30=30;
public static final int T__31=31;
public static final int T__10=10;
+ public static final int T__32=32;
public static final int RULE_ID=4;
public static final int RULE_WS=8;
public static final int RULE_ANY_OTHER=9;
@@ -123,10 +126,10 @@ public final void mT__13() throws RecognitionException {
try {
int _type = T__13;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:14:7: ( 'transition' )
- // InternalStatemachine.g:14:9: 'transition'
+ // InternalStatemachine.g:14:7: ( 'true' )
+ // InternalStatemachine.g:14:9: 'true'
{
- match("transition");
+ match("true");
}
@@ -144,10 +147,11 @@ public final void mT__14() throws RecognitionException {
try {
int _type = T__14;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:15:7: ( ',' )
- // InternalStatemachine.g:15:9: ','
+ // InternalStatemachine.g:15:7: ( 'false' )
+ // InternalStatemachine.g:15:9: 'false'
{
- match(',');
+ match("false");
+
}
@@ -164,10 +168,11 @@ public final void mT__15() throws RecognitionException {
try {
int _type = T__15;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:16:7: ( '[' )
- // InternalStatemachine.g:16:9: '['
+ // InternalStatemachine.g:16:7: ( 'finalstate' )
+ // InternalStatemachine.g:16:9: 'finalstate'
{
- match('[');
+ match("finalstate");
+
}
@@ -184,10 +189,11 @@ public final void mT__16() throws RecognitionException {
try {
int _type = T__16;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:17:7: ( ']' )
- // InternalStatemachine.g:17:9: ']'
+ // InternalStatemachine.g:17:7: ( 'transition' )
+ // InternalStatemachine.g:17:9: 'transition'
{
- match(']');
+ match("transition");
+
}
@@ -204,10 +210,10 @@ public final void mT__17() throws RecognitionException {
try {
int _type = T__17;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:18:7: ( '(' )
- // InternalStatemachine.g:18:9: '('
+ // InternalStatemachine.g:18:7: ( ',' )
+ // InternalStatemachine.g:18:9: ','
{
- match('(');
+ match(',');
}
@@ -224,10 +230,10 @@ public final void mT__18() throws RecognitionException {
try {
int _type = T__18;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:19:7: ( ')' )
- // InternalStatemachine.g:19:9: ')'
+ // InternalStatemachine.g:19:7: ( '[' )
+ // InternalStatemachine.g:19:9: '['
{
- match(')');
+ match('[');
}
@@ -244,11 +250,10 @@ public final void mT__19() throws RecognitionException {
try {
int _type = T__19;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:20:7: ( '=>' )
- // InternalStatemachine.g:20:9: '=>'
+ // InternalStatemachine.g:20:7: ( ']' )
+ // InternalStatemachine.g:20:9: ']'
{
- match("=>");
-
+ match(']');
}
@@ -265,10 +270,10 @@ public final void mT__20() throws RecognitionException {
try {
int _type = T__20;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:21:7: ( '<' )
- // InternalStatemachine.g:21:9: '<'
+ // InternalStatemachine.g:21:7: ( '(' )
+ // InternalStatemachine.g:21:9: '('
{
- match('<');
+ match('(');
}
@@ -285,10 +290,10 @@ public final void mT__21() throws RecognitionException {
try {
int _type = T__21;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:22:7: ( '>' )
- // InternalStatemachine.g:22:9: '>'
+ // InternalStatemachine.g:22:7: ( ')' )
+ // InternalStatemachine.g:22:9: ')'
{
- match('>');
+ match(')');
}
@@ -305,10 +310,11 @@ public final void mT__22() throws RecognitionException {
try {
int _type = T__22;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:23:7: ( '.' )
- // InternalStatemachine.g:23:9: '.'
+ // InternalStatemachine.g:23:7: ( '=>' )
+ // InternalStatemachine.g:23:9: '=>'
{
- match('.');
+ match("=>");
+
}
@@ -325,10 +331,10 @@ public final void mT__23() throws RecognitionException {
try {
int _type = T__23;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:24:7: ( '?' )
- // InternalStatemachine.g:24:9: '?'
+ // InternalStatemachine.g:24:7: ( '<' )
+ // InternalStatemachine.g:24:9: '<'
{
- match('?');
+ match('<');
}
@@ -345,11 +351,10 @@ public final void mT__24() throws RecognitionException {
try {
int _type = T__24;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:25:7: ( 'extends' )
- // InternalStatemachine.g:25:9: 'extends'
+ // InternalStatemachine.g:25:7: ( '>' )
+ // InternalStatemachine.g:25:9: '>'
{
- match("extends");
-
+ match('>');
}
@@ -366,10 +371,10 @@ public final void mT__25() throws RecognitionException {
try {
int _type = T__25;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:26:7: ( '&' )
- // InternalStatemachine.g:26:9: '&'
+ // InternalStatemachine.g:26:7: ( '.' )
+ // InternalStatemachine.g:26:9: '.'
{
- match('&');
+ match('.');
}
@@ -386,11 +391,10 @@ public final void mT__26() throws RecognitionException {
try {
int _type = T__26;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:27:7: ( 'super' )
- // InternalStatemachine.g:27:9: 'super'
+ // InternalStatemachine.g:27:7: ( '?' )
+ // InternalStatemachine.g:27:9: '?'
{
- match("super");
-
+ match('?');
}
@@ -407,10 +411,11 @@ public final void mT__27() throws RecognitionException {
try {
int _type = T__27;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:28:7: ( '*' )
- // InternalStatemachine.g:28:9: '*'
+ // InternalStatemachine.g:28:7: ( 'extends' )
+ // InternalStatemachine.g:28:9: 'extends'
{
- match('*');
+ match("extends");
+
}
@@ -427,11 +432,10 @@ public final void mT__28() throws RecognitionException {
try {
int _type = T__28;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:29:7: ( 'import' )
- // InternalStatemachine.g:29:9: 'import'
+ // InternalStatemachine.g:29:7: ( '&' )
+ // InternalStatemachine.g:29:9: '&'
{
- match("import");
-
+ match('&');
}
@@ -448,10 +452,10 @@ public final void mT__29() throws RecognitionException {
try {
int _type = T__29;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:30:7: ( 'static' )
- // InternalStatemachine.g:30:9: 'static'
+ // InternalStatemachine.g:30:7: ( 'super' )
+ // InternalStatemachine.g:30:9: 'super'
{
- match("static");
+ match("super");
}
@@ -469,11 +473,10 @@ public final void mT__30() throws RecognitionException {
try {
int _type = T__30;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:31:7: ( 'extension' )
- // InternalStatemachine.g:31:9: 'extension'
+ // InternalStatemachine.g:31:7: ( '*' )
+ // InternalStatemachine.g:31:9: '*'
{
- match("extension");
-
+ match('*');
}
@@ -490,10 +493,11 @@ public final void mT__31() throws RecognitionException {
try {
int _type = T__31;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:32:7: ( ';' )
- // InternalStatemachine.g:32:9: ';'
+ // InternalStatemachine.g:32:7: ( 'import' )
+ // InternalStatemachine.g:32:9: 'import'
{
- match(';');
+ match("import");
+
}
@@ -505,15 +509,77 @@ public final void mT__31() throws RecognitionException {
}
// $ANTLR end "T__31"
+ // $ANTLR start "T__32"
+ public final void mT__32() throws RecognitionException {
+ try {
+ int _type = T__32;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:33:7: ( 'static' )
+ // InternalStatemachine.g:33:9: 'static'
+ {
+ match("static");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__32"
+
+ // $ANTLR start "T__33"
+ public final void mT__33() throws RecognitionException {
+ try {
+ int _type = T__33;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:34:7: ( 'extension' )
+ // InternalStatemachine.g:34:9: 'extension'
+ {
+ match("extension");
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__33"
+
+ // $ANTLR start "T__34"
+ public final void mT__34() throws RecognitionException {
+ try {
+ int _type = T__34;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // InternalStatemachine.g:35:7: ( ';' )
+ // InternalStatemachine.g:35:9: ';'
+ {
+ match(';');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end "T__34"
+
// $ANTLR start "RULE_ID"
public final void mRULE_ID() throws RecognitionException {
try {
int _type = RULE_ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1354:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
- // InternalStatemachine.g:1354:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+ // InternalStatemachine.g:1439:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+ // InternalStatemachine.g:1439:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
{
- // InternalStatemachine.g:1354:11: ( '^' )?
+ // InternalStatemachine.g:1439:11: ( '^' )?
int alt1=2;
int LA1_0 = input.LA(1);
@@ -522,7 +588,7 @@ public final void mRULE_ID() throws RecognitionException {
}
switch (alt1) {
case 1 :
- // InternalStatemachine.g:1354:11: '^'
+ // InternalStatemachine.g:1439:11: '^'
{
match('^');
@@ -540,7 +606,7 @@ public final void mRULE_ID() throws RecognitionException {
recover(mse);
throw mse;}
- // InternalStatemachine.g:1354:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+ // InternalStatemachine.g:1439:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
loop2:
do {
int alt2=2;
@@ -589,10 +655,10 @@ public final void mRULE_STRING() throws RecognitionException {
try {
int _type = RULE_STRING;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1356:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
- // InternalStatemachine.g:1356:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+ // InternalStatemachine.g:1441:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+ // InternalStatemachine.g:1441:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
{
- // InternalStatemachine.g:1356:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+ // InternalStatemachine.g:1441:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
int alt7=2;
int LA7_0 = input.LA(1);
@@ -610,10 +676,10 @@ else if ( (LA7_0=='\'') ) {
}
switch (alt7) {
case 1 :
- // InternalStatemachine.g:1356:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+ // InternalStatemachine.g:1441:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
{
match('\"');
- // InternalStatemachine.g:1356:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+ // InternalStatemachine.g:1441:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
loop3:
do {
int alt3=3;
@@ -629,7 +695,7 @@ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=
switch (alt3) {
case 1 :
- // InternalStatemachine.g:1356:21: '\\\\' .
+ // InternalStatemachine.g:1441:21: '\\\\' .
{
match('\\');
matchAny();
@@ -637,7 +703,7 @@ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=
}
break;
case 2 :
- // InternalStatemachine.g:1356:28: ~ ( ( '\\\\' | '\"' ) )
+ // InternalStatemachine.g:1441:28: ~ ( ( '\\\\' | '\"' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@@ -657,7 +723,7 @@ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=
}
} while (true);
- // InternalStatemachine.g:1356:44: ( '\"' )?
+ // InternalStatemachine.g:1441:44: ( '\"' )?
int alt4=2;
int LA4_0 = input.LA(1);
@@ -666,7 +732,7 @@ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=
}
switch (alt4) {
case 1 :
- // InternalStatemachine.g:1356:44: '\"'
+ // InternalStatemachine.g:1441:44: '\"'
{
match('\"');
@@ -679,10 +745,10 @@ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=
}
break;
case 2 :
- // InternalStatemachine.g:1356:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+ // InternalStatemachine.g:1441:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
{
match('\'');
- // InternalStatemachine.g:1356:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+ // InternalStatemachine.g:1441:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
loop5:
do {
int alt5=3;
@@ -698,7 +764,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=
switch (alt5) {
case 1 :
- // InternalStatemachine.g:1356:55: '\\\\' .
+ // InternalStatemachine.g:1441:55: '\\\\' .
{
match('\\');
matchAny();
@@ -706,7 +772,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=
}
break;
case 2 :
- // InternalStatemachine.g:1356:62: ~ ( ( '\\\\' | '\\'' ) )
+ // InternalStatemachine.g:1441:62: ~ ( ( '\\\\' | '\\'' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@@ -726,7 +792,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=
}
} while (true);
- // InternalStatemachine.g:1356:79: ( '\\'' )?
+ // InternalStatemachine.g:1441:79: ( '\\'' )?
int alt6=2;
int LA6_0 = input.LA(1);
@@ -735,7 +801,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=
}
switch (alt6) {
case 1 :
- // InternalStatemachine.g:1356:79: '\\''
+ // InternalStatemachine.g:1441:79: '\\''
{
match('\'');
@@ -766,12 +832,12 @@ public final void mRULE_ML_COMMENT() throws RecognitionException {
try {
int _type = RULE_ML_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1358:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
- // InternalStatemachine.g:1358:19: '/*' ( options {greedy=false; } : . )* '*/'
+ // InternalStatemachine.g:1443:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // InternalStatemachine.g:1443:19: '/*' ( options {greedy=false; } : . )* '*/'
{
match("/*");
- // InternalStatemachine.g:1358:24: ( options {greedy=false; } : . )*
+ // InternalStatemachine.g:1443:24: ( options {greedy=false; } : . )*
loop8:
do {
int alt8=2;
@@ -796,7 +862,7 @@ else if ( ((LA8_0>='\u0000' && LA8_0<=')')||(LA8_0>='+' && LA8_0<='\uFFFF')) ) {
switch (alt8) {
case 1 :
- // InternalStatemachine.g:1358:52: .
+ // InternalStatemachine.g:1443:52: .
{
matchAny();
@@ -826,12 +892,12 @@ public final void mRULE_SL_COMMENT() throws RecognitionException {
try {
int _type = RULE_SL_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1360:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
- // InternalStatemachine.g:1360:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+ // InternalStatemachine.g:1445:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+ // InternalStatemachine.g:1445:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
{
match("//");
- // InternalStatemachine.g:1360:24: (~ ( ( '\\n' | '\\r' ) ) )*
+ // InternalStatemachine.g:1445:24: (~ ( ( '\\n' | '\\r' ) ) )*
loop9:
do {
int alt9=2;
@@ -844,7 +910,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException {
switch (alt9) {
case 1 :
- // InternalStatemachine.g:1360:24: ~ ( ( '\\n' | '\\r' ) )
+ // InternalStatemachine.g:1445:24: ~ ( ( '\\n' | '\\r' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
input.consume();
@@ -864,7 +930,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException {
}
} while (true);
- // InternalStatemachine.g:1360:40: ( ( '\\r' )? '\\n' )?
+ // InternalStatemachine.g:1445:40: ( ( '\\r' )? '\\n' )?
int alt11=2;
int LA11_0 = input.LA(1);
@@ -873,9 +939,9 @@ public final void mRULE_SL_COMMENT() throws RecognitionException {
}
switch (alt11) {
case 1 :
- // InternalStatemachine.g:1360:41: ( '\\r' )? '\\n'
+ // InternalStatemachine.g:1445:41: ( '\\r' )? '\\n'
{
- // InternalStatemachine.g:1360:41: ( '\\r' )?
+ // InternalStatemachine.g:1445:41: ( '\\r' )?
int alt10=2;
int LA10_0 = input.LA(1);
@@ -884,7 +950,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException {
}
switch (alt10) {
case 1 :
- // InternalStatemachine.g:1360:41: '\\r'
+ // InternalStatemachine.g:1445:41: '\\r'
{
match('\r');
@@ -916,10 +982,10 @@ public final void mRULE_WS() throws RecognitionException {
try {
int _type = RULE_WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1362:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
- // InternalStatemachine.g:1362:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // InternalStatemachine.g:1447:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // InternalStatemachine.g:1447:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
- // InternalStatemachine.g:1362:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // InternalStatemachine.g:1447:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt12=0;
loop12:
do {
@@ -973,8 +1039,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException {
try {
int _type = RULE_ANY_OTHER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // InternalStatemachine.g:1364:16: ( . )
- // InternalStatemachine.g:1364:18: .
+ // InternalStatemachine.g:1449:16: ( . )
+ // InternalStatemachine.g:1449:18: .
{
matchAny();
@@ -989,8 +1055,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException {
// $ANTLR end "RULE_ANY_OTHER"
public void mTokens() throws RecognitionException {
- // InternalStatemachine.g:1:8: ( T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
- int alt13=28;
+ // InternalStatemachine.g:1:8: ( T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+ int alt13=31;
alt13 = dfa13.predict(input);
switch (alt13) {
case 1 :
@@ -1148,42 +1214,63 @@ public void mTokens() throws RecognitionException {
}
break;
case 23 :
- // InternalStatemachine.g:1:142: RULE_ID
+ // InternalStatemachine.g:1:142: T__32
{
- mRULE_ID();
+ mT__32();
}
break;
case 24 :
- // InternalStatemachine.g:1:150: RULE_STRING
+ // InternalStatemachine.g:1:148: T__33
{
- mRULE_STRING();
+ mT__33();
}
break;
case 25 :
- // InternalStatemachine.g:1:162: RULE_ML_COMMENT
+ // InternalStatemachine.g:1:154: T__34
{
- mRULE_ML_COMMENT();
+ mT__34();
}
break;
case 26 :
- // InternalStatemachine.g:1:178: RULE_SL_COMMENT
+ // InternalStatemachine.g:1:160: RULE_ID
{
- mRULE_SL_COMMENT();
+ mRULE_ID();
}
break;
case 27 :
- // InternalStatemachine.g:1:194: RULE_WS
+ // InternalStatemachine.g:1:168: RULE_STRING
{
- mRULE_WS();
+ mRULE_STRING();
}
break;
case 28 :
- // InternalStatemachine.g:1:202: RULE_ANY_OTHER
+ // InternalStatemachine.g:1:180: RULE_ML_COMMENT
+ {
+ mRULE_ML_COMMENT();
+
+ }
+ break;
+ case 29 :
+ // InternalStatemachine.g:1:196: RULE_SL_COMMENT
+ {
+ mRULE_SL_COMMENT();
+
+ }
+ break;
+ case 30 :
+ // InternalStatemachine.g:1:212: RULE_WS
+ {
+ mRULE_WS();
+
+ }
+ break;
+ case 31 :
+ // InternalStatemachine.g:1:220: RULE_ANY_OTHER
{
mRULE_ANY_OTHER();
@@ -1197,51 +1284,53 @@ public void mTokens() throws RecognitionException {
protected DFA13 dfa13 = new DFA13(this);
static final String DFA13_eotS =
- "\1\uffff\3\34\5\uffff\1\30\6\uffff\1\34\1\uffff\1\30\3\uffff\1\30\2\uffff\3\34\1\uffff\3\34\14\uffff\1\34\5\uffff\1\34\1\72\6\34\1\uffff\7\34\1\112\1\34\1\114\2\34\1\117\2\34\1\uffff\1\122\1\uffff\1\34\1\124\1\uffff\1\125\1\34\1\uffff\1\34\2\uffff\2\34\1\132\1\34\1\uffff\1\134\1\uffff";
+ "\1\uffff\4\35\5\uffff\1\31\6\uffff\1\35\1\uffff\1\31\3\uffff\1\31\2\uffff\3\35\1\uffff\5\35\14\uffff\1\35\5\uffff\1\35\1\100\11\35\1\uffff\3\35\1\116\6\35\1\126\1\35\1\130\1\uffff\1\35\1\132\2\35\1\135\2\35\1\uffff\1\140\1\uffff\1\35\1\uffff\1\35\1\143\1\uffff\1\144\1\35\1\uffff\2\35\2\uffff\3\35\1\153\2\35\1\uffff\1\156\1\157\2\uffff";
static final String DFA13_eofS =
- "\135\uffff";
+ "\160\uffff";
static final String DFA13_minS =
- "\1\0\1\156\1\164\1\162\5\uffff\1\76\6\uffff\1\155\1\uffff\1\44\3\uffff\1\52\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\141\14\uffff\1\160\5\uffff\1\156\1\44\1\145\1\164\1\145\1\156\1\157\1\164\1\uffff\1\156\1\145\1\162\1\163\1\162\1\163\1\144\1\44\1\143\1\44\1\151\1\164\1\44\1\163\1\151\1\uffff\1\44\1\uffff\1\164\1\44\1\uffff\1\44\1\157\1\uffff\1\151\2\uffff\1\156\1\157\1\44\1\156\1\uffff\1\44\1\uffff";
+ "\1\0\1\156\1\164\1\162\1\141\5\uffff\1\76\6\uffff\1\155\1\uffff\1\44\3\uffff\1\52\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\141\1\154\1\156\14\uffff\1\160\5\uffff\1\156\1\44\1\145\1\164\2\145\1\156\1\163\1\141\1\157\1\164\1\uffff\1\156\1\145\1\162\1\44\1\163\1\145\1\154\1\162\1\163\1\144\1\44\1\143\1\44\1\uffff\1\151\1\44\1\163\1\164\1\44\1\163\1\151\1\uffff\1\44\1\uffff\1\164\1\uffff\1\164\1\44\1\uffff\1\44\1\157\1\uffff\1\151\1\141\2\uffff\1\156\1\157\1\164\1\44\1\156\1\145\1\uffff\2\44\2\uffff";
static final String DFA13_maxS =
- "\1\uffff\1\170\1\165\1\162\5\uffff\1\76\6\uffff\1\155\1\uffff\1\172\3\uffff\1\57\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\141\14\uffff\1\160\5\uffff\1\156\1\172\1\145\1\164\1\145\1\156\1\157\1\164\1\uffff\1\156\1\151\1\162\1\163\1\162\2\163\1\172\1\143\1\172\1\151\1\164\1\172\1\163\1\151\1\uffff\1\172\1\uffff\1\164\1\172\1\uffff\1\172\1\157\1\uffff\1\151\2\uffff\1\156\1\157\1\172\1\156\1\uffff\1\172\1\uffff";
+ "\1\uffff\1\170\1\165\1\162\1\151\5\uffff\1\76\6\uffff\1\155\1\uffff\1\172\3\uffff\1\57\2\uffff\1\145\1\144\1\164\1\uffff\1\141\1\160\1\165\1\154\1\156\14\uffff\1\160\5\uffff\1\156\1\172\1\145\1\164\2\145\1\156\1\163\1\141\1\157\1\164\1\uffff\1\156\1\151\1\162\1\172\1\163\1\145\1\154\1\162\2\163\1\172\1\143\1\172\1\uffff\1\151\1\172\1\163\1\164\1\172\1\163\1\151\1\uffff\1\172\1\uffff\1\164\1\uffff\1\164\1\172\1\uffff\1\172\1\157\1\uffff\1\151\1\141\2\uffff\1\156\1\157\1\164\1\172\1\156\1\145\1\uffff\2\172\2\uffff";
static final String DFA13_acceptS =
- "\4\uffff\1\5\1\6\1\7\1\10\1\11\1\uffff\1\13\1\14\1\15\1\16\1\20\1\22\1\uffff\1\26\1\uffff\1\27\2\30\1\uffff\1\33\1\34\3\uffff\1\27\3\uffff\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\20\1\22\1\uffff\1\26\1\30\1\31\1\32\1\33\10\uffff\1\2\17\uffff\1\3\1\uffff\1\21\2\uffff\1\1\2\uffff\1\24\1\uffff\1\23\1\17\4\uffff\1\25\1\uffff\1\4";
+ "\5\uffff\1\10\1\11\1\12\1\13\1\14\1\uffff\1\16\1\17\1\20\1\21\1\23\1\25\1\uffff\1\31\1\uffff\1\32\2\33\1\uffff\1\36\1\37\3\uffff\1\32\5\uffff\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\23\1\25\1\uffff\1\31\1\33\1\34\1\35\1\36\13\uffff\1\2\15\uffff\1\4\7\uffff\1\3\1\uffff\1\24\1\uffff\1\5\2\uffff\1\1\2\uffff\1\27\2\uffff\1\26\1\22\6\uffff\1\30\2\uffff\1\7\1\6";
static final String DFA13_specialS =
- "\1\0\134\uffff}>";
+ "\1\0\157\uffff}>";
static final String[] DFA13_transitionS = {
- "\11\30\2\27\2\30\1\27\22\30\1\27\1\30\1\24\1\30\1\23\1\30\1\16\1\25\1\7\1\10\1\17\1\30\1\4\1\30\1\14\1\26\13\30\1\21\1\12\1\11\1\13\1\15\1\30\32\23\1\5\1\30\1\6\1\22\1\23\1\30\4\23\1\1\3\23\1\20\11\23\1\2\1\3\6\23\uff85\30",
- "\1\32\7\uffff\1\31\1\uffff\1\33",
- "\1\35\1\36",
- "\1\37",
- "",
+ "\11\31\2\30\2\31\1\30\22\31\1\30\1\31\1\25\1\31\1\24\1\31\1\17\1\26\1\10\1\11\1\20\1\31\1\5\1\31\1\15\1\27\13\31\1\22\1\13\1\12\1\14\1\16\1\31\32\24\1\6\1\31\1\7\1\23\1\24\1\31\4\24\1\1\1\4\2\24\1\21\11\24\1\2\1\3\6\24\uff85\31",
+ "\1\33\7\uffff\1\32\1\uffff\1\34",
+ "\1\36\1\37",
+ "\1\40",
+ "\1\41\7\uffff\1\42",
"",
"",
"",
"",
- "\1\45",
"",
+ "\1\50",
"",
"",
"",
"",
"",
- "\1\54",
"",
- "\1\34\34\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\57",
"",
+ "\1\35\34\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"",
"",
- "\1\57\4\uffff\1\60",
"",
+ "\1\62\4\uffff\1\63",
"",
- "\1\62",
- "\1\63",
- "\1\64",
"",
"\1\65",
"\1\66",
"\1\67",
"",
+ "\1\70",
+ "\1\71",
+ "\1\73\23\uffff\1\72",
+ "\1\74",
+ "\1\75",
"",
"",
"",
@@ -1253,54 +1342,71 @@ public void mTokens() throws RecognitionException {
"",
"",
"",
- "\1\70",
"",
+ "\1\76",
"",
"",
"",
"",
- "\1\71",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
- "\1\73",
- "\1\74",
- "\1\75",
- "\1\76",
- "\1\77",
- "\1\100",
"",
+ "\1\77",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"\1\101",
- "\1\102\3\uffff\1\103",
+ "\1\102",
+ "\1\103",
"\1\104",
"\1\105",
"\1\106",
"\1\107",
- "\1\110\16\uffff\1\111",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
- "\1\113",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\110",
+ "\1\111",
+ "",
+ "\1\112",
+ "\1\113\3\uffff\1\114",
"\1\115",
- "\1\116",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\117",
"\1\120",
"\1\121",
+ "\1\122",
+ "\1\123",
+ "\1\124\16\uffff\1\125",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\127",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\131",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\133",
+ "\1\134",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\136",
+ "\1\137",
"",
- "\1\123",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
- "\1\126",
+ "\1\141",
"",
- "\1\127",
+ "\1\142",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\145",
"",
- "\1\130",
- "\1\131",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
- "\1\133",
+ "\1\146",
+ "\1\147",
+ "",
+ "",
+ "\1\150",
+ "\1\151",
+ "\1\152",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\154",
+ "\1\155",
+ "",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
+ "\1\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35",
"",
- "\1\34\13\uffff\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
""
};
@@ -1334,7 +1440,7 @@ public DFA13(BaseRecognizer recognizer) {
this.transition = DFA13_transition;
}
public String getDescription() {
- return "1:1: Tokens : ( T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+ return "1:1: Tokens : ( T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
}
public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
IntStream input = _input;
@@ -1350,47 +1456,49 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc
else if ( (LA13_0=='t') ) {s = 3;}
- else if ( (LA13_0==',') ) {s = 4;}
+ else if ( (LA13_0=='f') ) {s = 4;}
+
+ else if ( (LA13_0==',') ) {s = 5;}
- else if ( (LA13_0=='[') ) {s = 5;}
+ else if ( (LA13_0=='[') ) {s = 6;}
- else if ( (LA13_0==']') ) {s = 6;}
+ else if ( (LA13_0==']') ) {s = 7;}
- else if ( (LA13_0=='(') ) {s = 7;}
+ else if ( (LA13_0=='(') ) {s = 8;}
- else if ( (LA13_0==')') ) {s = 8;}
+ else if ( (LA13_0==')') ) {s = 9;}
- else if ( (LA13_0=='=') ) {s = 9;}
+ else if ( (LA13_0=='=') ) {s = 10;}
- else if ( (LA13_0=='<') ) {s = 10;}
+ else if ( (LA13_0=='<') ) {s = 11;}
- else if ( (LA13_0=='>') ) {s = 11;}
+ else if ( (LA13_0=='>') ) {s = 12;}
- else if ( (LA13_0=='.') ) {s = 12;}
+ else if ( (LA13_0=='.') ) {s = 13;}
- else if ( (LA13_0=='?') ) {s = 13;}
+ else if ( (LA13_0=='?') ) {s = 14;}
- else if ( (LA13_0=='&') ) {s = 14;}
+ else if ( (LA13_0=='&') ) {s = 15;}
- else if ( (LA13_0=='*') ) {s = 15;}
+ else if ( (LA13_0=='*') ) {s = 16;}
- else if ( (LA13_0=='i') ) {s = 16;}
+ else if ( (LA13_0=='i') ) {s = 17;}
- else if ( (LA13_0==';') ) {s = 17;}
+ else if ( (LA13_0==';') ) {s = 18;}
- else if ( (LA13_0=='^') ) {s = 18;}
+ else if ( (LA13_0=='^') ) {s = 19;}
- else if ( (LA13_0=='$'||(LA13_0>='A' && LA13_0<='Z')||LA13_0=='_'||(LA13_0>='a' && LA13_0<='d')||(LA13_0>='f' && LA13_0<='h')||(LA13_0>='j' && LA13_0<='r')||(LA13_0>='u' && LA13_0<='z')) ) {s = 19;}
+ else if ( (LA13_0=='$'||(LA13_0>='A' && LA13_0<='Z')||LA13_0=='_'||(LA13_0>='a' && LA13_0<='d')||(LA13_0>='g' && LA13_0<='h')||(LA13_0>='j' && LA13_0<='r')||(LA13_0>='u' && LA13_0<='z')) ) {s = 20;}
- else if ( (LA13_0=='\"') ) {s = 20;}
+ else if ( (LA13_0=='\"') ) {s = 21;}
- else if ( (LA13_0=='\'') ) {s = 21;}
+ else if ( (LA13_0=='\'') ) {s = 22;}
- else if ( (LA13_0=='/') ) {s = 22;}
+ else if ( (LA13_0=='/') ) {s = 23;}
- else if ( ((LA13_0>='\t' && LA13_0<='\n')||LA13_0=='\r'||LA13_0==' ') ) {s = 23;}
+ else if ( ((LA13_0>='\t' && LA13_0<='\n')||LA13_0=='\r'||LA13_0==' ') ) {s = 24;}
- else if ( ((LA13_0>='\u0000' && LA13_0<='\b')||(LA13_0>='\u000B' && LA13_0<='\f')||(LA13_0>='\u000E' && LA13_0<='\u001F')||LA13_0=='!'||LA13_0=='#'||LA13_0=='%'||LA13_0=='+'||LA13_0=='-'||(LA13_0>='0' && LA13_0<=':')||LA13_0=='@'||LA13_0=='\\'||LA13_0=='`'||(LA13_0>='{' && LA13_0<='\uFFFF')) ) {s = 24;}
+ else if ( ((LA13_0>='\u0000' && LA13_0<='\b')||(LA13_0>='\u000B' && LA13_0<='\f')||(LA13_0>='\u000E' && LA13_0<='\u001F')||LA13_0=='!'||LA13_0=='#'||LA13_0=='%'||LA13_0=='+'||LA13_0=='-'||(LA13_0>='0' && LA13_0<=':')||LA13_0=='@'||LA13_0=='\\'||LA13_0=='`'||(LA13_0>='{' && LA13_0<='\uFFFF')) ) {s = 25;}
if ( s>=0 ) return s;
break;
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
index 21143e945..3a1c21288 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/parser/antlr/internal/InternalStatemachineParser.java
@@ -22,7 +22,7 @@
@SuppressWarnings("all")
public class InternalStatemachineParser extends AbstractInternalAntlrParser {
public static final String[] tokenNames = new String[] {
- "", "", "", "", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'events'", "'end'", "'state'", "'transition'", "','", "'['", "']'", "'('", "')'", "'=>'", "'<'", "'>'", "'.'", "'?'", "'extends'", "'&'", "'super'", "'*'", "'import'", "'static'", "'extension'", "';'"
+ "", "", "", "", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'events'", "'end'", "'state'", "'true'", "'false'", "'finalstate'", "'transition'", "','", "'['", "']'", "'('", "')'", "'=>'", "'<'", "'>'", "'.'", "'?'", "'extends'", "'&'", "'super'", "'*'", "'import'", "'static'", "'extension'", "';'"
};
public static final int RULE_STRING=5;
public static final int RULE_SL_COMMENT=7;
@@ -32,13 +32,16 @@ public class InternalStatemachineParser extends AbstractInternalAntlrParser {
public static final int T__17=17;
public static final int T__18=18;
public static final int T__11=11;
+ public static final int T__33=33;
public static final int T__12=12;
+ public static final int T__34=34;
public static final int T__13=13;
public static final int T__14=14;
public static final int EOF=-1;
public static final int T__30=30;
public static final int T__31=31;
public static final int T__10=10;
+ public static final int T__32=32;
public static final int RULE_ID=4;
public static final int RULE_WS=8;
public static final int RULE_ANY_OTHER=9;
@@ -134,7 +137,7 @@ public final EObject entryRuleStatemachine() throws RecognitionException {
// $ANTLR start "ruleStatemachine"
- // InternalStatemachine.g:71:1: ruleStatemachine returns [EObject current=null] : ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* ) ;
+ // InternalStatemachine.g:71:1: ruleStatemachine returns [EObject current=null] : ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_finalstates_5_0= ruleFinalState ) )* ( (lv_transitions_6_0= ruleTransition ) )* ) ;
public final EObject ruleStatemachine() throws RecognitionException {
EObject current = null;
@@ -144,18 +147,20 @@ public final EObject ruleStatemachine() throws RecognitionException {
EObject lv_states_4_0 = null;
- EObject lv_transitions_5_0 = null;
+ EObject lv_finalstates_5_0 = null;
+
+ EObject lv_transitions_6_0 = null;
enterRule();
try {
- // InternalStatemachine.g:77:2: ( ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* ) )
- // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* )
+ // InternalStatemachine.g:77:2: ( ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_finalstates_5_0= ruleFinalState ) )* ( (lv_transitions_6_0= ruleTransition ) )* ) )
+ // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_finalstates_5_0= ruleFinalState ) )* ( (lv_transitions_6_0= ruleTransition ) )* )
{
- // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )* )
- // InternalStatemachine.g:79:3: () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_transitions_5_0= ruleTransition ) )*
+ // InternalStatemachine.g:78:2: ( () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_finalstates_5_0= ruleFinalState ) )* ( (lv_transitions_6_0= ruleTransition ) )* )
+ // InternalStatemachine.g:79:3: () (otherlv_1= 'events' ( (lv_events_2_0= ruleEvent ) )+ otherlv_3= 'end' )? ( (lv_states_4_0= ruleState ) )* ( (lv_finalstates_5_0= ruleFinalState ) )* ( (lv_transitions_6_0= ruleTransition ) )*
{
// InternalStatemachine.g:79:3: ()
// InternalStatemachine.g:80:4:
@@ -311,31 +316,84 @@ public final EObject ruleStatemachine() throws RecognitionException {
}
} while (true);
- // InternalStatemachine.g:134:3: ( (lv_transitions_5_0= ruleTransition ) )*
+ // InternalStatemachine.g:134:3: ( (lv_finalstates_5_0= ruleFinalState ) )*
loop4:
do {
int alt4=2;
int LA4_0 = input.LA(1);
- if ( (LA4_0==13) ) {
+ if ( (LA4_0==15) ) {
alt4=1;
}
switch (alt4) {
case 1 :
- // InternalStatemachine.g:135:4: (lv_transitions_5_0= ruleTransition )
+ // InternalStatemachine.g:135:4: (lv_finalstates_5_0= ruleFinalState )
{
- // InternalStatemachine.g:135:4: (lv_transitions_5_0= ruleTransition )
- // InternalStatemachine.g:136:5: lv_transitions_5_0= ruleTransition
+ // InternalStatemachine.g:135:4: (lv_finalstates_5_0= ruleFinalState )
+ // InternalStatemachine.g:136:5: lv_finalstates_5_0= ruleFinalState
{
if ( state.backtracking==0 ) {
- newCompositeNode(grammarAccess.getStatemachineAccess().getTransitionsTransitionParserRuleCall_3_0());
+ newCompositeNode(grammarAccess.getStatemachineAccess().getFinalstatesFinalStateParserRuleCall_3_0());
}
pushFollow(FOLLOW_6);
- lv_transitions_5_0=ruleTransition();
+ lv_finalstates_5_0=ruleFinalState();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElementForParent(grammarAccess.getStatemachineRule());
+ }
+ add(
+ current,
+ "finalstates",
+ lv_finalstates_5_0,
+ "de.cognicrypt.order.editor.Statemachine.FinalState");
+ afterParserOrEnumRuleCall();
+
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+ // InternalStatemachine.g:153:3: ( (lv_transitions_6_0= ruleTransition ) )*
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==16) ) {
+ alt5=1;
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // InternalStatemachine.g:154:4: (lv_transitions_6_0= ruleTransition )
+ {
+ // InternalStatemachine.g:154:4: (lv_transitions_6_0= ruleTransition )
+ // InternalStatemachine.g:155:5: lv_transitions_6_0= ruleTransition
+ {
+ if ( state.backtracking==0 ) {
+
+ newCompositeNode(grammarAccess.getStatemachineAccess().getTransitionsTransitionParserRuleCall_4_0());
+
+ }
+ pushFollow(FOLLOW_7);
+ lv_transitions_6_0=ruleTransition();
state._fsp--;
if (state.failed) return current;
@@ -347,7 +405,7 @@ public final EObject ruleStatemachine() throws RecognitionException {
add(
current,
"transitions",
- lv_transitions_5_0,
+ lv_transitions_6_0,
"de.cognicrypt.order.editor.Statemachine.Transition");
afterParserOrEnumRuleCall();
@@ -360,7 +418,7 @@ public final EObject ruleStatemachine() throws RecognitionException {
break;
default :
- break loop4;
+ break loop5;
}
} while (true);
@@ -389,7 +447,7 @@ public final EObject ruleStatemachine() throws RecognitionException {
// $ANTLR start "entryRuleEvent"
- // InternalStatemachine.g:157:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
+ // InternalStatemachine.g:176:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
public final EObject entryRuleEvent() throws RecognitionException {
EObject current = null;
@@ -397,8 +455,8 @@ public final EObject entryRuleEvent() throws RecognitionException {
try {
- // InternalStatemachine.g:157:46: (iv_ruleEvent= ruleEvent EOF )
- // InternalStatemachine.g:158:2: iv_ruleEvent= ruleEvent EOF
+ // InternalStatemachine.g:176:46: (iv_ruleEvent= ruleEvent EOF )
+ // InternalStatemachine.g:177:2: iv_ruleEvent= ruleEvent EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getEventRule());
@@ -429,7 +487,7 @@ public final EObject entryRuleEvent() throws RecognitionException {
// $ANTLR start "ruleEvent"
- // InternalStatemachine.g:164:1: ruleEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) ;
+ // InternalStatemachine.g:183:1: ruleEvent returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) ;
public final EObject ruleEvent() throws RecognitionException {
EObject current = null;
@@ -440,17 +498,17 @@ public final EObject ruleEvent() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:170:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) )
- // InternalStatemachine.g:171:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
+ // InternalStatemachine.g:189:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) ) )
+ // InternalStatemachine.g:190:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
{
- // InternalStatemachine.g:171:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
- // InternalStatemachine.g:172:3: ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) )
+ // InternalStatemachine.g:190:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) ) )
+ // InternalStatemachine.g:191:3: ( (lv_name_0_0= RULE_ID ) ) ( (lv_code_1_0= RULE_ID ) )
{
- // InternalStatemachine.g:172:3: ( (lv_name_0_0= RULE_ID ) )
- // InternalStatemachine.g:173:4: (lv_name_0_0= RULE_ID )
+ // InternalStatemachine.g:191:3: ( (lv_name_0_0= RULE_ID ) )
+ // InternalStatemachine.g:192:4: (lv_name_0_0= RULE_ID )
{
- // InternalStatemachine.g:173:4: (lv_name_0_0= RULE_ID )
- // InternalStatemachine.g:174:5: lv_name_0_0= RULE_ID
+ // InternalStatemachine.g:192:4: (lv_name_0_0= RULE_ID )
+ // InternalStatemachine.g:193:5: lv_name_0_0= RULE_ID
{
lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
@@ -476,11 +534,11 @@ public final EObject ruleEvent() throws RecognitionException {
}
- // InternalStatemachine.g:190:3: ( (lv_code_1_0= RULE_ID ) )
- // InternalStatemachine.g:191:4: (lv_code_1_0= RULE_ID )
+ // InternalStatemachine.g:209:3: ( (lv_code_1_0= RULE_ID ) )
+ // InternalStatemachine.g:210:4: (lv_code_1_0= RULE_ID )
{
- // InternalStatemachine.g:191:4: (lv_code_1_0= RULE_ID )
- // InternalStatemachine.g:192:5: lv_code_1_0= RULE_ID
+ // InternalStatemachine.g:210:4: (lv_code_1_0= RULE_ID )
+ // InternalStatemachine.g:211:5: lv_code_1_0= RULE_ID
{
lv_code_1_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
@@ -531,7 +589,7 @@ public final EObject ruleEvent() throws RecognitionException {
// $ANTLR start "entryRuleState"
- // InternalStatemachine.g:212:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
+ // InternalStatemachine.g:231:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
public final EObject entryRuleState() throws RecognitionException {
EObject current = null;
@@ -539,8 +597,8 @@ public final EObject entryRuleState() throws RecognitionException {
try {
- // InternalStatemachine.g:212:46: (iv_ruleState= ruleState EOF )
- // InternalStatemachine.g:213:2: iv_ruleState= ruleState EOF
+ // InternalStatemachine.g:231:46: (iv_ruleState= ruleState EOF )
+ // InternalStatemachine.g:232:2: iv_ruleState= ruleState EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getStateRule());
@@ -571,25 +629,27 @@ public final EObject entryRuleState() throws RecognitionException {
// $ANTLR start "ruleState"
- // InternalStatemachine.g:219:1: ruleState returns [EObject current=null] : (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' ) ;
+ // InternalStatemachine.g:238:1: ruleState returns [EObject current=null] : (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' ) ( (lv_transitions_4_0= ruleTransition ) )* otherlv_5= 'end' ) ;
public final EObject ruleState() throws RecognitionException {
EObject current = null;
Token otherlv_0=null;
Token lv_name_1_0=null;
+ Token lv_isFinal_2_0=null;
Token otherlv_3=null;
- EObject lv_transitions_2_0 = null;
+ Token otherlv_5=null;
+ EObject lv_transitions_4_0 = null;
enterRule();
try {
- // InternalStatemachine.g:225:2: ( (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' ) )
- // InternalStatemachine.g:226:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' )
+ // InternalStatemachine.g:244:2: ( (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' ) ( (lv_transitions_4_0= ruleTransition ) )* otherlv_5= 'end' ) )
+ // InternalStatemachine.g:245:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' ) ( (lv_transitions_4_0= ruleTransition ) )* otherlv_5= 'end' )
{
- // InternalStatemachine.g:226:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end' )
- // InternalStatemachine.g:227:3: otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( (lv_transitions_2_0= ruleTransition ) )* otherlv_3= 'end'
+ // InternalStatemachine.g:245:2: (otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' ) ( (lv_transitions_4_0= ruleTransition ) )* otherlv_5= 'end' )
+ // InternalStatemachine.g:246:3: otherlv_0= 'state' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' ) ( (lv_transitions_4_0= ruleTransition ) )* otherlv_5= 'end'
{
otherlv_0=(Token)match(input,12,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
@@ -597,13 +657,13 @@ public final EObject ruleState() throws RecognitionException {
newLeafNode(otherlv_0, grammarAccess.getStateAccess().getStateKeyword_0());
}
- // InternalStatemachine.g:231:3: ( (lv_name_1_0= RULE_ID ) )
- // InternalStatemachine.g:232:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:250:3: ( (lv_name_1_0= RULE_ID ) )
+ // InternalStatemachine.g:251:4: (lv_name_1_0= RULE_ID )
{
- // InternalStatemachine.g:232:4: (lv_name_1_0= RULE_ID )
- // InternalStatemachine.g:233:5: lv_name_1_0= RULE_ID
+ // InternalStatemachine.g:251:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:252:5: lv_name_1_0= RULE_ID
{
- lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_7); if (state.failed) return current;
+ lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(lv_name_1_0, grammarAccess.getStateAccess().getNameIDTerminalRuleCall_1_0());
@@ -627,31 +687,96 @@ public final EObject ruleState() throws RecognitionException {
}
- // InternalStatemachine.g:249:3: ( (lv_transitions_2_0= ruleTransition ) )*
- loop5:
+ // InternalStatemachine.g:268:3: ( ( (lv_isFinal_2_0= 'true' ) ) | otherlv_3= 'false' )
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0==13) ) {
+ alt6=1;
+ }
+ else if ( (LA6_0==14) ) {
+ alt6=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return current;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // InternalStatemachine.g:269:4: ( (lv_isFinal_2_0= 'true' ) )
+ {
+ // InternalStatemachine.g:269:4: ( (lv_isFinal_2_0= 'true' ) )
+ // InternalStatemachine.g:270:5: (lv_isFinal_2_0= 'true' )
+ {
+ // InternalStatemachine.g:270:5: (lv_isFinal_2_0= 'true' )
+ // InternalStatemachine.g:271:6: lv_isFinal_2_0= 'true'
+ {
+ lv_isFinal_2_0=(Token)match(input,13,FOLLOW_9); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_isFinal_2_0, grammarAccess.getStateAccess().getIsFinalTrueKeyword_2_0_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getStateRule());
+ }
+ setWithLastConsumed(current, "isFinal", lv_isFinal_2_0 != null, "true");
+
+ }
+
+ }
+
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // InternalStatemachine.g:284:4: otherlv_3= 'false'
+ {
+ otherlv_3=(Token)match(input,14,FOLLOW_9); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_3, grammarAccess.getStateAccess().getFalseKeyword_2_1());
+
+ }
+
+ }
+ break;
+
+ }
+
+ // InternalStatemachine.g:289:3: ( (lv_transitions_4_0= ruleTransition ) )*
+ loop7:
do {
- int alt5=2;
- int LA5_0 = input.LA(1);
+ int alt7=2;
+ int LA7_0 = input.LA(1);
- if ( (LA5_0==13) ) {
- alt5=1;
+ if ( (LA7_0==16) ) {
+ alt7=1;
}
- switch (alt5) {
+ switch (alt7) {
case 1 :
- // InternalStatemachine.g:250:4: (lv_transitions_2_0= ruleTransition )
+ // InternalStatemachine.g:290:4: (lv_transitions_4_0= ruleTransition )
{
- // InternalStatemachine.g:250:4: (lv_transitions_2_0= ruleTransition )
- // InternalStatemachine.g:251:5: lv_transitions_2_0= ruleTransition
+ // InternalStatemachine.g:290:4: (lv_transitions_4_0= ruleTransition )
+ // InternalStatemachine.g:291:5: lv_transitions_4_0= ruleTransition
{
if ( state.backtracking==0 ) {
- newCompositeNode(grammarAccess.getStateAccess().getTransitionsTransitionParserRuleCall_2_0());
+ newCompositeNode(grammarAccess.getStateAccess().getTransitionsTransitionParserRuleCall_3_0());
}
- pushFollow(FOLLOW_7);
- lv_transitions_2_0=ruleTransition();
+ pushFollow(FOLLOW_9);
+ lv_transitions_4_0=ruleTransition();
state._fsp--;
if (state.failed) return current;
@@ -663,7 +788,7 @@ public final EObject ruleState() throws RecognitionException {
add(
current,
"transitions",
- lv_transitions_2_0,
+ lv_transitions_4_0,
"de.cognicrypt.order.editor.Statemachine.Transition");
afterParserOrEnumRuleCall();
@@ -676,14 +801,14 @@ public final EObject ruleState() throws RecognitionException {
break;
default :
- break loop5;
+ break loop7;
}
} while (true);
- otherlv_3=(Token)match(input,11,FOLLOW_2); if (state.failed) return current;
+ otherlv_5=(Token)match(input,11,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
- newLeafNode(otherlv_3, grammarAccess.getStateAccess().getEndKeyword_3());
+ newLeafNode(otherlv_5, grammarAccess.getStateAccess().getEndKeyword_4());
}
@@ -710,8 +835,133 @@ public final EObject ruleState() throws RecognitionException {
// $ANTLR end "ruleState"
+ // $ANTLR start "entryRuleFinalState"
+ // InternalStatemachine.g:316:1: entryRuleFinalState returns [EObject current=null] : iv_ruleFinalState= ruleFinalState EOF ;
+ public final EObject entryRuleFinalState() throws RecognitionException {
+ EObject current = null;
+
+ EObject iv_ruleFinalState = null;
+
+
+ try {
+ // InternalStatemachine.g:316:51: (iv_ruleFinalState= ruleFinalState EOF )
+ // InternalStatemachine.g:317:2: iv_ruleFinalState= ruleFinalState EOF
+ {
+ if ( state.backtracking==0 ) {
+ newCompositeNode(grammarAccess.getFinalStateRule());
+ }
+ pushFollow(FOLLOW_1);
+ iv_ruleFinalState=ruleFinalState();
+
+ state._fsp--;
+ if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+ current =iv_ruleFinalState;
+ }
+ match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+ }
+
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "entryRuleFinalState"
+
+
+ // $ANTLR start "ruleFinalState"
+ // InternalStatemachine.g:323:1: ruleFinalState returns [EObject current=null] : (otherlv_0= 'finalstate' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'end' ) ;
+ public final EObject ruleFinalState() throws RecognitionException {
+ EObject current = null;
+
+ Token otherlv_0=null;
+ Token lv_name_1_0=null;
+ Token otherlv_2=null;
+
+
+ enterRule();
+
+ try {
+ // InternalStatemachine.g:329:2: ( (otherlv_0= 'finalstate' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'end' ) )
+ // InternalStatemachine.g:330:2: (otherlv_0= 'finalstate' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'end' )
+ {
+ // InternalStatemachine.g:330:2: (otherlv_0= 'finalstate' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'end' )
+ // InternalStatemachine.g:331:3: otherlv_0= 'finalstate' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'end'
+ {
+ otherlv_0=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_0, grammarAccess.getFinalStateAccess().getFinalstateKeyword_0());
+
+ }
+ // InternalStatemachine.g:335:3: ( (lv_name_1_0= RULE_ID ) )
+ // InternalStatemachine.g:336:4: (lv_name_1_0= RULE_ID )
+ {
+ // InternalStatemachine.g:336:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:337:5: lv_name_1_0= RULE_ID
+ {
+ lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_10); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(lv_name_1_0, grammarAccess.getFinalStateAccess().getNameIDTerminalRuleCall_1_0());
+
+ }
+ if ( state.backtracking==0 ) {
+
+ if (current==null) {
+ current = createModelElement(grammarAccess.getFinalStateRule());
+ }
+ setWithLastConsumed(
+ current,
+ "name",
+ lv_name_1_0,
+ "org.eclipse.xtext.xbase.Xtype.ID");
+
+ }
+
+ }
+
+
+ }
+
+ otherlv_2=(Token)match(input,11,FOLLOW_2); if (state.failed) return current;
+ if ( state.backtracking==0 ) {
+
+ newLeafNode(otherlv_2, grammarAccess.getFinalStateAccess().getEndKeyword_2());
+
+ }
+
+ }
+
+
+ }
+
+ if ( state.backtracking==0 ) {
+
+ leaveRule();
+
+ }
+ }
+
+ catch (RecognitionException re) {
+ recover(input,re);
+ appendSkippedTokens();
+ }
+ finally {
+ }
+ return current;
+ }
+ // $ANTLR end "ruleFinalState"
+
+
// $ANTLR start "entryRuleTransition"
- // InternalStatemachine.g:276:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ;
+ // InternalStatemachine.g:361:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ;
public final EObject entryRuleTransition() throws RecognitionException {
EObject current = null;
@@ -719,8 +969,8 @@ public final EObject entryRuleTransition() throws RecognitionException {
try {
- // InternalStatemachine.g:276:51: (iv_ruleTransition= ruleTransition EOF )
- // InternalStatemachine.g:277:2: iv_ruleTransition= ruleTransition EOF
+ // InternalStatemachine.g:361:51: (iv_ruleTransition= ruleTransition EOF )
+ // InternalStatemachine.g:362:2: iv_ruleTransition= ruleTransition EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getTransitionRule());
@@ -751,7 +1001,7 @@ public final EObject entryRuleTransition() throws RecognitionException {
// $ANTLR start "ruleTransition"
- // InternalStatemachine.g:283:1: ruleTransition returns [EObject current=null] : (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) ;
+ // InternalStatemachine.g:368:1: ruleTransition returns [EObject current=null] : (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) ;
public final EObject ruleTransition() throws RecognitionException {
EObject current = null;
@@ -768,23 +1018,23 @@ public final EObject ruleTransition() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:289:2: ( (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) )
- // InternalStatemachine.g:290:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
+ // InternalStatemachine.g:374:2: ( (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' ) )
+ // InternalStatemachine.g:375:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
{
- // InternalStatemachine.g:290:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
- // InternalStatemachine.g:291:3: otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end'
+ // InternalStatemachine.g:375:2: (otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end' )
+ // InternalStatemachine.g:376:3: otherlv_0= 'transition' ( (lv_name_1_0= RULE_ID ) ) ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'end'
{
- otherlv_0=(Token)match(input,13,FOLLOW_3); if (state.failed) return current;
+ otherlv_0=(Token)match(input,16,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getTransitionAccess().getTransitionKeyword_0());
}
- // InternalStatemachine.g:295:3: ( (lv_name_1_0= RULE_ID ) )
- // InternalStatemachine.g:296:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:380:3: ( (lv_name_1_0= RULE_ID ) )
+ // InternalStatemachine.g:381:4: (lv_name_1_0= RULE_ID )
{
- // InternalStatemachine.g:296:4: (lv_name_1_0= RULE_ID )
- // InternalStatemachine.g:297:5: lv_name_1_0= RULE_ID
+ // InternalStatemachine.g:381:4: (lv_name_1_0= RULE_ID )
+ // InternalStatemachine.g:382:5: lv_name_1_0= RULE_ID
{
lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
@@ -810,11 +1060,11 @@ public final EObject ruleTransition() throws RecognitionException {
}
- // InternalStatemachine.g:313:3: ( (otherlv_2= RULE_ID ) )
- // InternalStatemachine.g:314:4: (otherlv_2= RULE_ID )
+ // InternalStatemachine.g:398:3: ( (otherlv_2= RULE_ID ) )
+ // InternalStatemachine.g:399:4: (otherlv_2= RULE_ID )
{
- // InternalStatemachine.g:314:4: (otherlv_2= RULE_ID )
- // InternalStatemachine.g:315:5: otherlv_2= RULE_ID
+ // InternalStatemachine.g:399:4: (otherlv_2= RULE_ID )
+ // InternalStatemachine.g:400:5: otherlv_2= RULE_ID
{
if ( state.backtracking==0 ) {
@@ -823,7 +1073,7 @@ public final EObject ruleTransition() throws RecognitionException {
}
}
- otherlv_2=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+ otherlv_2=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getFromStateStateCrossReference_2_0());
@@ -835,17 +1085,17 @@ public final EObject ruleTransition() throws RecognitionException {
}
- otherlv_3=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
+ otherlv_3=(Token)match(input,17,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_3, grammarAccess.getTransitionAccess().getCommaKeyword_3());
}
- // InternalStatemachine.g:330:3: ( (otherlv_4= RULE_ID ) )
- // InternalStatemachine.g:331:4: (otherlv_4= RULE_ID )
+ // InternalStatemachine.g:415:3: ( (otherlv_4= RULE_ID ) )
+ // InternalStatemachine.g:416:4: (otherlv_4= RULE_ID )
{
- // InternalStatemachine.g:331:4: (otherlv_4= RULE_ID )
- // InternalStatemachine.g:332:5: otherlv_4= RULE_ID
+ // InternalStatemachine.g:416:4: (otherlv_4= RULE_ID )
+ // InternalStatemachine.g:417:5: otherlv_4= RULE_ID
{
if ( state.backtracking==0 ) {
@@ -854,7 +1104,7 @@ public final EObject ruleTransition() throws RecognitionException {
}
}
- otherlv_4=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+ otherlv_4=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getEventEventCrossReference_4_0());
@@ -866,17 +1116,17 @@ public final EObject ruleTransition() throws RecognitionException {
}
- otherlv_5=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
+ otherlv_5=(Token)match(input,17,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_5, grammarAccess.getTransitionAccess().getCommaKeyword_5());
}
- // InternalStatemachine.g:347:3: ( (otherlv_6= RULE_ID ) )
- // InternalStatemachine.g:348:4: (otherlv_6= RULE_ID )
+ // InternalStatemachine.g:432:3: ( (otherlv_6= RULE_ID ) )
+ // InternalStatemachine.g:433:4: (otherlv_6= RULE_ID )
{
- // InternalStatemachine.g:348:4: (otherlv_6= RULE_ID )
- // InternalStatemachine.g:349:5: otherlv_6= RULE_ID
+ // InternalStatemachine.g:433:4: (otherlv_6= RULE_ID )
+ // InternalStatemachine.g:434:5: otherlv_6= RULE_ID
{
if ( state.backtracking==0 ) {
@@ -885,7 +1135,7 @@ public final EObject ruleTransition() throws RecognitionException {
}
}
- otherlv_6=(Token)match(input,RULE_ID,FOLLOW_9); if (state.failed) return current;
+ otherlv_6=(Token)match(input,RULE_ID,FOLLOW_10); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getEndStateStateCrossReference_6_0());
@@ -928,7 +1178,7 @@ public final EObject ruleTransition() throws RecognitionException {
// $ANTLR start "entryRuleJvmTypeReference"
- // InternalStatemachine.g:368:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+ // InternalStatemachine.g:453:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
public final EObject entryRuleJvmTypeReference() throws RecognitionException {
EObject current = null;
@@ -936,8 +1186,8 @@ public final EObject entryRuleJvmTypeReference() throws RecognitionException {
try {
- // InternalStatemachine.g:368:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
- // InternalStatemachine.g:369:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+ // InternalStatemachine.g:453:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+ // InternalStatemachine.g:454:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmTypeReferenceRule());
@@ -968,7 +1218,7 @@ public final EObject entryRuleJvmTypeReference() throws RecognitionException {
// $ANTLR start "ruleJvmTypeReference"
- // InternalStatemachine.g:375:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+ // InternalStatemachine.g:460:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
public final EObject ruleJvmTypeReference() throws RecognitionException {
EObject current = null;
@@ -981,39 +1231,39 @@ public final EObject ruleJvmTypeReference() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:381:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
- // InternalStatemachine.g:382:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+ // InternalStatemachine.g:466:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+ // InternalStatemachine.g:467:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
{
- // InternalStatemachine.g:382:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
- int alt7=2;
- int LA7_0 = input.LA(1);
+ // InternalStatemachine.g:467:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+ int alt9=2;
+ int LA9_0 = input.LA(1);
- if ( (LA7_0==RULE_ID) ) {
- alt7=1;
+ if ( (LA9_0==RULE_ID) ) {
+ alt9=1;
}
- else if ( (LA7_0==17||LA7_0==19) ) {
- alt7=2;
+ else if ( (LA9_0==20||LA9_0==22) ) {
+ alt9=2;
}
else {
if (state.backtracking>0) {state.failed=true; return current;}
NoViableAltException nvae =
- new NoViableAltException("", 7, 0, input);
+ new NoViableAltException("", 9, 0, input);
throw nvae;
}
- switch (alt7) {
+ switch (alt9) {
case 1 :
- // InternalStatemachine.g:383:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+ // InternalStatemachine.g:468:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
{
- // InternalStatemachine.g:383:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
- // InternalStatemachine.g:384:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+ // InternalStatemachine.g:468:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+ // InternalStatemachine.g:469:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
}
- pushFollow(FOLLOW_10);
+ pushFollow(FOLLOW_12);
this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
state._fsp--;
@@ -1024,26 +1274,26 @@ else if ( (LA7_0==17||LA7_0==19) ) {
afterParserOrEnumRuleCall();
}
- // InternalStatemachine.g:392:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
- loop6:
+ // InternalStatemachine.g:477:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+ loop8:
do {
- int alt6=2;
- int LA6_0 = input.LA(1);
+ int alt8=2;
+ int LA8_0 = input.LA(1);
- if ( (LA6_0==15) && (synpred1_InternalStatemachine())) {
- alt6=1;
+ if ( (LA8_0==18) && (synpred1_InternalStatemachine())) {
+ alt8=1;
}
- switch (alt6) {
+ switch (alt8) {
case 1 :
- // InternalStatemachine.g:393:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+ // InternalStatemachine.g:478:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
{
- // InternalStatemachine.g:399:5: ( () ruleArrayBrackets )
- // InternalStatemachine.g:400:6: () ruleArrayBrackets
+ // InternalStatemachine.g:484:5: ( () ruleArrayBrackets )
+ // InternalStatemachine.g:485:6: () ruleArrayBrackets
{
- // InternalStatemachine.g:400:6: ()
- // InternalStatemachine.g:401:7:
+ // InternalStatemachine.g:485:6: ()
+ // InternalStatemachine.g:486:7:
{
if ( state.backtracking==0 ) {
@@ -1060,7 +1310,7 @@ else if ( (LA7_0==17||LA7_0==19) ) {
newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
}
- pushFollow(FOLLOW_10);
+ pushFollow(FOLLOW_12);
ruleArrayBrackets();
state._fsp--;
@@ -1078,7 +1328,7 @@ else if ( (LA7_0==17||LA7_0==19) ) {
break;
default :
- break loop6;
+ break loop8;
}
} while (true);
@@ -1089,7 +1339,7 @@ else if ( (LA7_0==17||LA7_0==19) ) {
}
break;
case 2 :
- // InternalStatemachine.g:418:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+ // InternalStatemachine.g:503:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
{
if ( state.backtracking==0 ) {
@@ -1135,7 +1385,7 @@ else if ( (LA7_0==17||LA7_0==19) ) {
// $ANTLR start "entryRuleArrayBrackets"
- // InternalStatemachine.g:430:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+ // InternalStatemachine.g:515:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
public final String entryRuleArrayBrackets() throws RecognitionException {
String current = null;
@@ -1143,8 +1393,8 @@ public final String entryRuleArrayBrackets() throws RecognitionException {
try {
- // InternalStatemachine.g:430:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
- // InternalStatemachine.g:431:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+ // InternalStatemachine.g:515:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+ // InternalStatemachine.g:516:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getArrayBracketsRule());
@@ -1175,7 +1425,7 @@ public final String entryRuleArrayBrackets() throws RecognitionException {
// $ANTLR start "ruleArrayBrackets"
- // InternalStatemachine.g:437:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+ // InternalStatemachine.g:522:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
@@ -1185,20 +1435,20 @@ public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionExcept
enterRule();
try {
- // InternalStatemachine.g:443:2: ( (kw= '[' kw= ']' ) )
- // InternalStatemachine.g:444:2: (kw= '[' kw= ']' )
+ // InternalStatemachine.g:528:2: ( (kw= '[' kw= ']' ) )
+ // InternalStatemachine.g:529:2: (kw= '[' kw= ']' )
{
- // InternalStatemachine.g:444:2: (kw= '[' kw= ']' )
- // InternalStatemachine.g:445:3: kw= '[' kw= ']'
+ // InternalStatemachine.g:529:2: (kw= '[' kw= ']' )
+ // InternalStatemachine.g:530:3: kw= '[' kw= ']'
{
- kw=(Token)match(input,15,FOLLOW_11); if (state.failed) return current;
+ kw=(Token)match(input,18,FOLLOW_13); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
}
- kw=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
+ kw=(Token)match(input,19,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
@@ -1230,7 +1480,7 @@ public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionExcept
// $ANTLR start "entryRuleXFunctionTypeRef"
- // InternalStatemachine.g:459:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+ // InternalStatemachine.g:544:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
EObject current = null;
@@ -1238,8 +1488,8 @@ public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
try {
- // InternalStatemachine.g:459:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
- // InternalStatemachine.g:460:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+ // InternalStatemachine.g:544:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+ // InternalStatemachine.g:545:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXFunctionTypeRefRule());
@@ -1270,7 +1520,7 @@ public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
// $ANTLR start "ruleXFunctionTypeRef"
- // InternalStatemachine.g:466:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+ // InternalStatemachine.g:551:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
public final EObject ruleXFunctionTypeRef() throws RecognitionException {
EObject current = null;
@@ -1289,52 +1539,52 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:472:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
- // InternalStatemachine.g:473:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:557:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:558:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
{
- // InternalStatemachine.g:473:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
- // InternalStatemachine.g:474:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:558:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:559:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
{
- // InternalStatemachine.g:474:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
- int alt10=2;
- int LA10_0 = input.LA(1);
+ // InternalStatemachine.g:559:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+ int alt12=2;
+ int LA12_0 = input.LA(1);
- if ( (LA10_0==17) ) {
- alt10=1;
+ if ( (LA12_0==20) ) {
+ alt12=1;
}
- switch (alt10) {
+ switch (alt12) {
case 1 :
- // InternalStatemachine.g:475:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+ // InternalStatemachine.g:560:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
{
- otherlv_0=(Token)match(input,17,FOLLOW_12); if (state.failed) return current;
+ otherlv_0=(Token)match(input,20,FOLLOW_14); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
}
- // InternalStatemachine.g:479:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
- int alt9=2;
- int LA9_0 = input.LA(1);
+ // InternalStatemachine.g:564:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+ int alt11=2;
+ int LA11_0 = input.LA(1);
- if ( (LA9_0==RULE_ID||LA9_0==17||LA9_0==19) ) {
- alt9=1;
+ if ( (LA11_0==RULE_ID||LA11_0==20||LA11_0==22) ) {
+ alt11=1;
}
- switch (alt9) {
+ switch (alt11) {
case 1 :
- // InternalStatemachine.g:480:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+ // InternalStatemachine.g:565:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
{
- // InternalStatemachine.g:480:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:481:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:565:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:566:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:481:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
- // InternalStatemachine.g:482:7: lv_paramTypes_1_0= ruleJvmTypeReference
+ // InternalStatemachine.g:566:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:567:7: lv_paramTypes_1_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
}
- pushFollow(FOLLOW_13);
+ pushFollow(FOLLOW_15);
lv_paramTypes_1_0=ruleJvmTypeReference();
state._fsp--;
@@ -1358,39 +1608,39 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
}
- // InternalStatemachine.g:499:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
- loop8:
+ // InternalStatemachine.g:584:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+ loop10:
do {
- int alt8=2;
- int LA8_0 = input.LA(1);
+ int alt10=2;
+ int LA10_0 = input.LA(1);
- if ( (LA8_0==14) ) {
- alt8=1;
+ if ( (LA10_0==17) ) {
+ alt10=1;
}
- switch (alt8) {
+ switch (alt10) {
case 1 :
- // InternalStatemachine.g:500:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:585:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
{
- otherlv_2=(Token)match(input,14,FOLLOW_14); if (state.failed) return current;
+ otherlv_2=(Token)match(input,17,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
}
- // InternalStatemachine.g:504:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:505:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:589:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:590:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:505:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
- // InternalStatemachine.g:506:8: lv_paramTypes_3_0= ruleJvmTypeReference
+ // InternalStatemachine.g:590:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:591:8: lv_paramTypes_3_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
}
- pushFollow(FOLLOW_13);
+ pushFollow(FOLLOW_15);
lv_paramTypes_3_0=ruleJvmTypeReference();
state._fsp--;
@@ -1419,7 +1669,7 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
break;
default :
- break loop8;
+ break loop10;
}
} while (true);
@@ -1429,7 +1679,7 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
}
- otherlv_4=(Token)match(input,18,FOLLOW_15); if (state.failed) return current;
+ otherlv_4=(Token)match(input,21,FOLLOW_17); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
@@ -1441,17 +1691,17 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
}
- otherlv_5=(Token)match(input,19,FOLLOW_14); if (state.failed) return current;
+ otherlv_5=(Token)match(input,22,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
}
- // InternalStatemachine.g:534:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:535:4: (lv_returnType_6_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:619:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:620:4: (lv_returnType_6_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:535:4: (lv_returnType_6_0= ruleJvmTypeReference )
- // InternalStatemachine.g:536:5: lv_returnType_6_0= ruleJvmTypeReference
+ // InternalStatemachine.g:620:4: (lv_returnType_6_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:621:5: lv_returnType_6_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -1507,7 +1757,7 @@ public final EObject ruleXFunctionTypeRef() throws RecognitionException {
// $ANTLR start "entryRuleJvmParameterizedTypeReference"
- // InternalStatemachine.g:557:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+ // InternalStatemachine.g:642:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
EObject current = null;
@@ -1515,8 +1765,8 @@ public final EObject entryRuleJvmParameterizedTypeReference() throws Recognition
try {
- // InternalStatemachine.g:557:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
- // InternalStatemachine.g:558:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+ // InternalStatemachine.g:642:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+ // InternalStatemachine.g:643:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule());
@@ -1547,7 +1797,7 @@ public final EObject entryRuleJvmParameterizedTypeReference() throws Recognition
// $ANTLR start "ruleJvmParameterizedTypeReference"
- // InternalStatemachine.g:564:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+ // InternalStatemachine.g:649:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
EObject current = null;
@@ -1571,17 +1821,17 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
enterRule();
try {
- // InternalStatemachine.g:570:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
- // InternalStatemachine.g:571:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+ // InternalStatemachine.g:655:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+ // InternalStatemachine.g:656:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
{
- // InternalStatemachine.g:571:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
- // InternalStatemachine.g:572:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+ // InternalStatemachine.g:656:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+ // InternalStatemachine.g:657:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
{
- // InternalStatemachine.g:572:3: ( ( ruleQualifiedName ) )
- // InternalStatemachine.g:573:4: ( ruleQualifiedName )
+ // InternalStatemachine.g:657:3: ( ( ruleQualifiedName ) )
+ // InternalStatemachine.g:658:4: ( ruleQualifiedName )
{
- // InternalStatemachine.g:573:4: ( ruleQualifiedName )
- // InternalStatemachine.g:574:5: ruleQualifiedName
+ // InternalStatemachine.g:658:4: ( ruleQualifiedName )
+ // InternalStatemachine.g:659:5: ruleQualifiedName
{
if ( state.backtracking==0 ) {
@@ -1595,7 +1845,7 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
}
- pushFollow(FOLLOW_16);
+ pushFollow(FOLLOW_18);
ruleQualifiedName();
state._fsp--;
@@ -1611,21 +1861,21 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:588:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
- int alt15=2;
- int LA15_0 = input.LA(1);
+ // InternalStatemachine.g:673:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+ int alt17=2;
+ int LA17_0 = input.LA(1);
- if ( (LA15_0==20) && (synpred2_InternalStatemachine())) {
- alt15=1;
+ if ( (LA17_0==23) && (synpred2_InternalStatemachine())) {
+ alt17=1;
}
- switch (alt15) {
+ switch (alt17) {
case 1 :
- // InternalStatemachine.g:589:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+ // InternalStatemachine.g:674:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
{
- // InternalStatemachine.g:589:4: ( ( '<' )=>otherlv_1= '<' )
- // InternalStatemachine.g:590:5: ( '<' )=>otherlv_1= '<'
+ // InternalStatemachine.g:674:4: ( ( '<' )=>otherlv_1= '<' )
+ // InternalStatemachine.g:675:5: ( '<' )=>otherlv_1= '<'
{
- otherlv_1=(Token)match(input,20,FOLLOW_17); if (state.failed) return current;
+ otherlv_1=(Token)match(input,23,FOLLOW_19); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
@@ -1634,18 +1884,18 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:596:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
- // InternalStatemachine.g:597:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:681:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:682:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
{
- // InternalStatemachine.g:597:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
- // InternalStatemachine.g:598:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+ // InternalStatemachine.g:682:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:683:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
}
- pushFollow(FOLLOW_18);
+ pushFollow(FOLLOW_20);
lv_arguments_2_0=ruleJvmArgumentTypeReference();
state._fsp--;
@@ -1669,39 +1919,39 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:615:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
- loop11:
+ // InternalStatemachine.g:700:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+ loop13:
do {
- int alt11=2;
- int LA11_0 = input.LA(1);
+ int alt13=2;
+ int LA13_0 = input.LA(1);
- if ( (LA11_0==14) ) {
- alt11=1;
+ if ( (LA13_0==17) ) {
+ alt13=1;
}
- switch (alt11) {
+ switch (alt13) {
case 1 :
- // InternalStatemachine.g:616:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:701:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
{
- otherlv_3=(Token)match(input,14,FOLLOW_17); if (state.failed) return current;
+ otherlv_3=(Token)match(input,17,FOLLOW_19); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
}
- // InternalStatemachine.g:620:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
- // InternalStatemachine.g:621:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:705:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:706:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
{
- // InternalStatemachine.g:621:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
- // InternalStatemachine.g:622:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+ // InternalStatemachine.g:706:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:707:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
}
- pushFollow(FOLLOW_18);
+ pushFollow(FOLLOW_20);
lv_arguments_4_0=ruleJvmArgumentTypeReference();
state._fsp--;
@@ -1730,39 +1980,39 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
break;
default :
- break loop11;
+ break loop13;
}
} while (true);
- otherlv_5=(Token)match(input,21,FOLLOW_19); if (state.failed) return current;
+ otherlv_5=(Token)match(input,24,FOLLOW_21); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
}
- // InternalStatemachine.g:644:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
- loop14:
+ // InternalStatemachine.g:729:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+ loop16:
do {
- int alt14=2;
- int LA14_0 = input.LA(1);
+ int alt16=2;
+ int LA16_0 = input.LA(1);
- if ( (LA14_0==22) && (synpred3_InternalStatemachine())) {
- alt14=1;
+ if ( (LA16_0==25) && (synpred3_InternalStatemachine())) {
+ alt16=1;
}
- switch (alt14) {
+ switch (alt16) {
case 1 :
- // InternalStatemachine.g:645:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+ // InternalStatemachine.g:730:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
{
- // InternalStatemachine.g:645:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
- // InternalStatemachine.g:646:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+ // InternalStatemachine.g:730:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+ // InternalStatemachine.g:731:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
{
- // InternalStatemachine.g:652:6: ( () otherlv_7= '.' )
- // InternalStatemachine.g:653:7: () otherlv_7= '.'
+ // InternalStatemachine.g:737:6: ( () otherlv_7= '.' )
+ // InternalStatemachine.g:738:7: () otherlv_7= '.'
{
- // InternalStatemachine.g:653:7: ()
- // InternalStatemachine.g:654:8:
+ // InternalStatemachine.g:738:7: ()
+ // InternalStatemachine.g:739:8:
{
if ( state.backtracking==0 ) {
@@ -1774,7 +2024,7 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- otherlv_7=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
+ otherlv_7=(Token)match(input,25,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
@@ -1786,11 +2036,11 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:666:5: ( ( ruleValidID ) )
- // InternalStatemachine.g:667:6: ( ruleValidID )
+ // InternalStatemachine.g:751:5: ( ( ruleValidID ) )
+ // InternalStatemachine.g:752:6: ( ruleValidID )
{
- // InternalStatemachine.g:667:6: ( ruleValidID )
- // InternalStatemachine.g:668:7: ruleValidID
+ // InternalStatemachine.g:752:6: ( ruleValidID )
+ // InternalStatemachine.g:753:7: ruleValidID
{
if ( state.backtracking==0 ) {
@@ -1804,7 +2054,7 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
}
- pushFollow(FOLLOW_20);
+ pushFollow(FOLLOW_22);
ruleValidID();
state._fsp--;
@@ -1820,21 +2070,21 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:682:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
- int alt13=2;
- int LA13_0 = input.LA(1);
+ // InternalStatemachine.g:767:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+ int alt15=2;
+ int LA15_0 = input.LA(1);
- if ( (LA13_0==20) && (synpred4_InternalStatemachine())) {
- alt13=1;
+ if ( (LA15_0==23) && (synpred4_InternalStatemachine())) {
+ alt15=1;
}
- switch (alt13) {
+ switch (alt15) {
case 1 :
- // InternalStatemachine.g:683:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+ // InternalStatemachine.g:768:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
{
- // InternalStatemachine.g:683:6: ( ( '<' )=>otherlv_9= '<' )
- // InternalStatemachine.g:684:7: ( '<' )=>otherlv_9= '<'
+ // InternalStatemachine.g:768:6: ( ( '<' )=>otherlv_9= '<' )
+ // InternalStatemachine.g:769:7: ( '<' )=>otherlv_9= '<'
{
- otherlv_9=(Token)match(input,20,FOLLOW_17); if (state.failed) return current;
+ otherlv_9=(Token)match(input,23,FOLLOW_19); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
@@ -1843,18 +2093,18 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:690:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
- // InternalStatemachine.g:691:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:775:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:776:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
{
- // InternalStatemachine.g:691:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
- // InternalStatemachine.g:692:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+ // InternalStatemachine.g:776:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:777:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
}
- pushFollow(FOLLOW_18);
+ pushFollow(FOLLOW_20);
lv_arguments_10_0=ruleJvmArgumentTypeReference();
state._fsp--;
@@ -1878,39 +2128,39 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
}
- // InternalStatemachine.g:709:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
- loop12:
+ // InternalStatemachine.g:794:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+ loop14:
do {
- int alt12=2;
- int LA12_0 = input.LA(1);
+ int alt14=2;
+ int LA14_0 = input.LA(1);
- if ( (LA12_0==14) ) {
- alt12=1;
+ if ( (LA14_0==17) ) {
+ alt14=1;
}
- switch (alt12) {
+ switch (alt14) {
case 1 :
- // InternalStatemachine.g:710:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:795:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
{
- otherlv_11=(Token)match(input,14,FOLLOW_17); if (state.failed) return current;
+ otherlv_11=(Token)match(input,17,FOLLOW_19); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
}
- // InternalStatemachine.g:714:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
- // InternalStatemachine.g:715:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:799:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+ // InternalStatemachine.g:800:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
{
- // InternalStatemachine.g:715:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
- // InternalStatemachine.g:716:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+ // InternalStatemachine.g:800:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+ // InternalStatemachine.g:801:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
}
- pushFollow(FOLLOW_18);
+ pushFollow(FOLLOW_20);
lv_arguments_12_0=ruleJvmArgumentTypeReference();
state._fsp--;
@@ -1939,11 +2189,11 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
break;
default :
- break loop12;
+ break loop14;
}
} while (true);
- otherlv_13=(Token)match(input,21,FOLLOW_19); if (state.failed) return current;
+ otherlv_13=(Token)match(input,24,FOLLOW_21); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
@@ -1960,7 +2210,7 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
break;
default :
- break loop14;
+ break loop16;
}
} while (true);
@@ -1995,7 +2245,7 @@ public final EObject ruleJvmParameterizedTypeReference() throws RecognitionExcep
// $ANTLR start "entryRuleJvmArgumentTypeReference"
- // InternalStatemachine.g:745:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+ // InternalStatemachine.g:830:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
EObject current = null;
@@ -2003,8 +2253,8 @@ public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionExcep
try {
- // InternalStatemachine.g:745:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
- // InternalStatemachine.g:746:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+ // InternalStatemachine.g:830:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+ // InternalStatemachine.g:831:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule());
@@ -2035,7 +2285,7 @@ public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionExcep
// $ANTLR start "ruleJvmArgumentTypeReference"
- // InternalStatemachine.g:752:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+ // InternalStatemachine.g:837:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
EObject current = null;
@@ -2048,29 +2298,29 @@ public final EObject ruleJvmArgumentTypeReference() throws RecognitionException
enterRule();
try {
- // InternalStatemachine.g:758:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
- // InternalStatemachine.g:759:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+ // InternalStatemachine.g:843:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+ // InternalStatemachine.g:844:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
{
- // InternalStatemachine.g:759:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
- int alt16=2;
- int LA16_0 = input.LA(1);
+ // InternalStatemachine.g:844:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+ int alt18=2;
+ int LA18_0 = input.LA(1);
- if ( (LA16_0==RULE_ID||LA16_0==17||LA16_0==19) ) {
- alt16=1;
+ if ( (LA18_0==RULE_ID||LA18_0==20||LA18_0==22) ) {
+ alt18=1;
}
- else if ( (LA16_0==23) ) {
- alt16=2;
+ else if ( (LA18_0==26) ) {
+ alt18=2;
}
else {
if (state.backtracking>0) {state.failed=true; return current;}
NoViableAltException nvae =
- new NoViableAltException("", 16, 0, input);
+ new NoViableAltException("", 18, 0, input);
throw nvae;
}
- switch (alt16) {
+ switch (alt18) {
case 1 :
- // InternalStatemachine.g:760:3: this_JvmTypeReference_0= ruleJvmTypeReference
+ // InternalStatemachine.g:845:3: this_JvmTypeReference_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -2092,7 +2342,7 @@ else if ( (LA16_0==23) ) {
}
break;
case 2 :
- // InternalStatemachine.g:769:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+ // InternalStatemachine.g:854:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
{
if ( state.backtracking==0 ) {
@@ -2138,7 +2388,7 @@ else if ( (LA16_0==23) ) {
// $ANTLR start "entryRuleJvmWildcardTypeReference"
- // InternalStatemachine.g:781:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+ // InternalStatemachine.g:866:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
EObject current = null;
@@ -2146,8 +2396,8 @@ public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionExcep
try {
- // InternalStatemachine.g:781:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
- // InternalStatemachine.g:782:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+ // InternalStatemachine.g:866:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+ // InternalStatemachine.g:867:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule());
@@ -2178,7 +2428,7 @@ public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionExcep
// $ANTLR start "ruleJvmWildcardTypeReference"
- // InternalStatemachine.g:788:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+ // InternalStatemachine.g:873:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
EObject current = null;
@@ -2196,14 +2446,14 @@ public final EObject ruleJvmWildcardTypeReference() throws RecognitionException
enterRule();
try {
- // InternalStatemachine.g:794:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
- // InternalStatemachine.g:795:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+ // InternalStatemachine.g:879:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+ // InternalStatemachine.g:880:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
{
- // InternalStatemachine.g:795:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
- // InternalStatemachine.g:796:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+ // InternalStatemachine.g:880:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+ // InternalStatemachine.g:881:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
{
- // InternalStatemachine.g:796:3: ()
- // InternalStatemachine.g:797:4:
+ // InternalStatemachine.g:881:3: ()
+ // InternalStatemachine.g:882:4:
{
if ( state.backtracking==0 ) {
@@ -2215,41 +2465,41 @@ public final EObject ruleJvmWildcardTypeReference() throws RecognitionException
}
- otherlv_1=(Token)match(input,23,FOLLOW_21); if (state.failed) return current;
+ otherlv_1=(Token)match(input,26,FOLLOW_23); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
}
- // InternalStatemachine.g:807:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
- int alt19=3;
- int LA19_0 = input.LA(1);
+ // InternalStatemachine.g:892:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+ int alt21=3;
+ int LA21_0 = input.LA(1);
- if ( (LA19_0==24) ) {
- alt19=1;
+ if ( (LA21_0==27) ) {
+ alt21=1;
}
- else if ( (LA19_0==26) ) {
- alt19=2;
+ else if ( (LA21_0==29) ) {
+ alt21=2;
}
- switch (alt19) {
+ switch (alt21) {
case 1 :
- // InternalStatemachine.g:808:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+ // InternalStatemachine.g:893:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
{
- // InternalStatemachine.g:808:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
- // InternalStatemachine.g:809:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+ // InternalStatemachine.g:893:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+ // InternalStatemachine.g:894:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
{
- // InternalStatemachine.g:809:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
- // InternalStatemachine.g:810:6: (lv_constraints_2_0= ruleJvmUpperBound )
+ // InternalStatemachine.g:894:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+ // InternalStatemachine.g:895:6: (lv_constraints_2_0= ruleJvmUpperBound )
{
- // InternalStatemachine.g:810:6: (lv_constraints_2_0= ruleJvmUpperBound )
- // InternalStatemachine.g:811:7: lv_constraints_2_0= ruleJvmUpperBound
+ // InternalStatemachine.g:895:6: (lv_constraints_2_0= ruleJvmUpperBound )
+ // InternalStatemachine.g:896:7: lv_constraints_2_0= ruleJvmUpperBound
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
}
- pushFollow(FOLLOW_22);
+ pushFollow(FOLLOW_24);
lv_constraints_2_0=ruleJvmUpperBound();
state._fsp--;
@@ -2273,30 +2523,30 @@ else if ( (LA19_0==26) ) {
}
- // InternalStatemachine.g:828:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
- loop17:
+ // InternalStatemachine.g:913:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+ loop19:
do {
- int alt17=2;
- int LA17_0 = input.LA(1);
+ int alt19=2;
+ int LA19_0 = input.LA(1);
- if ( (LA17_0==25) ) {
- alt17=1;
+ if ( (LA19_0==28) ) {
+ alt19=1;
}
- switch (alt17) {
+ switch (alt19) {
case 1 :
- // InternalStatemachine.g:829:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+ // InternalStatemachine.g:914:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
{
- // InternalStatemachine.g:829:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
- // InternalStatemachine.g:830:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+ // InternalStatemachine.g:914:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+ // InternalStatemachine.g:915:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
}
- pushFollow(FOLLOW_22);
+ pushFollow(FOLLOW_24);
lv_constraints_3_0=ruleJvmUpperBoundAnded();
state._fsp--;
@@ -2322,7 +2572,7 @@ else if ( (LA19_0==26) ) {
break;
default :
- break loop17;
+ break loop19;
}
} while (true);
@@ -2333,23 +2583,23 @@ else if ( (LA19_0==26) ) {
}
break;
case 2 :
- // InternalStatemachine.g:849:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+ // InternalStatemachine.g:934:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
{
- // InternalStatemachine.g:849:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
- // InternalStatemachine.g:850:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+ // InternalStatemachine.g:934:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+ // InternalStatemachine.g:935:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
{
- // InternalStatemachine.g:850:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
- // InternalStatemachine.g:851:6: (lv_constraints_4_0= ruleJvmLowerBound )
+ // InternalStatemachine.g:935:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+ // InternalStatemachine.g:936:6: (lv_constraints_4_0= ruleJvmLowerBound )
{
- // InternalStatemachine.g:851:6: (lv_constraints_4_0= ruleJvmLowerBound )
- // InternalStatemachine.g:852:7: lv_constraints_4_0= ruleJvmLowerBound
+ // InternalStatemachine.g:936:6: (lv_constraints_4_0= ruleJvmLowerBound )
+ // InternalStatemachine.g:937:7: lv_constraints_4_0= ruleJvmLowerBound
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
}
- pushFollow(FOLLOW_22);
+ pushFollow(FOLLOW_24);
lv_constraints_4_0=ruleJvmLowerBound();
state._fsp--;
@@ -2373,30 +2623,30 @@ else if ( (LA19_0==26) ) {
}
- // InternalStatemachine.g:869:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
- loop18:
+ // InternalStatemachine.g:954:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+ loop20:
do {
- int alt18=2;
- int LA18_0 = input.LA(1);
+ int alt20=2;
+ int LA20_0 = input.LA(1);
- if ( (LA18_0==25) ) {
- alt18=1;
+ if ( (LA20_0==28) ) {
+ alt20=1;
}
- switch (alt18) {
+ switch (alt20) {
case 1 :
- // InternalStatemachine.g:870:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+ // InternalStatemachine.g:955:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
{
- // InternalStatemachine.g:870:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
- // InternalStatemachine.g:871:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+ // InternalStatemachine.g:955:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+ // InternalStatemachine.g:956:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
}
- pushFollow(FOLLOW_22);
+ pushFollow(FOLLOW_24);
lv_constraints_5_0=ruleJvmLowerBoundAnded();
state._fsp--;
@@ -2422,7 +2672,7 @@ else if ( (LA19_0==26) ) {
break;
default :
- break loop18;
+ break loop20;
}
} while (true);
@@ -2460,7 +2710,7 @@ else if ( (LA19_0==26) ) {
// $ANTLR start "entryRuleJvmUpperBound"
- // InternalStatemachine.g:894:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+ // InternalStatemachine.g:979:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
public final EObject entryRuleJvmUpperBound() throws RecognitionException {
EObject current = null;
@@ -2468,8 +2718,8 @@ public final EObject entryRuleJvmUpperBound() throws RecognitionException {
try {
- // InternalStatemachine.g:894:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
- // InternalStatemachine.g:895:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+ // InternalStatemachine.g:979:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+ // InternalStatemachine.g:980:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmUpperBoundRule());
@@ -2500,7 +2750,7 @@ public final EObject entryRuleJvmUpperBound() throws RecognitionException {
// $ANTLR start "ruleJvmUpperBound"
- // InternalStatemachine.g:901:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ // InternalStatemachine.g:986:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
public final EObject ruleJvmUpperBound() throws RecognitionException {
EObject current = null;
@@ -2512,23 +2762,23 @@ public final EObject ruleJvmUpperBound() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:907:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
- // InternalStatemachine.g:908:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:992:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:993:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
{
- // InternalStatemachine.g:908:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
- // InternalStatemachine.g:909:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:993:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:994:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
{
- otherlv_0=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+ otherlv_0=(Token)match(input,27,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
}
- // InternalStatemachine.g:913:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:914:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:998:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:999:4: (lv_typeReference_1_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:914:4: (lv_typeReference_1_0= ruleJvmTypeReference )
- // InternalStatemachine.g:915:5: lv_typeReference_1_0= ruleJvmTypeReference
+ // InternalStatemachine.g:999:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1000:5: lv_typeReference_1_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -2584,7 +2834,7 @@ public final EObject ruleJvmUpperBound() throws RecognitionException {
// $ANTLR start "entryRuleJvmUpperBoundAnded"
- // InternalStatemachine.g:936:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+ // InternalStatemachine.g:1021:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
EObject current = null;
@@ -2592,8 +2842,8 @@ public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
try {
- // InternalStatemachine.g:936:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
- // InternalStatemachine.g:937:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+ // InternalStatemachine.g:1021:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+ // InternalStatemachine.g:1022:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule());
@@ -2624,7 +2874,7 @@ public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
// $ANTLR start "ruleJvmUpperBoundAnded"
- // InternalStatemachine.g:943:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ // InternalStatemachine.g:1028:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
EObject current = null;
@@ -2636,23 +2886,23 @@ public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:949:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
- // InternalStatemachine.g:950:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1034:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:1035:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
{
- // InternalStatemachine.g:950:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
- // InternalStatemachine.g:951:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1035:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1036:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
{
- otherlv_0=(Token)match(input,25,FOLLOW_14); if (state.failed) return current;
+ otherlv_0=(Token)match(input,28,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
}
- // InternalStatemachine.g:955:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:956:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1040:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1041:4: (lv_typeReference_1_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:956:4: (lv_typeReference_1_0= ruleJvmTypeReference )
- // InternalStatemachine.g:957:5: lv_typeReference_1_0= ruleJvmTypeReference
+ // InternalStatemachine.g:1041:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1042:5: lv_typeReference_1_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -2708,7 +2958,7 @@ public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
// $ANTLR start "entryRuleJvmLowerBound"
- // InternalStatemachine.g:978:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+ // InternalStatemachine.g:1063:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
public final EObject entryRuleJvmLowerBound() throws RecognitionException {
EObject current = null;
@@ -2716,8 +2966,8 @@ public final EObject entryRuleJvmLowerBound() throws RecognitionException {
try {
- // InternalStatemachine.g:978:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
- // InternalStatemachine.g:979:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+ // InternalStatemachine.g:1063:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+ // InternalStatemachine.g:1064:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmLowerBoundRule());
@@ -2748,7 +2998,7 @@ public final EObject entryRuleJvmLowerBound() throws RecognitionException {
// $ANTLR start "ruleJvmLowerBound"
- // InternalStatemachine.g:985:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ // InternalStatemachine.g:1070:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
public final EObject ruleJvmLowerBound() throws RecognitionException {
EObject current = null;
@@ -2760,23 +3010,23 @@ public final EObject ruleJvmLowerBound() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:991:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
- // InternalStatemachine.g:992:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1076:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:1077:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
{
- // InternalStatemachine.g:992:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
- // InternalStatemachine.g:993:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1077:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1078:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
{
- otherlv_0=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+ otherlv_0=(Token)match(input,29,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
}
- // InternalStatemachine.g:997:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:998:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1082:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1083:4: (lv_typeReference_1_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:998:4: (lv_typeReference_1_0= ruleJvmTypeReference )
- // InternalStatemachine.g:999:5: lv_typeReference_1_0= ruleJvmTypeReference
+ // InternalStatemachine.g:1083:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1084:5: lv_typeReference_1_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -2832,7 +3082,7 @@ public final EObject ruleJvmLowerBound() throws RecognitionException {
// $ANTLR start "entryRuleJvmLowerBoundAnded"
- // InternalStatemachine.g:1020:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+ // InternalStatemachine.g:1105:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
EObject current = null;
@@ -2840,8 +3090,8 @@ public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
try {
- // InternalStatemachine.g:1020:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
- // InternalStatemachine.g:1021:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+ // InternalStatemachine.g:1105:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+ // InternalStatemachine.g:1106:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule());
@@ -2872,7 +3122,7 @@ public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
// $ANTLR start "ruleJvmLowerBoundAnded"
- // InternalStatemachine.g:1027:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+ // InternalStatemachine.g:1112:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
EObject current = null;
@@ -2884,23 +3134,23 @@ public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:1033:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
- // InternalStatemachine.g:1034:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1118:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+ // InternalStatemachine.g:1119:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
{
- // InternalStatemachine.g:1034:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
- // InternalStatemachine.g:1035:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1119:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+ // InternalStatemachine.g:1120:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
{
- otherlv_0=(Token)match(input,25,FOLLOW_14); if (state.failed) return current;
+ otherlv_0=(Token)match(input,28,FOLLOW_16); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
}
- // InternalStatemachine.g:1039:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
- // InternalStatemachine.g:1040:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1124:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+ // InternalStatemachine.g:1125:4: (lv_typeReference_1_0= ruleJvmTypeReference )
{
- // InternalStatemachine.g:1040:4: (lv_typeReference_1_0= ruleJvmTypeReference )
- // InternalStatemachine.g:1041:5: lv_typeReference_1_0= ruleJvmTypeReference
+ // InternalStatemachine.g:1125:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+ // InternalStatemachine.g:1126:5: lv_typeReference_1_0= ruleJvmTypeReference
{
if ( state.backtracking==0 ) {
@@ -2956,7 +3206,7 @@ public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
// $ANTLR start "entryRuleQualifiedName"
- // InternalStatemachine.g:1062:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+ // InternalStatemachine.g:1147:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
public final String entryRuleQualifiedName() throws RecognitionException {
String current = null;
@@ -2964,8 +3214,8 @@ public final String entryRuleQualifiedName() throws RecognitionException {
try {
- // InternalStatemachine.g:1062:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
- // InternalStatemachine.g:1063:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+ // InternalStatemachine.g:1147:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+ // InternalStatemachine.g:1148:2: iv_ruleQualifiedName= ruleQualifiedName EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameRule());
@@ -2996,7 +3246,7 @@ public final String entryRuleQualifiedName() throws RecognitionException {
// $ANTLR start "ruleQualifiedName"
- // InternalStatemachine.g:1069:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) ;
+ // InternalStatemachine.g:1154:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) ;
public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
@@ -3010,18 +3260,18 @@ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionExcept
enterRule();
try {
- // InternalStatemachine.g:1075:2: ( (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) )
- // InternalStatemachine.g:1076:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
+ // InternalStatemachine.g:1160:2: ( (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) )
+ // InternalStatemachine.g:1161:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
{
- // InternalStatemachine.g:1076:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
- // InternalStatemachine.g:1077:3: this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )*
+ // InternalStatemachine.g:1161:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
+ // InternalStatemachine.g:1162:3: this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )*
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
}
- pushFollow(FOLLOW_19);
+ pushFollow(FOLLOW_21);
this_ValidID_0=ruleValidID();
state._fsp--;
@@ -3036,28 +3286,28 @@ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionExcept
afterParserOrEnumRuleCall();
}
- // InternalStatemachine.g:1087:3: (kw= '.' this_ValidID_2= ruleValidID )*
- loop20:
+ // InternalStatemachine.g:1172:3: (kw= '.' this_ValidID_2= ruleValidID )*
+ loop22:
do {
- int alt20=2;
- int LA20_0 = input.LA(1);
+ int alt22=2;
+ int LA22_0 = input.LA(1);
- if ( (LA20_0==22) ) {
- int LA20_2 = input.LA(2);
+ if ( (LA22_0==25) ) {
+ int LA22_2 = input.LA(2);
- if ( (LA20_2==RULE_ID) ) {
- alt20=1;
+ if ( (LA22_2==RULE_ID) ) {
+ alt22=1;
}
}
- switch (alt20) {
+ switch (alt22) {
case 1 :
- // InternalStatemachine.g:1088:4: kw= '.' this_ValidID_2= ruleValidID
+ // InternalStatemachine.g:1173:4: kw= '.' this_ValidID_2= ruleValidID
{
- kw=(Token)match(input,22,FOLLOW_3); if (state.failed) return current;
+ kw=(Token)match(input,25,FOLLOW_3); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
@@ -3069,7 +3319,7 @@ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionExcept
newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
}
- pushFollow(FOLLOW_19);
+ pushFollow(FOLLOW_21);
this_ValidID_2=ruleValidID();
state._fsp--;
@@ -3089,7 +3339,7 @@ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionExcept
break;
default :
- break loop20;
+ break loop22;
}
} while (true);
@@ -3118,7 +3368,7 @@ public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionExcept
// $ANTLR start "entryRuleQualifiedNameWithWildcard"
- // InternalStatemachine.g:1108:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+ // InternalStatemachine.g:1193:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
String current = null;
@@ -3126,8 +3376,8 @@ public final String entryRuleQualifiedNameWithWildcard() throws RecognitionExcep
try {
- // InternalStatemachine.g:1108:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
- // InternalStatemachine.g:1109:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+ // InternalStatemachine.g:1193:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+ // InternalStatemachine.g:1194:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule());
@@ -3158,7 +3408,7 @@ public final String entryRuleQualifiedNameWithWildcard() throws RecognitionExcep
// $ANTLR start "ruleQualifiedNameWithWildcard"
- // InternalStatemachine.g:1115:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+ // InternalStatemachine.g:1200:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
@@ -3170,18 +3420,18 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws Recog
enterRule();
try {
- // InternalStatemachine.g:1121:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
- // InternalStatemachine.g:1122:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+ // InternalStatemachine.g:1206:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+ // InternalStatemachine.g:1207:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
{
- // InternalStatemachine.g:1122:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
- // InternalStatemachine.g:1123:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+ // InternalStatemachine.g:1207:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+ // InternalStatemachine.g:1208:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
}
- pushFollow(FOLLOW_23);
+ pushFollow(FOLLOW_25);
this_QualifiedName_0=ruleQualifiedName();
state._fsp--;
@@ -3196,14 +3446,14 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws Recog
afterParserOrEnumRuleCall();
}
- kw=(Token)match(input,22,FOLLOW_24); if (state.failed) return current;
+ kw=(Token)match(input,25,FOLLOW_26); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
}
- kw=(Token)match(input,27,FOLLOW_2); if (state.failed) return current;
+ kw=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
@@ -3235,7 +3485,7 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws Recog
// $ANTLR start "entryRuleValidID"
- // InternalStatemachine.g:1147:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+ // InternalStatemachine.g:1232:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
public final String entryRuleValidID() throws RecognitionException {
String current = null;
@@ -3243,8 +3493,8 @@ public final String entryRuleValidID() throws RecognitionException {
try {
- // InternalStatemachine.g:1147:47: (iv_ruleValidID= ruleValidID EOF )
- // InternalStatemachine.g:1148:2: iv_ruleValidID= ruleValidID EOF
+ // InternalStatemachine.g:1232:47: (iv_ruleValidID= ruleValidID EOF )
+ // InternalStatemachine.g:1233:2: iv_ruleValidID= ruleValidID EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getValidIDRule());
@@ -3275,7 +3525,7 @@ public final String entryRuleValidID() throws RecognitionException {
// $ANTLR start "ruleValidID"
- // InternalStatemachine.g:1154:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+ // InternalStatemachine.g:1239:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
@@ -3285,8 +3535,8 @@ public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:1160:2: (this_ID_0= RULE_ID )
- // InternalStatemachine.g:1161:2: this_ID_0= RULE_ID
+ // InternalStatemachine.g:1245:2: (this_ID_0= RULE_ID )
+ // InternalStatemachine.g:1246:2: this_ID_0= RULE_ID
{
this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
@@ -3321,7 +3571,7 @@ public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
// $ANTLR start "entryRuleXImportDeclaration"
- // InternalStatemachine.g:1171:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+ // InternalStatemachine.g:1256:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
public final EObject entryRuleXImportDeclaration() throws RecognitionException {
EObject current = null;
@@ -3329,8 +3579,8 @@ public final EObject entryRuleXImportDeclaration() throws RecognitionException {
try {
- // InternalStatemachine.g:1171:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
- // InternalStatemachine.g:1172:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+ // InternalStatemachine.g:1256:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+ // InternalStatemachine.g:1257:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXImportDeclarationRule());
@@ -3361,7 +3611,7 @@ public final EObject entryRuleXImportDeclaration() throws RecognitionException {
// $ANTLR start "ruleXImportDeclaration"
- // InternalStatemachine.g:1178:1: ruleXImportDeclaration returns [EObject current=null] : (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) ;
+ // InternalStatemachine.g:1263:1: ruleXImportDeclaration returns [EObject current=null] : (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) ;
public final EObject ruleXImportDeclaration() throws RecognitionException {
EObject current = null;
@@ -3379,35 +3629,35 @@ public final EObject ruleXImportDeclaration() throws RecognitionException {
enterRule();
try {
- // InternalStatemachine.g:1184:2: ( (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) )
- // InternalStatemachine.g:1185:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
+ // InternalStatemachine.g:1269:2: ( (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) )
+ // InternalStatemachine.g:1270:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
{
- // InternalStatemachine.g:1185:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
- // InternalStatemachine.g:1186:3: otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )?
+ // InternalStatemachine.g:1270:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
+ // InternalStatemachine.g:1271:3: otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )?
{
- otherlv_0=(Token)match(input,28,FOLLOW_25); if (state.failed) return current;
+ otherlv_0=(Token)match(input,31,FOLLOW_27); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
}
- // InternalStatemachine.g:1190:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )
- int alt23=3;
- alt23 = dfa23.predict(input);
- switch (alt23) {
+ // InternalStatemachine.g:1275:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )
+ int alt25=3;
+ alt25 = dfa25.predict(input);
+ switch (alt25) {
case 1 :
- // InternalStatemachine.g:1191:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
+ // InternalStatemachine.g:1276:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
{
- // InternalStatemachine.g:1191:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
- // InternalStatemachine.g:1192:5: ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
+ // InternalStatemachine.g:1276:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
+ // InternalStatemachine.g:1277:5: ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
{
- // InternalStatemachine.g:1192:5: ( (lv_static_1_0= 'static' ) )
- // InternalStatemachine.g:1193:6: (lv_static_1_0= 'static' )
+ // InternalStatemachine.g:1277:5: ( (lv_static_1_0= 'static' ) )
+ // InternalStatemachine.g:1278:6: (lv_static_1_0= 'static' )
{
- // InternalStatemachine.g:1193:6: (lv_static_1_0= 'static' )
- // InternalStatemachine.g:1194:7: lv_static_1_0= 'static'
+ // InternalStatemachine.g:1278:6: (lv_static_1_0= 'static' )
+ // InternalStatemachine.g:1279:7: lv_static_1_0= 'static'
{
- lv_static_1_0=(Token)match(input,29,FOLLOW_26); if (state.failed) return current;
+ lv_static_1_0=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
@@ -3427,21 +3677,21 @@ public final EObject ruleXImportDeclaration() throws RecognitionException {
}
- // InternalStatemachine.g:1206:5: ( (lv_extension_2_0= 'extension' ) )?
- int alt21=2;
- int LA21_0 = input.LA(1);
+ // InternalStatemachine.g:1291:5: ( (lv_extension_2_0= 'extension' ) )?
+ int alt23=2;
+ int LA23_0 = input.LA(1);
- if ( (LA21_0==30) ) {
- alt21=1;
+ if ( (LA23_0==33) ) {
+ alt23=1;
}
- switch (alt21) {
+ switch (alt23) {
case 1 :
- // InternalStatemachine.g:1207:6: (lv_extension_2_0= 'extension' )
+ // InternalStatemachine.g:1292:6: (lv_extension_2_0= 'extension' )
{
- // InternalStatemachine.g:1207:6: (lv_extension_2_0= 'extension' )
- // InternalStatemachine.g:1208:7: lv_extension_2_0= 'extension'
+ // InternalStatemachine.g:1292:6: (lv_extension_2_0= 'extension' )
+ // InternalStatemachine.g:1293:7: lv_extension_2_0= 'extension'
{
- lv_extension_2_0=(Token)match(input,30,FOLLOW_26); if (state.failed) return current;
+ lv_extension_2_0=(Token)match(input,33,FOLLOW_28); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
@@ -3464,11 +3714,11 @@ public final EObject ruleXImportDeclaration() throws RecognitionException {
}
- // InternalStatemachine.g:1220:5: ( ( ruleQualifiedNameInStaticImport ) )
- // InternalStatemachine.g:1221:6: ( ruleQualifiedNameInStaticImport )
+ // InternalStatemachine.g:1305:5: ( ( ruleQualifiedNameInStaticImport ) )
+ // InternalStatemachine.g:1306:6: ( ruleQualifiedNameInStaticImport )
{
- // InternalStatemachine.g:1221:6: ( ruleQualifiedNameInStaticImport )
- // InternalStatemachine.g:1222:7: ruleQualifiedNameInStaticImport
+ // InternalStatemachine.g:1306:6: ( ruleQualifiedNameInStaticImport )
+ // InternalStatemachine.g:1307:7: ruleQualifiedNameInStaticImport
{
if ( state.backtracking==0 ) {
@@ -3482,7 +3732,7 @@ public final EObject ruleXImportDeclaration() throws RecognitionException {
newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0());
}
- pushFollow(FOLLOW_27);
+ pushFollow(FOLLOW_29);
ruleQualifiedNameInStaticImport();
state._fsp--;
@@ -3498,34 +3748,34 @@ public final EObject ruleXImportDeclaration() throws RecognitionException {
}
- // InternalStatemachine.g:1236:5: ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
- int alt22=2;
- int LA22_0 = input.LA(1);
+ // InternalStatemachine.g:1321:5: ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
+ int alt24=2;
+ int LA24_0 = input.LA(1);
- if ( (LA22_0==27) ) {
- alt22=1;
+ if ( (LA24_0==30) ) {
+ alt24=1;
}
- else if ( (LA22_0==RULE_ID) ) {
- alt22=2;
+ else if ( (LA24_0==RULE_ID) ) {
+ alt24=2;
}
else {
if (state.backtracking>0) {state.failed=true; return current;}
NoViableAltException nvae =
- new NoViableAltException("", 22, 0, input);
+ new NoViableAltException("", 24, 0, input);
throw nvae;
}
- switch (alt22) {
+ switch (alt24) {
case 1 :
- // InternalStatemachine.g:1237:6: ( (lv_wildcard_4_0= '*' ) )
+ // InternalStatemachine.g:1322:6: ( (lv_wildcard_4_0= '*' ) )
{
- // InternalStatemachine.g:1237:6: ( (lv_wildcard_4_0= '*' ) )
- // InternalStatemachine.g:1238:7: (lv_wildcard_4_0= '*' )
+ // InternalStatemachine.g:1322:6: ( (lv_wildcard_4_0= '*' ) )
+ // InternalStatemachine.g:1323:7: (lv_wildcard_4_0= '*' )
{
- // InternalStatemachine.g:1238:7: (lv_wildcard_4_0= '*' )
- // InternalStatemachine.g:1239:8: lv_wildcard_4_0= '*'
+ // InternalStatemachine.g:1323:7: (lv_wildcard_4_0= '*' )
+ // InternalStatemachine.g:1324:8: lv_wildcard_4_0= '*'
{
- lv_wildcard_4_0=(Token)match(input,27,FOLLOW_28); if (state.failed) return current;
+ lv_wildcard_4_0=(Token)match(input,30,FOLLOW_30); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
@@ -3549,20 +3799,20 @@ else if ( (LA22_0==RULE_ID) ) {
}
break;
case 2 :
- // InternalStatemachine.g:1252:6: ( (lv_memberName_5_0= ruleValidID ) )
+ // InternalStatemachine.g:1337:6: ( (lv_memberName_5_0= ruleValidID ) )
{
- // InternalStatemachine.g:1252:6: ( (lv_memberName_5_0= ruleValidID ) )
- // InternalStatemachine.g:1253:7: (lv_memberName_5_0= ruleValidID )
+ // InternalStatemachine.g:1337:6: ( (lv_memberName_5_0= ruleValidID ) )
+ // InternalStatemachine.g:1338:7: (lv_memberName_5_0= ruleValidID )
{
- // InternalStatemachine.g:1253:7: (lv_memberName_5_0= ruleValidID )
- // InternalStatemachine.g:1254:8: lv_memberName_5_0= ruleValidID
+ // InternalStatemachine.g:1338:7: (lv_memberName_5_0= ruleValidID )
+ // InternalStatemachine.g:1339:8: lv_memberName_5_0= ruleValidID
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0());
}
- pushFollow(FOLLOW_28);
+ pushFollow(FOLLOW_30);
lv_memberName_5_0=ruleValidID();
state._fsp--;
@@ -3599,13 +3849,13 @@ else if ( (LA22_0==RULE_ID) ) {
}
break;
case 2 :
- // InternalStatemachine.g:1274:4: ( ( ruleQualifiedName ) )
+ // InternalStatemachine.g:1359:4: ( ( ruleQualifiedName ) )
{
- // InternalStatemachine.g:1274:4: ( ( ruleQualifiedName ) )
- // InternalStatemachine.g:1275:5: ( ruleQualifiedName )
+ // InternalStatemachine.g:1359:4: ( ( ruleQualifiedName ) )
+ // InternalStatemachine.g:1360:5: ( ruleQualifiedName )
{
- // InternalStatemachine.g:1275:5: ( ruleQualifiedName )
- // InternalStatemachine.g:1276:6: ruleQualifiedName
+ // InternalStatemachine.g:1360:5: ( ruleQualifiedName )
+ // InternalStatemachine.g:1361:6: ruleQualifiedName
{
if ( state.backtracking==0 ) {
@@ -3619,7 +3869,7 @@ else if ( (LA22_0==RULE_ID) ) {
newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0());
}
- pushFollow(FOLLOW_28);
+ pushFollow(FOLLOW_30);
ruleQualifiedName();
state._fsp--;
@@ -3639,20 +3889,20 @@ else if ( (LA22_0==RULE_ID) ) {
}
break;
case 3 :
- // InternalStatemachine.g:1291:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
+ // InternalStatemachine.g:1376:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
{
- // InternalStatemachine.g:1291:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
- // InternalStatemachine.g:1292:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
+ // InternalStatemachine.g:1376:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
+ // InternalStatemachine.g:1377:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
{
- // InternalStatemachine.g:1292:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
- // InternalStatemachine.g:1293:6: lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard
+ // InternalStatemachine.g:1377:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
+ // InternalStatemachine.g:1378:6: lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0());
}
- pushFollow(FOLLOW_28);
+ pushFollow(FOLLOW_30);
lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard();
state._fsp--;
@@ -3682,18 +3932,18 @@ else if ( (LA22_0==RULE_ID) ) {
}
- // InternalStatemachine.g:1311:3: (otherlv_8= ';' )?
- int alt24=2;
- int LA24_0 = input.LA(1);
+ // InternalStatemachine.g:1396:3: (otherlv_8= ';' )?
+ int alt26=2;
+ int LA26_0 = input.LA(1);
- if ( (LA24_0==31) ) {
- alt24=1;
+ if ( (LA26_0==34) ) {
+ alt26=1;
}
- switch (alt24) {
+ switch (alt26) {
case 1 :
- // InternalStatemachine.g:1312:4: otherlv_8= ';'
+ // InternalStatemachine.g:1397:4: otherlv_8= ';'
{
- otherlv_8=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
+ otherlv_8=(Token)match(input,34,FOLLOW_2); if (state.failed) return current;
if ( state.backtracking==0 ) {
newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
@@ -3730,7 +3980,7 @@ else if ( (LA22_0==RULE_ID) ) {
// $ANTLR start "entryRuleQualifiedNameInStaticImport"
- // InternalStatemachine.g:1321:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+ // InternalStatemachine.g:1406:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
String current = null;
@@ -3738,8 +3988,8 @@ public final String entryRuleQualifiedNameInStaticImport() throws RecognitionExc
try {
- // InternalStatemachine.g:1321:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
- // InternalStatemachine.g:1322:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+ // InternalStatemachine.g:1406:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+ // InternalStatemachine.g:1407:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule());
@@ -3770,7 +4020,7 @@ public final String entryRuleQualifiedNameInStaticImport() throws RecognitionExc
// $ANTLR start "ruleQualifiedNameInStaticImport"
- // InternalStatemachine.g:1328:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+ // InternalStatemachine.g:1413:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
@@ -3782,37 +4032,37 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws Rec
enterRule();
try {
- // InternalStatemachine.g:1334:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
- // InternalStatemachine.g:1335:2: (this_ValidID_0= ruleValidID kw= '.' )+
+ // InternalStatemachine.g:1419:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+ // InternalStatemachine.g:1420:2: (this_ValidID_0= ruleValidID kw= '.' )+
{
- // InternalStatemachine.g:1335:2: (this_ValidID_0= ruleValidID kw= '.' )+
- int cnt25=0;
- loop25:
+ // InternalStatemachine.g:1420:2: (this_ValidID_0= ruleValidID kw= '.' )+
+ int cnt27=0;
+ loop27:
do {
- int alt25=2;
- int LA25_0 = input.LA(1);
+ int alt27=2;
+ int LA27_0 = input.LA(1);
- if ( (LA25_0==RULE_ID) ) {
- int LA25_2 = input.LA(2);
+ if ( (LA27_0==RULE_ID) ) {
+ int LA27_2 = input.LA(2);
- if ( (LA25_2==22) ) {
- alt25=1;
+ if ( (LA27_2==25) ) {
+ alt27=1;
}
}
- switch (alt25) {
+ switch (alt27) {
case 1 :
- // InternalStatemachine.g:1336:3: this_ValidID_0= ruleValidID kw= '.'
+ // InternalStatemachine.g:1421:3: this_ValidID_0= ruleValidID kw= '.'
{
if ( state.backtracking==0 ) {
newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
}
- pushFollow(FOLLOW_23);
+ pushFollow(FOLLOW_25);
this_ValidID_0=ruleValidID();
state._fsp--;
@@ -3827,7 +4077,7 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws Rec
afterParserOrEnumRuleCall();
}
- kw=(Token)match(input,22,FOLLOW_29); if (state.failed) return current;
+ kw=(Token)match(input,25,FOLLOW_31); if (state.failed) return current;
if ( state.backtracking==0 ) {
current.merge(kw);
@@ -3839,13 +4089,13 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws Rec
break;
default :
- if ( cnt25 >= 1 ) break loop25;
+ if ( cnt27 >= 1 ) break loop27;
if (state.backtracking>0) {state.failed=true; return current;}
EarlyExitException eee =
- new EarlyExitException(25, input);
+ new EarlyExitException(27, input);
throw eee;
}
- cnt25++;
+ cnt27++;
} while (true);
@@ -3870,14 +4120,14 @@ public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws Rec
// $ANTLR start synpred1_InternalStatemachine
public final void synpred1_InternalStatemachine_fragment() throws RecognitionException {
- // InternalStatemachine.g:393:5: ( ( () ruleArrayBrackets ) )
- // InternalStatemachine.g:393:6: ( () ruleArrayBrackets )
+ // InternalStatemachine.g:478:5: ( ( () ruleArrayBrackets ) )
+ // InternalStatemachine.g:478:6: ( () ruleArrayBrackets )
{
- // InternalStatemachine.g:393:6: ( () ruleArrayBrackets )
- // InternalStatemachine.g:394:6: () ruleArrayBrackets
+ // InternalStatemachine.g:478:6: ( () ruleArrayBrackets )
+ // InternalStatemachine.g:479:6: () ruleArrayBrackets
{
- // InternalStatemachine.g:394:6: ()
- // InternalStatemachine.g:395:6:
+ // InternalStatemachine.g:479:6: ()
+ // InternalStatemachine.g:480:6:
{
}
@@ -3896,10 +4146,10 @@ public final void synpred1_InternalStatemachine_fragment() throws RecognitionExc
// $ANTLR start synpred2_InternalStatemachine
public final void synpred2_InternalStatemachine_fragment() throws RecognitionException {
- // InternalStatemachine.g:590:5: ( '<' )
- // InternalStatemachine.g:590:6: '<'
+ // InternalStatemachine.g:675:5: ( '<' )
+ // InternalStatemachine.g:675:6: '<'
{
- match(input,20,FOLLOW_2); if (state.failed) return ;
+ match(input,23,FOLLOW_2); if (state.failed) return ;
}
}
@@ -3907,18 +4157,18 @@ public final void synpred2_InternalStatemachine_fragment() throws RecognitionExc
// $ANTLR start synpred3_InternalStatemachine
public final void synpred3_InternalStatemachine_fragment() throws RecognitionException {
- // InternalStatemachine.g:646:6: ( ( () '.' ) )
- // InternalStatemachine.g:646:7: ( () '.' )
+ // InternalStatemachine.g:731:6: ( ( () '.' ) )
+ // InternalStatemachine.g:731:7: ( () '.' )
{
- // InternalStatemachine.g:646:7: ( () '.' )
- // InternalStatemachine.g:647:7: () '.'
+ // InternalStatemachine.g:731:7: ( () '.' )
+ // InternalStatemachine.g:732:7: () '.'
{
- // InternalStatemachine.g:647:7: ()
- // InternalStatemachine.g:648:7:
+ // InternalStatemachine.g:732:7: ()
+ // InternalStatemachine.g:733:7:
{
}
- match(input,22,FOLLOW_2); if (state.failed) return ;
+ match(input,25,FOLLOW_2); if (state.failed) return ;
}
@@ -3929,10 +4179,10 @@ public final void synpred3_InternalStatemachine_fragment() throws RecognitionExc
// $ANTLR start synpred4_InternalStatemachine
public final void synpred4_InternalStatemachine_fragment() throws RecognitionException {
- // InternalStatemachine.g:684:7: ( '<' )
- // InternalStatemachine.g:684:8: '<'
+ // InternalStatemachine.g:769:7: ( '<' )
+ // InternalStatemachine.g:769:8: '<'
{
- match(input,20,FOLLOW_2); if (state.failed) return ;
+ match(input,23,FOLLOW_2); if (state.failed) return ;
}
}
@@ -3998,21 +4248,21 @@ public final boolean synpred1_InternalStatemachine() {
}
- protected DFA23 dfa23 = new DFA23(this);
+ protected DFA25 dfa25 = new DFA25(this);
static final String dfa_1s = "\7\uffff";
- static final String dfa_2s = "\2\uffff\1\4\3\uffff\1\4";
- static final String dfa_3s = "\1\4\1\uffff\1\26\1\4\2\uffff\1\26";
- static final String dfa_4s = "\1\35\1\uffff\1\37\1\33\2\uffff\1\37";
- static final String dfa_5s = "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+ static final String dfa_2s = "\2\uffff\1\4\2\uffff\1\4\1\uffff";
+ static final String dfa_3s = "\1\4\1\uffff\1\31\1\4\1\uffff\1\31\1\uffff";
+ static final String dfa_4s = "\1\40\1\uffff\1\42\1\36\1\uffff\1\42\1\uffff";
+ static final String dfa_5s = "\1\uffff\1\1\2\uffff\1\2\1\uffff\1\3";
static final String dfa_6s = "\7\uffff}>";
static final String[] dfa_7s = {
- "\1\2\30\uffff\1\1",
+ "\1\2\33\uffff\1\1",
"",
"\1\3\10\uffff\1\4",
- "\1\6\26\uffff\1\5",
- "",
+ "\1\5\31\uffff\1\6",
"",
- "\1\3\10\uffff\1\4"
+ "\1\3\10\uffff\1\4",
+ ""
};
static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -4023,11 +4273,11 @@ public final boolean synpred1_InternalStatemachine() {
static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
- class DFA23 extends DFA {
+ class DFA25 extends DFA {
- public DFA23(BaseRecognizer recognizer) {
+ public DFA25(BaseRecognizer recognizer) {
this.recognizer = recognizer;
- this.decisionNumber = 23;
+ this.decisionNumber = 25;
this.eot = dfa_1;
this.eof = dfa_2;
this.min = dfa_3;
@@ -4037,7 +4287,7 @@ public DFA23(BaseRecognizer recognizer) {
this.transition = dfa_7;
}
public String getDescription() {
- return "1190:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )";
+ return "1275:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )";
}
}
@@ -4046,30 +4296,32 @@ public String getDescription() {
public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000010L});
public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000810L});
- public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000003002L});
- public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000002002L});
- public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000002800L});
- public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000004000L});
- public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000800L});
- public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000008002L});
- public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000010000L});
- public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x00000000000E0010L});
- public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000044000L});
- public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x00000000000A0010L});
- public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000080000L});
- public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000100002L});
- public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x00000000008A0010L});
- public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000204000L});
- public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000400002L});
- public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000500002L});
- public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000005000002L});
- public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000002000002L});
- public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000400000L});
- public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000008000000L});
- public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000020000010L});
- public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000040000010L});
- public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000008000010L});
- public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000080000002L});
- public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000012L});
+ public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000019002L});
+ public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000018002L});
+ public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000010002L});
+ public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000006000L});
+ public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000010800L});
+ public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000800L});
+ public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000020000L});
+ public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000040002L});
+ public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000080000L});
+ public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000700010L});
+ public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000220000L});
+ public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000500010L});
+ public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000400000L});
+ public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000004500010L});
+ public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000001020000L});
+ public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000002000002L});
+ public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000002800002L});
+ public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000028000002L});
+ public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000010000002L});
+ public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000002000000L});
+ public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000040000000L});
+ public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000100000010L});
+ public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000200000010L});
+ public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000040000010L});
+ public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000400000002L});
+ public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000012L});
}
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
index 2be58d521..232fee10c 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/serializer/StatemachineSemanticSequencer.java
@@ -6,6 +6,7 @@
import com.google.inject.Inject;
import de.cognicrypt.order.editor.services.StatemachineGrammarAccess;
import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.State;
import de.cognicrypt.order.editor.statemachine.Statemachine;
import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
@@ -50,6 +51,9 @@ public void sequence(ISerializationContext context, EObject semanticObject) {
case StatemachinePackage.EVENT:
sequence_Event(context, (Event) semanticObject);
return;
+ case StatemachinePackage.FINAL_STATE:
+ sequence_FinalState(context, (FinalState) semanticObject);
+ return;
case StatemachinePackage.STATE:
sequence_State(context, (State) semanticObject);
return;
@@ -145,12 +149,30 @@ protected void sequence_Event(ISerializationContext context, Event semanticObjec
}
+ /**
+ * Contexts:
+ * FinalState returns FinalState
+ *
+ * Constraint:
+ * name=ID
+ */
+ protected void sequence_FinalState(ISerializationContext context, FinalState semanticObject) {
+ if (errorAcceptor != null) {
+ if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.FINAL_STATE__NAME) == ValueTransient.YES)
+ errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.FINAL_STATE__NAME));
+ }
+ SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+ feeder.accept(grammarAccess.getFinalStateAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+ feeder.finish();
+ }
+
+
/**
* Contexts:
* State returns State
*
* Constraint:
- * (name=ID transitions+=Transition*)
+ * (name=ID isFinal?='true'? transitions+=Transition*)
*/
protected void sequence_State(ISerializationContext context, State semanticObject) {
genericSequencer.createSequence(context, semanticObject);
@@ -162,7 +184,7 @@ protected void sequence_State(ISerializationContext context, State semanticObjec
* Statemachine returns Statemachine
*
* Constraint:
- * (events+=Event* states+=State* transitions+=Transition*)
+ * (events+=Event* states+=State* finalstates+=FinalState* transitions+=Transition*)
*/
protected void sequence_Statemachine(ISerializationContext context, Statemachine semanticObject) {
genericSequencer.createSequence(context, semanticObject);
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
index 4971ea3bf..7278884c7 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/services/StatemachineGrammarAccess.java
@@ -7,6 +7,7 @@
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Alternatives;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.Grammar;
@@ -34,8 +35,10 @@ public class StatemachineElements extends AbstractParserRuleElementFinder {
private final Keyword cEndKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
private final Assignment cStatesAssignment_2 = (Assignment)cGroup.eContents().get(2);
private final RuleCall cStatesStateParserRuleCall_2_0 = (RuleCall)cStatesAssignment_2.eContents().get(0);
- private final Assignment cTransitionsAssignment_3 = (Assignment)cGroup.eContents().get(3);
- private final RuleCall cTransitionsTransitionParserRuleCall_3_0 = (RuleCall)cTransitionsAssignment_3.eContents().get(0);
+ private final Assignment cFinalstatesAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cFinalstatesFinalStateParserRuleCall_3_0 = (RuleCall)cFinalstatesAssignment_3.eContents().get(0);
+ private final Assignment cTransitionsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+ private final RuleCall cTransitionsTransitionParserRuleCall_4_0 = (RuleCall)cTransitionsAssignment_4.eContents().get(0);
//Statemachine :
// {Statemachine}
@@ -43,6 +46,7 @@ public class StatemachineElements extends AbstractParserRuleElementFinder {
// events+=Event+
// 'end')?
// states+=State*
+ // finalstates+=FinalState*
// transitions+=Transition*
//;
@Override public ParserRule getRule() { return rule; }
@@ -52,6 +56,7 @@ public class StatemachineElements extends AbstractParserRuleElementFinder {
// events+=Event+
//'end')?
//states+=State*
+ //finalstates+=FinalState*
//transitions+=Transition*
public Group getGroup() { return cGroup; }
@@ -81,11 +86,17 @@ public class StatemachineElements extends AbstractParserRuleElementFinder {
//State
public RuleCall getStatesStateParserRuleCall_2_0() { return cStatesStateParserRuleCall_2_0; }
+ //finalstates+=FinalState*
+ public Assignment getFinalstatesAssignment_3() { return cFinalstatesAssignment_3; }
+
+ //FinalState
+ public RuleCall getFinalstatesFinalStateParserRuleCall_3_0() { return cFinalstatesFinalStateParserRuleCall_3_0; }
+
//transitions+=Transition*
- public Assignment getTransitionsAssignment_3() { return cTransitionsAssignment_3; }
+ public Assignment getTransitionsAssignment_4() { return cTransitionsAssignment_4; }
//Transition
- public RuleCall getTransitionsTransitionParserRuleCall_3_0() { return cTransitionsTransitionParserRuleCall_3_0; }
+ public RuleCall getTransitionsTransitionParserRuleCall_4_0() { return cTransitionsTransitionParserRuleCall_4_0; }
}
public class EventElements extends AbstractParserRuleElementFinder {
private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.Event");
@@ -121,18 +132,22 @@ public class StateElements extends AbstractParserRuleElementFinder {
private final Keyword cStateKeyword_0 = (Keyword)cGroup.eContents().get(0);
private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
- private final Assignment cTransitionsAssignment_2 = (Assignment)cGroup.eContents().get(2);
- private final RuleCall cTransitionsTransitionParserRuleCall_2_0 = (RuleCall)cTransitionsAssignment_2.eContents().get(0);
- private final Keyword cEndKeyword_3 = (Keyword)cGroup.eContents().get(3);
+ private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+ private final Assignment cIsFinalAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+ private final Keyword cIsFinalTrueKeyword_2_0_0 = (Keyword)cIsFinalAssignment_2_0.eContents().get(0);
+ private final Keyword cFalseKeyword_2_1 = (Keyword)cAlternatives_2.eContents().get(1);
+ private final Assignment cTransitionsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+ private final RuleCall cTransitionsTransitionParserRuleCall_3_0 = (RuleCall)cTransitionsAssignment_3.eContents().get(0);
+ private final Keyword cEndKeyword_4 = (Keyword)cGroup.eContents().get(4);
//State:
- // 'state' name=ID
+ // 'state' name=ID (isFinal?='true'|'false')
// transitions+=Transition*
// 'end'
//;
@Override public ParserRule getRule() { return rule; }
- //'state' name=ID
+ //'state' name=ID (isFinal?='true'|'false')
// transitions+=Transition*
//'end'
public Group getGroup() { return cGroup; }
@@ -146,14 +161,56 @@ public class StateElements extends AbstractParserRuleElementFinder {
//ID
public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+ //(isFinal?='true'|'false')
+ public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+ //isFinal?='true'
+ public Assignment getIsFinalAssignment_2_0() { return cIsFinalAssignment_2_0; }
+
+ //'true'
+ public Keyword getIsFinalTrueKeyword_2_0_0() { return cIsFinalTrueKeyword_2_0_0; }
+
+ //'false'
+ public Keyword getFalseKeyword_2_1() { return cFalseKeyword_2_1; }
+
//transitions+=Transition*
- public Assignment getTransitionsAssignment_2() { return cTransitionsAssignment_2; }
+ public Assignment getTransitionsAssignment_3() { return cTransitionsAssignment_3; }
//Transition
- public RuleCall getTransitionsTransitionParserRuleCall_2_0() { return cTransitionsTransitionParserRuleCall_2_0; }
+ public RuleCall getTransitionsTransitionParserRuleCall_3_0() { return cTransitionsTransitionParserRuleCall_3_0; }
+
+ //'end'
+ public Keyword getEndKeyword_4() { return cEndKeyword_4; }
+ }
+ public class FinalStateElements extends AbstractParserRuleElementFinder {
+ private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.FinalState");
+ private final Group cGroup = (Group)rule.eContents().get(1);
+ private final Keyword cFinalstateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+ private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+ private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+ private final Keyword cEndKeyword_2 = (Keyword)cGroup.eContents().get(2);
+
+ //FinalState:
+ // 'finalstate' name=ID
+ // 'end'
+ //;
+ @Override public ParserRule getRule() { return rule; }
+
+ //'finalstate' name=ID
+ //'end'
+ public Group getGroup() { return cGroup; }
+
+ //'finalstate'
+ public Keyword getFinalstateKeyword_0() { return cFinalstateKeyword_0; }
+
+ //name=ID
+ public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+ //ID
+ public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
//'end'
- public Keyword getEndKeyword_3() { return cEndKeyword_3; }
+ public Keyword getEndKeyword_2() { return cEndKeyword_2; }
}
public class TransitionElements extends AbstractParserRuleElementFinder {
private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "de.cognicrypt.order.editor.Statemachine.Transition");
@@ -236,6 +293,7 @@ public class TransitionElements extends AbstractParserRuleElementFinder {
private final StatemachineElements pStatemachine;
private final EventElements pEvent;
private final StateElements pState;
+ private final FinalStateElements pFinalState;
private final TransitionElements pTransition;
private final Grammar grammar;
@@ -250,6 +308,7 @@ public StatemachineGrammarAccess(GrammarProvider grammarProvider,
this.pStatemachine = new StatemachineElements();
this.pEvent = new EventElements();
this.pState = new StateElements();
+ this.pFinalState = new FinalStateElements();
this.pTransition = new TransitionElements();
}
@@ -286,6 +345,7 @@ public XtypeGrammarAccess getXtypeGrammarAccess() {
// events+=Event+
// 'end')?
// states+=State*
+ // finalstates+=FinalState*
// transitions+=Transition*
//;
public StatemachineElements getStatemachineAccess() {
@@ -308,7 +368,7 @@ public ParserRule getEventRule() {
}
//State:
- // 'state' name=ID
+ // 'state' name=ID (isFinal?='true'|'false')
// transitions+=Transition*
// 'end'
//;
@@ -320,6 +380,18 @@ public ParserRule getStateRule() {
return getStateAccess().getRule();
}
+ //FinalState:
+ // 'finalstate' name=ID
+ // 'end'
+ //;
+ public FinalStateElements getFinalStateAccess() {
+ return pFinalState;
+ }
+
+ public ParserRule getFinalStateRule() {
+ return getFinalStateAccess().getRule();
+ }
+
//Transition:
// 'transition' name=ID
// fromState=[State] ',' event=[Event] ',' endState=[State]
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
new file mode 100644
index 000000000..fb0c0af75
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
@@ -0,0 +1,48 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Final State'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState()
+ * @model
+ * @generated
+ */
+public interface FinalState extends EObject
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getFinalState_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // FinalState
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
index 69d10e1df..2b21a6075 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/State.java
@@ -17,6 +17,7 @@
*
*
* - {@link de.cognicrypt.order.editor.statemachine.State#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.State#isIsFinal Is Final}
* - {@link de.cognicrypt.order.editor.statemachine.State#getTransitions Transitions}
*
*
@@ -48,6 +49,28 @@ public interface State extends EObject
*/
void setName(String value);
+ /**
+ * Returns the value of the 'Is Final' attribute.
+ *
+ *
+ * @return the value of the 'Is Final' attribute.
+ * @see #setIsFinal(boolean)
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getState_IsFinal()
+ * @model
+ * @generated
+ */
+ boolean isIsFinal();
+
+ /**
+ * Sets the value of the '{@link de.cognicrypt.order.editor.statemachine.State#isIsFinal Is Final}' attribute.
+ *
+ *
+ * @param value the new value of the 'Is Final' attribute.
+ * @see #isIsFinal()
+ * @generated
+ */
+ void setIsFinal(boolean value);
+
/**
* Returns the value of the 'Transitions' containment reference list.
* The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
index ca52c195e..7108ec754 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/Statemachine.java
@@ -18,6 +18,7 @@
*
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getEvents Events}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getStates States}
+ * - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getFinalstates Finalstates}
* - {@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}
*
*
@@ -51,6 +52,18 @@ public interface Statemachine extends EObject
*/
EList getStates();
+ /**
+ * Returns the value of the 'Finalstates' containment reference list.
+ * The list contents are of type {@link de.cognicrypt.order.editor.statemachine.FinalState}.
+ *
+ *
+ * @return the value of the 'Finalstates' containment reference list.
+ * @see de.cognicrypt.order.editor.statemachine.StatemachinePackage#getStatemachine_Finalstates()
+ * @model containment="true"
+ * @generated
+ */
+ EList getFinalstates();
+
/**
* Returns the value of the 'Transitions' containment reference list.
* The list contents are of type {@link de.cognicrypt.order.editor.statemachine.Transition}.
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
index 7398dbb47..23a91efea 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachineFactory.java
@@ -50,6 +50,15 @@ public interface StatemachineFactory extends EFactory
*/
State createState();
+ /**
+ * Returns a new object of class 'Final State'.
+ *
+ *
+ * @return a new object of class 'Final State'.
+ * @generated
+ */
+ FinalState createFinalState();
+
/**
* Returns a new object of class 'Transition'.
*
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
index 97e9a8721..d449251b4 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/StatemachinePackage.java
@@ -85,6 +85,15 @@ public interface StatemachinePackage extends EPackage
*/
int STATEMACHINE__STATES = 1;
+ /**
+ * The feature id for the 'Finalstates' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATEMACHINE__FINALSTATES = 2;
+
/**
* The feature id for the 'Transitions' containment reference list.
*
@@ -92,7 +101,7 @@ public interface StatemachinePackage extends EPackage
* @generated
* @ordered
*/
- int STATEMACHINE__TRANSITIONS = 2;
+ int STATEMACHINE__TRANSITIONS = 3;
/**
* The number of structural features of the 'Statemachine' class.
@@ -101,7 +110,7 @@ public interface StatemachinePackage extends EPackage
* @generated
* @ordered
*/
- int STATEMACHINE_FEATURE_COUNT = 3;
+ int STATEMACHINE_FEATURE_COUNT = 4;
/**
* The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.EventImpl Event}' class.
@@ -159,6 +168,15 @@ public interface StatemachinePackage extends EPackage
*/
int STATE__NAME = 0;
+ /**
+ * The feature id for the 'Is Final' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int STATE__IS_FINAL = 1;
+
/**
* The feature id for the 'Transitions' containment reference list.
*
@@ -166,7 +184,7 @@ public interface StatemachinePackage extends EPackage
* @generated
* @ordered
*/
- int STATE__TRANSITIONS = 1;
+ int STATE__TRANSITIONS = 2;
/**
* The number of structural features of the 'State' class.
@@ -175,7 +193,35 @@ public interface StatemachinePackage extends EPackage
* @generated
* @ordered
*/
- int STATE_FEATURE_COUNT = 2;
+ int STATE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl Final State}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getFinalState()
+ * @generated
+ */
+ int FINAL_STATE = 3;
+
+ /**
+ * The feature id for the 'Name' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int FINAL_STATE__NAME = 0;
+
+ /**
+ * The number of structural features of the 'Final State' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int FINAL_STATE_FEATURE_COUNT = 1;
/**
* The meta object id for the '{@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl Transition}' class.
@@ -185,7 +231,7 @@ public interface StatemachinePackage extends EPackage
* @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getTransition()
* @generated
*/
- int TRANSITION = 3;
+ int TRANSITION = 4;
/**
* The feature id for the 'Name' attribute.
@@ -265,6 +311,17 @@ public interface StatemachinePackage extends EPackage
*/
EReference getStatemachine_States();
+ /**
+ * Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.Statemachine#getFinalstates Finalstates}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'Finalstates'.
+ * @see de.cognicrypt.order.editor.statemachine.Statemachine#getFinalstates()
+ * @see #getStatemachine()
+ * @generated
+ */
+ EReference getStatemachine_Finalstates();
+
/**
* Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.Statemachine#getTransitions Transitions}'.
*
@@ -329,6 +386,17 @@ public interface StatemachinePackage extends EPackage
*/
EAttribute getState_Name();
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.State#isIsFinal Is Final}'.
+ *
+ *
+ * @return the meta object for the attribute 'Is Final'.
+ * @see de.cognicrypt.order.editor.statemachine.State#isIsFinal()
+ * @see #getState()
+ * @generated
+ */
+ EAttribute getState_IsFinal();
+
/**
* Returns the meta object for the containment reference list '{@link de.cognicrypt.order.editor.statemachine.State#getTransitions Transitions}'.
*
@@ -340,6 +408,27 @@ public interface StatemachinePackage extends EPackage
*/
EReference getState_Transitions();
+ /**
+ * Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.FinalState Final State}'.
+ *
+ *
+ * @return the meta object for class 'Final State'.
+ * @see de.cognicrypt.order.editor.statemachine.FinalState
+ * @generated
+ */
+ EClass getFinalState();
+
+ /**
+ * Returns the meta object for the attribute '{@link de.cognicrypt.order.editor.statemachine.FinalState#getName Name}'.
+ *
+ *
+ * @return the meta object for the attribute 'Name'.
+ * @see de.cognicrypt.order.editor.statemachine.FinalState#getName()
+ * @see #getFinalState()
+ * @generated
+ */
+ EAttribute getFinalState_Name();
+
/**
* Returns the meta object for class '{@link de.cognicrypt.order.editor.statemachine.Transition Transition}'.
*
@@ -443,6 +532,14 @@ interface Literals
*/
EReference STATEMACHINE__STATES = eINSTANCE.getStatemachine_States();
+ /**
+ * The meta object literal for the 'Finalstates' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference STATEMACHINE__FINALSTATES = eINSTANCE.getStatemachine_Finalstates();
+
/**
* The meta object literal for the 'Transitions' containment reference list feature.
*
@@ -495,6 +592,14 @@ interface Literals
*/
EAttribute STATE__NAME = eINSTANCE.getState_Name();
+ /**
+ * The meta object literal for the 'Is Final' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute STATE__IS_FINAL = eINSTANCE.getState_IsFinal();
+
/**
* The meta object literal for the 'Transitions' containment reference list feature.
*
@@ -503,6 +608,24 @@ interface Literals
*/
EReference STATE__TRANSITIONS = eINSTANCE.getState_Transitions();
+ /**
+ * The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl Final State}' class.
+ *
+ *
+ * @see de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl
+ * @see de.cognicrypt.order.editor.statemachine.impl.StatemachinePackageImpl#getFinalState()
+ * @generated
+ */
+ EClass FINAL_STATE = eINSTANCE.getFinalState();
+
+ /**
+ * The meta object literal for the 'Name' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute FINAL_STATE__NAME = eINSTANCE.getFinalState_Name();
+
/**
* The meta object literal for the '{@link de.cognicrypt.order.editor.statemachine.impl.TransitionImpl Transition}' class.
*
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
new file mode 100644
index 000000000..7ae08183c
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.25.0
+ */
+package de.cognicrypt.order.editor.statemachine.impl;
+
+import de.cognicrypt.order.editor.statemachine.FinalState;
+import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ *
+ * An implementation of the model object 'Final State'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.FinalStateImpl#getName Name}
+ *
+ *
+ * @generated
+ */
+public class FinalStateImpl extends MinimalEObjectImpl.Container implements FinalState
+{
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected FinalStateImpl()
+ {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass()
+ {
+ return StatemachinePackage.Literals.FINAL_STATE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.FINAL_STATE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case StatemachinePackage.FINAL_STATE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FinalStateImpl
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
index bf04722a2..01f123572 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StateImpl.java
@@ -32,6 +32,7 @@
*
*
* - {@link de.cognicrypt.order.editor.statemachine.impl.StateImpl#getName Name}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StateImpl#isIsFinal Is Final}
* - {@link de.cognicrypt.order.editor.statemachine.impl.StateImpl#getTransitions Transitions}
*
*
@@ -59,6 +60,26 @@ public class StateImpl extends MinimalEObjectImpl.Container implements State
*/
protected String name = NAME_EDEFAULT;
+ /**
+ * The default value of the '{@link #isIsFinal() Is Final}' attribute.
+ *
+ *
+ * @see #isIsFinal()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_FINAL_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isIsFinal() Is Final}' attribute.
+ *
+ *
+ * @see #isIsFinal()
+ * @generated
+ * @ordered
+ */
+ protected boolean isFinal = IS_FINAL_EDEFAULT;
+
/**
* The cached value of the '{@link #getTransitions() Transitions}' containment reference list.
*
@@ -115,6 +136,31 @@ public void setName(String newName)
eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE__NAME, oldName, name));
}
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean isIsFinal()
+ {
+ return isFinal;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setIsFinal(boolean newIsFinal)
+ {
+ boolean oldIsFinal = isFinal;
+ isFinal = newIsFinal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE__IS_FINAL, oldIsFinal, isFinal));
+ }
+
/**
*
*
@@ -158,6 +204,8 @@ public Object eGet(int featureID, boolean resolve, boolean coreType)
{
case StatemachinePackage.STATE__NAME:
return getName();
+ case StatemachinePackage.STATE__IS_FINAL:
+ return isIsFinal();
case StatemachinePackage.STATE__TRANSITIONS:
return getTransitions();
}
@@ -178,6 +226,9 @@ public void eSet(int featureID, Object newValue)
case StatemachinePackage.STATE__NAME:
setName((String)newValue);
return;
+ case StatemachinePackage.STATE__IS_FINAL:
+ setIsFinal((Boolean)newValue);
+ return;
case StatemachinePackage.STATE__TRANSITIONS:
getTransitions().clear();
getTransitions().addAll((Collection extends Transition>)newValue);
@@ -199,6 +250,9 @@ public void eUnset(int featureID)
case StatemachinePackage.STATE__NAME:
setName(NAME_EDEFAULT);
return;
+ case StatemachinePackage.STATE__IS_FINAL:
+ setIsFinal(IS_FINAL_EDEFAULT);
+ return;
case StatemachinePackage.STATE__TRANSITIONS:
getTransitions().clear();
return;
@@ -218,6 +272,8 @@ public boolean eIsSet(int featureID)
{
case StatemachinePackage.STATE__NAME:
return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case StatemachinePackage.STATE__IS_FINAL:
+ return isFinal != IS_FINAL_EDEFAULT;
case StatemachinePackage.STATE__TRANSITIONS:
return transitions != null && !transitions.isEmpty();
}
@@ -237,6 +293,8 @@ public String toString()
StringBuilder result = new StringBuilder(super.toString());
result.append(" (name: ");
result.append(name);
+ result.append(", isFinal: ");
+ result.append(isFinal);
result.append(')');
return result.toString();
}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
index 7cfbed492..6f504d456 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineFactoryImpl.java
@@ -68,6 +68,7 @@ public EObject create(EClass eClass)
case StatemachinePackage.STATEMACHINE: return createStatemachine();
case StatemachinePackage.EVENT: return createEvent();
case StatemachinePackage.STATE: return createState();
+ case StatemachinePackage.FINAL_STATE: return createFinalState();
case StatemachinePackage.TRANSITION: return createTransition();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
@@ -110,6 +111,18 @@ public State createState()
return state;
}
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public FinalState createFinalState()
+ {
+ FinalStateImpl finalState = new FinalStateImpl();
+ return finalState;
+ }
+
/**
*
*
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
index 95f1bf593..5604bd171 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachineImpl.java
@@ -4,6 +4,7 @@
package de.cognicrypt.order.editor.statemachine.impl;
import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.State;
import de.cognicrypt.order.editor.statemachine.Statemachine;
import de.cognicrypt.order.editor.statemachine.StatemachinePackage;
@@ -33,6 +34,7 @@
*
* - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getEvents Events}
* - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getStates States}
+ * - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getFinalstates Finalstates}
* - {@link de.cognicrypt.order.editor.statemachine.impl.StatemachineImpl#getTransitions Transitions}
*
*
@@ -60,6 +62,16 @@ public class StatemachineImpl extends MinimalEObjectImpl.Container implements St
*/
protected EList states;
+ /**
+ * The cached value of the '{@link #getFinalstates() Finalstates}' containment reference list.
+ *
+ *
+ * @see #getFinalstates()
+ * @generated
+ * @ordered
+ */
+ protected EList finalstates;
+
/**
* The cached value of the '{@link #getTransitions() Transitions}' containment reference list.
*
@@ -121,6 +133,21 @@ public EList getStates()
return states;
}
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getFinalstates()
+ {
+ if (finalstates == null)
+ {
+ finalstates = new EObjectContainmentEList(FinalState.class, this, StatemachinePackage.STATEMACHINE__FINALSTATES);
+ }
+ return finalstates;
+ }
+
/**
*
*
@@ -150,6 +177,8 @@ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID,
return ((InternalEList>)getEvents()).basicRemove(otherEnd, msgs);
case StatemachinePackage.STATEMACHINE__STATES:
return ((InternalEList>)getStates()).basicRemove(otherEnd, msgs);
+ case StatemachinePackage.STATEMACHINE__FINALSTATES:
+ return ((InternalEList>)getFinalstates()).basicRemove(otherEnd, msgs);
case StatemachinePackage.STATEMACHINE__TRANSITIONS:
return ((InternalEList>)getTransitions()).basicRemove(otherEnd, msgs);
}
@@ -170,6 +199,8 @@ public Object eGet(int featureID, boolean resolve, boolean coreType)
return getEvents();
case StatemachinePackage.STATEMACHINE__STATES:
return getStates();
+ case StatemachinePackage.STATEMACHINE__FINALSTATES:
+ return getFinalstates();
case StatemachinePackage.STATEMACHINE__TRANSITIONS:
return getTransitions();
}
@@ -195,6 +226,10 @@ public void eSet(int featureID, Object newValue)
getStates().clear();
getStates().addAll((Collection extends State>)newValue);
return;
+ case StatemachinePackage.STATEMACHINE__FINALSTATES:
+ getFinalstates().clear();
+ getFinalstates().addAll((Collection extends FinalState>)newValue);
+ return;
case StatemachinePackage.STATEMACHINE__TRANSITIONS:
getTransitions().clear();
getTransitions().addAll((Collection extends Transition>)newValue);
@@ -219,6 +254,9 @@ public void eUnset(int featureID)
case StatemachinePackage.STATEMACHINE__STATES:
getStates().clear();
return;
+ case StatemachinePackage.STATEMACHINE__FINALSTATES:
+ getFinalstates().clear();
+ return;
case StatemachinePackage.STATEMACHINE__TRANSITIONS:
getTransitions().clear();
return;
@@ -240,6 +278,8 @@ public boolean eIsSet(int featureID)
return events != null && !events.isEmpty();
case StatemachinePackage.STATEMACHINE__STATES:
return states != null && !states.isEmpty();
+ case StatemachinePackage.STATEMACHINE__FINALSTATES:
+ return finalstates != null && !finalstates.isEmpty();
case StatemachinePackage.STATEMACHINE__TRANSITIONS:
return transitions != null && !transitions.isEmpty();
}
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
index 6c70815e9..f29397e6f 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/StatemachinePackageImpl.java
@@ -4,6 +4,7 @@
package de.cognicrypt.order.editor.statemachine.impl;
import de.cognicrypt.order.editor.statemachine.Event;
+import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.State;
import de.cognicrypt.order.editor.statemachine.Statemachine;
import de.cognicrypt.order.editor.statemachine.StatemachineFactory;
@@ -46,6 +47,13 @@ public class StatemachinePackageImpl extends EPackageImpl implements Statemachin
*/
private EClass stateEClass = null;
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass finalStateEClass = null;
+
/**
*
*
@@ -155,11 +163,22 @@ public EReference getStatemachine_States()
* @generated
*/
@Override
- public EReference getStatemachine_Transitions()
+ public EReference getStatemachine_Finalstates()
{
return (EReference)statemachineEClass.getEStructuralFeatures().get(2);
}
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getStatemachine_Transitions()
+ {
+ return (EReference)statemachineEClass.getEStructuralFeatures().get(3);
+ }
+
/**
*
*
@@ -215,6 +234,17 @@ public EAttribute getState_Name()
return (EAttribute)stateEClass.getEStructuralFeatures().get(0);
}
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getState_IsFinal()
+ {
+ return (EAttribute)stateEClass.getEStructuralFeatures().get(1);
+ }
+
/**
*
*
@@ -223,7 +253,29 @@ public EAttribute getState_Name()
@Override
public EReference getState_Transitions()
{
- return (EReference)stateEClass.getEStructuralFeatures().get(1);
+ return (EReference)stateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getFinalState()
+ {
+ return finalStateEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getFinalState_Name()
+ {
+ return (EAttribute)finalStateEClass.getEStructuralFeatures().get(0);
}
/**
@@ -315,6 +367,7 @@ public void createPackageContents()
statemachineEClass = createEClass(STATEMACHINE);
createEReference(statemachineEClass, STATEMACHINE__EVENTS);
createEReference(statemachineEClass, STATEMACHINE__STATES);
+ createEReference(statemachineEClass, STATEMACHINE__FINALSTATES);
createEReference(statemachineEClass, STATEMACHINE__TRANSITIONS);
eventEClass = createEClass(EVENT);
@@ -323,8 +376,12 @@ public void createPackageContents()
stateEClass = createEClass(STATE);
createEAttribute(stateEClass, STATE__NAME);
+ createEAttribute(stateEClass, STATE__IS_FINAL);
createEReference(stateEClass, STATE__TRANSITIONS);
+ finalStateEClass = createEClass(FINAL_STATE);
+ createEAttribute(finalStateEClass, FINAL_STATE__NAME);
+
transitionEClass = createEClass(TRANSITION);
createEAttribute(transitionEClass, TRANSITION__NAME);
createEReference(transitionEClass, TRANSITION__FROM_STATE);
@@ -366,6 +423,7 @@ public void initializePackageContents()
initEClass(statemachineEClass, Statemachine.class, "Statemachine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getStatemachine_Events(), this.getEvent(), null, "events", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getStatemachine_States(), this.getState(), null, "states", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getStatemachine_Finalstates(), this.getFinalState(), null, "finalstates", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getStatemachine_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, Statemachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -374,8 +432,12 @@ public void initializePackageContents()
initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getState_Name(), ecorePackage.getEString(), "name", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getState_IsFinal(), ecorePackage.getEBoolean(), "isFinal", null, 0, 1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getState_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFinalState_Name(), ecorePackage.getEString(), "name", null, 0, 1, FinalState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getTransition_Name(), ecorePackage.getEString(), "name", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getTransition_FromState(), this.getState(), null, "fromState", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
index 819905b71..03ce76382 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineAdapterFactory.java
@@ -91,6 +91,11 @@ public Adapter caseState(State object)
return createStateAdapter();
}
@Override
+ public Adapter caseFinalState(FinalState object)
+ {
+ return createFinalStateAdapter();
+ }
+ @Override
public Adapter caseTransition(Transition object)
{
return createTransitionAdapter();
@@ -162,6 +167,21 @@ public Adapter createStateAdapter()
return null;
}
+ /**
+ * Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.FinalState Final State}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see de.cognicrypt.order.editor.statemachine.FinalState
+ * @generated
+ */
+ public Adapter createFinalStateAdapter()
+ {
+ return null;
+ }
+
/**
* Creates a new adapter for an object of class '{@link de.cognicrypt.order.editor.statemachine.Transition Transition}'.
*
diff --git a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
index 8b8f75357..abaed3468 100644
--- a/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
+++ b/plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/util/StatemachineSwitch.java
@@ -94,6 +94,13 @@ protected T doSwitch(int classifierID, EObject theEObject)
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case StatemachinePackage.FINAL_STATE:
+ {
+ FinalState finalState = (FinalState)theEObject;
+ T result = caseFinalState(finalState);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
case StatemachinePackage.TRANSITION:
{
Transition transition = (Transition)theEObject;
@@ -153,6 +160,22 @@ public T caseState(State object)
return null;
}
+ /**
+ * Returns the result of interpreting the object as an instance of 'Final State'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Final State'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFinalState(FinalState object)
+ {
+ return null;
+ }
+
/**
* Returns the result of interpreting the object as an instance of 'Transition'.
*
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2 b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
index a1d1f66c5..4e209519c 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/GenerateStatemachine.mwe2
@@ -13,13 +13,13 @@ Workflow {
baseName = "de.cognicrypt.order.editor"
rootPath = rootPath
runtimeTest = {
- enabled = true
+ enabled = false
}
eclipsePlugin = {
- enabled = true
+ enabled = false
}
eclipsePluginTest = {
- enabled = true
+ enabled = false
}
createEclipseMetaData = true
}
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
index 600f4f0da..daa58335a 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/Statemachine.xtext
@@ -8,6 +8,7 @@ Statemachine :
events+=Event+
'end')?
states+=State*
+ finalstates+=FinalState*
transitions+=Transition*
;
@@ -16,14 +17,21 @@ Event:
;
State:
- 'state' name=ID
+ 'state' name=ID (isFinal?='true'|'false')
transitions+=Transition*
'end'
;
+FinalState:
+ 'finalstate' name=ID
+ 'end'
+;
+
Transition:
'transition' name=ID
fromState=[State] ',' event=[Event] ',' endState=[State]
'end'
;
+
+
\ No newline at end of file
diff --git a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
index a25ebd45e..5fcc30a4c 100644
--- a/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
+++ b/plugins/de.cognicrypt.order.editor/src/de/cognicrypt/order/editor/parser/StatemachineParser.java
@@ -42,6 +42,7 @@
import de.darmstadt.tu.crossing.crySL.SuperType;
import de.cognicrypt.order.editor.statemachine.Event;
import de.cognicrypt.order.editor.statemachine.State;
+import de.cognicrypt.order.editor.statemachine.FinalState;
import de.cognicrypt.order.editor.statemachine.Transition;
import de.cognicrypt.order.editor.statemachine.StateMachineGraph;
import de.cognicrypt.order.editor.statemachine.StateMachineGraphBuilder;
@@ -94,10 +95,12 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
Statemachine statemachine = StatemachineFactory.eINSTANCE.createStatemachine();
State state = null;
+ FinalState finalstate = null;
Event event = null;
//de.darmstadt.tu.crossing.statemachine.Transition transition = null;
Transition transition = null;
HashMap stateNodeMap = new HashMap();
+ HashMap finalstateNodeMap = new HashMap();
SuperType ev = null;
int counter = 0;
@@ -106,9 +109,23 @@ public static void generateStatemachineXtextResource(EObject self, String ruleNa
for(StateNode s: stateNodes) {
state = (State) StatemachineFactory.eINSTANCE.createState();
state.setName("s" + s.getName());
+ if(s.getAccepting().equals(true)) {
+ state.setIsFinal(true);
+ }
+ else {
+ state.setIsFinal(false);
+ }
statemachine.getStates().add((de.cognicrypt.order.editor.statemachine.State) state);
counter++;
stateNodeMap.put(s, state);
+
+ if(s.getAccepting().equals(true)) {
+ finalstate = (FinalState) StatemachineFactory.eINSTANCE.createFinalState();
+ finalstate.setName("f" + s.getName());
+ //do not actually want to add a new node, but change the border of the current stateNode
+ statemachine.getFinalstates().add(finalstate);
+ finalstateNodeMap.put(s, finalstate);
+ }
}
//process transition edges for states and transitions
diff --git a/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.java._trace b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.java._trace
index 5977d03553b8caa5219fa965b62199ecb71bb584..ee36e84c13cb6717e48d12ca80ba16259e2d9ce1 100644
GIT binary patch
literal 414
zcmY+-KTE?v7{~E@@<&@Dm|iqCLP4kwU5p@gak+a2oy5V(NkVee3?^~}s)K{Cz`c`i
z#Hn*%f`g;4psROJD8woGQg3VAzhr4IV;-rg{5R#(?G0~7gN72Q}cTn&}
z_%58fy7d*fItbo9p%AC!bKm?fj4>AgKOkn7JeFVn1ehpPlGpR9%$vu%HmRFJHHj+9
zwr-NSs#KGiw~IDw)oqqvmz7G_r_+a4RfP?QU^5F2EQf)d$tQn%eLJ(|Of38@W3ku_
zbYF^9VEUJOQyKXDjpF5^H~9C6Y&*RuWza4MepP@j6@myg*7q8mk;q06~`^aYsu
z)M8&Z!1FO_pKIB8Ip{Q?U0;A%*N#jByxFBMPe!!6k2*!P>kIJ3p_V$dd)*_Q?a=Ox
RcQSvsurI)OkJ^=Ic7HG2M_d2^
diff --git a/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.xtendbin b/plugins/de.cognicrypt.order.editor/xtend-gen/de/cognicrypt/order/editor/generator/.StatemachineGenerator.xtendbin
index 3a8a8672ec9ec5b8d914eb595f1d7a3173c119da..4e3482dde69eb401c98da6d6ac8e323d0206b84e 100644
GIT binary patch
delta 1108
zcmV-a1grap5`+>BP)h>@6aWYa2mqFZN0AL6e{<7D5VdrYElY__aDf7ano?T$P>Crs
z{lK&{4QXM_6q3Ph>Tk?hS~~~Qo#yWB#Qg{S>+YRw#c7+2-I*k#?7qFXcl+Lcf?^Wx
z-U%DTaqgXHT|Q5e)6>%!(wvnFVj-u=nFgL+oplo@9GQ=oEC;v4ic&~Dgj6%ZUH8f5
zf2C(SIU7?2$w)6s*aDe2-O=CzO|N481?#A!CZv4gy1gZAE$;7DP{@AAqdfBTO4d{q
zh2Y6+I;Y2POo7_Ez;ye1Uc3ShlBFip@P7D!`RB>u_yhK@5-hKe!kOT=kPu5yVkT3F
z-z`5LZ-{F&oJPZUUB5}3hX3Q`T(;$Se`-3TTF7{RthA)5epN@dLR;Pz@&?G;{AqLE
zfl1djmcZI}W)qT7lPeiKjGuP7Am>L@*RIJz*Sb!d6f~F$SsJUB~NGcAIf4fBt_m
zbR2)j0^ZmPJlG2hk+BIguQibw
zQ&i%W3((k&cg<;bZLdeG7_pDgUWwZ4)M)cyd&IquW~$Nbugb^oU;+|&3dA=X!dngI
zy3-`yL{YCtToSCJpJ6mes}XuPe=rlSGNEOUGO>Jkh$0DkCb=QGiO5@o1lYi_U|FNR
zR|)M%vVv(g2j$OAe0f$7fK`S19P65^s27wp{Yah9$!)O#1Tle3iRW17!U^IwqWZDbp2iGXuXnkWIgviP`!2)9O~LpNb6n6Df-R0=w?x
zhJw65!OgDvg7+1jLmY-ffWFx`>OU6F$S#~rq_YBeHJRku(`WDHHH>Rkz@6aWYa2mo4$8IcVje{b715S2v9mZjKk>a|_lwR6{XYd=gX
zR$w2B4Op73g^RTb>MirPf|kw>TS*j1+KKlMhW+UsDO+*2Ij{#LfpYhb@5p=a{)BuI
zwC@BKvF&@ON|n#!`0VT~f+S<5goul2e6FBKug*HL9gOtHOO}DtVR^}g8bYENFC6E|
zf9BG26`zl(gm|PDCG3EV?e1uBiKbVv{)BZ@P#uyUah%=~wifr=6%^86@hF!(y^=NI
zdCrUYHJ#IwH@ZOXT%fysJHDS}wAs>T~PTO`nmEC5Ae-Zyb
z89KJNX8>GBqzgAgnQKZNrVwIi{t>uzN}{ny_biNfC>y~ud-@#mUI
zk0~ti$~h?P#=T}Yx~A9TRg9QNXstx;c51YKuzlj(M>ExE_DAL8cQ63~MFPar8^T=;
z=DOV=?nF|zM;zj>qMu;YPpT2Re>X4_tTKUN4^zH;cnCuQY9|u?}Qh)yTrSG31v1<@Z_>L^nX!Ci)l2Rf0brPzf)1L
zVk+-$PNCkrsGW=@Or6kdhMND3G;Sl?PzeNFaGES>&MS~hv&=k#ZM)%|Nj7E~Q;X*D
zZ!dls9D1R|&78s8jUH%)a#mJ4kj}mOQG=B=$bHh(s}{|Pn`xF{$^YWf4Sr7iHXe0U
zLS@g(Bj^*?c|bfXe6Z;`e~*?f>-{@a$>8e7))W}5`{fJL>S0?ixyWg@rDq=EOVx(>
zlC&yAJX$xzR~W4g@%6ePuC3|+vDSZ;z~9c^QpmdB?Zj;V_}A)IvY+r2`V+zP{sO!1
z5NZ7lP)i30M6m&nmjeI*{|Ep8P)h>@6aWYa2mo4$8ME61hXMmy
zh#9kG2Hyb
Date: Thu, 14 Oct 2021 14:12:12 +0200
Subject: [PATCH 09/18] Add current status
---
plugins/.classpath | 7 +
.../org.eclipse.core.resources.prefs | 2 +
.../order.statemachine.design/.classpath | 7 +
.../order.statemachine.design/.project | 24 +
.../description/statemachine.odesign | 24 +-
.../order/statemachine/design/Services.java | 69 +
.../order.statemachine.modeling/.project | 12 +
.../representations.aird | 104 +-
.../.antlr-generator-3.2.0-patch.jar | Bin 0 -> 1484649 bytes
plugins/de.cognicrypt.order.editor/.classpath | 15 +
.../.launch/Launch Runtime Eclipse.launch | 34 +
plugins/de.cognicrypt.order.editor/.project | 34 +
.../org.eclipse.core.resources.prefs | 2 +
.../.settings/org.eclipse.jdt.core.prefs | 8 +
.../model/generated/Statemachine.ecore | 6 -
.../model/generated/Statemachine.genmodel | 5 -
.../output/AEADParameters.statemachine | 1 +
.../output/AESEngine.statemachine | 1 +
.../output/AeadFactory.statemachine | 1 +
.../output/AeadKeyTemplates.statemachine | 1 +
.../output/AeadPrimitive.statemachine | 1 +
.../AlgorithmParameterGenerator.statemachine | 1 +
.../output/AlgorithmParameters.statemachine | 1 +
.../AsymmetricCipherKeyPair.statemachine | 1 +
.../output/BufferedBlockCipher.statemachine | 1 +
.../output/CBCBlockCipher.statemachine | 1 +
...ertPathTrustManagerParameters.statemachine | 1 +
.../output/CertificateFactory.statemachine | 1 +
.../output/Cipher.statemachine | 1 +
.../output/CipherInputStream.statemachine | 1 +
.../output/CipherOutputStream.statemachine | 1 +
.../output/Cookie.statemachine | 1 +
.../output/DHGenParameterSpec.statemachine | 1 +
.../output/DHParameterSpec.statemachine | 1 +
.../output/DSAGenParameterSpec.statemachine | 1 +
.../output/DSAParameterSpec.statemachine | 1 +
.../output/DeterministicAead.statemachine | 1 +
.../DeterministicAeadFactory.statemachine | 1 +
...DeterministicAeadKeyTemplates.statemachine | 1 +
.../output/DigestInputStream.statemachine | 1 +
.../output/DigestOutputStream.statemachine | 1 +
.../output/ECDomainParameters.statemachine | 1 +
.../output/ECElGamalDecryptor.statemachine | 1 +
.../output/ECElGamalEncryptor.statemachine | 1 +
.../output/ECFixedTransform.statemachine | 1 +
.../ECKeyGenerationParameters.statemachine | 1 +
.../output/ECKeyPairGenerator.statemachine | 1 +
.../output/ECKeyParameters.statemachine | 1 +
.../ECNewPublicKeyTransform.statemachine | 1 +
.../ECNewRandomnessTransform.statemachine | 1 +
.../output/ECPair.statemachine | 1 +
.../ECPrivateKeyParameters.statemachine | 1 +
.../output/ECPublicKeyParameters.statemachine | 1 +
.../output/GCMBlockCipher.statemachine | 1 +
.../output/GCMParameterSpec.statemachine | 1 +
.../output/HMACParameterSpec.statemachine | 1 +
.../output/HMac.statemachine | 1 +
.../output/HybridDecrypt.statemachine | 1 +
.../output/HybridDecryptFactory.statemachine | 1 +
.../output/HybridEncrypt.statemachine | 1 +
.../output/HybridEncryptFactory.statemachine | 1 +
.../output/HybridKeyTemplates.statemachine | 1 +
.../output/IvParameterSpec.statemachine | 1 +
.../output/Key.statemachine | 1 +
.../output/KeyAgreement.statemachine | 1 +
.../output/KeyFactory.statemachine | 1 +
.../output/KeyGenerator.statemachine | 1 +
.../output/KeyManagerFactory.statemachine | 1 +
.../output/KeyPair.statemachine | 1 +
.../output/KeyPairGenerator.statemachine | 1 +
.../output/KeyParameter.statemachine | 1 +
.../output/KeyStore.statemachine | 1 +
.../KeyStoreBuilderParameters.statemachine | 1 +
.../output/KeyTemplate.statemachine | 1 +
.../output/KeysetHandle.statemachine | 1 +
.../output/Mac.statemachine | 1 +
.../output/MacFactory.statemachine | 1 +
.../output/MacKeyTemplates.statemachine | 1 +
.../output/MacPrimitive.statemachine | 1 +
.../output/MessageDigest.statemachine | 1 +
.../output/PBEKeySpec.statemachine | 1 +
.../output/PBEParameterSpec.statemachine | 1 +
.../output/PKIXBuilderParameters.statemachine | 1 +
.../output/PKIXParameters.statemachine | 1 +
.../PaddedBufferedBlockCipher.statemachine | 1 +
.../output/ParametersWithIV.statemachine | 1 +
.../output/ParametersWithRandom.statemachine | 1 +
.../output/PublicKeySign.statemachine | 1 +
.../output/PublicKeySignFactory.statemachine | 1 +
.../output/PublicKeyVerify.statemachine | 1 +
.../PublicKeyVerifyFactory.statemachine | 1 +
.../output/RSADigestSigner.statemachine | 1 +
.../output/RSAEngine.statemachine | 1 +
.../RSAKeyGenParameterSpec.statemachine | 1 +
.../RSAKeyGenerationParameters.statemachine | 1 +
.../output/RSAKeyPairGenerator.statemachine | 1 +
.../output/RSAKeyParameters.statemachine | 1 +
.../RSAPrivateCrtKeyParameters.statemachine | 1 +
.../output/SHA256Digest.statemachine | 1 +
.../output/SSLContext.statemachine | 1 +
.../output/SSLEngine.statemachine | 1 +
.../output/SSLParameters.statemachine | 1 +
.../output/SecretKey.statemachine | 1 +
.../output/SecretKeyFactory.statemachine | 1 +
.../output/SecretKeySpec.statemachine | 1 +
.../output/SecureRandom.statemachine | 1 +
.../output/Signature.statemachine | 1 +
.../output/SignatureKeyTemplates.statemachine | 1 +
.../output/StreamingAead.statemachine | 1 +
.../output/StreamingAeadFactory.statemachine | 1 +
.../StreamingAeadKeyTemplates.statemachine | 1 +
.../output/TrustAnchor.statemachine | 1 +
.../output/TrustManagerFactory.statemachine | 1 +
.../order/editor/Statemachine.xtextbin | Bin 5055 -> 4889 bytes
.../antlr/internal/InternalStatemachine.g | 116 +-
.../internal/InternalStatemachine.tokens | 40 +-
.../internal/InternalStatemachineLexer.java | 333 ++--
.../internal/InternalStatemachineParser.java | 1449 +++++++----------
.../StatemachineSemanticSequencer.java | 31 +-
.../services/StatemachineGrammarAccess.java | 87 +-
.../order/editor/statemachine/Event.java | 23 -
.../order/editor/statemachine/FinalState.java | 48 -
.../editor/statemachine/Statemachine.java | 13 -
.../statemachine/StatemachineFactory.java | 9 -
.../statemachine/StatemachinePackage.java | 131 +-
.../editor/statemachine/impl/EventImpl.java | 58 -
.../statemachine/impl/FinalStateImpl.java | 180 --
.../impl/StatemachineFactoryImpl.java | 13 -
.../statemachine/impl/StatemachineImpl.java | 40 -
.../impl/StatemachinePackageImpl.java | 64 +-
.../util/StatemachineAdapterFactory.java | 20 -
.../statemachine/util/StatemachineSwitch.java | 23 -
.../order/editor/Statemachine.xtext | 8 +-
.../editor/parser/StatemachineParser.java | 13 -
134 files changed, 1149 insertions(+), 2000 deletions(-)
create mode 100644 plugins/.classpath
create mode 100644 plugins/de.cognicrypt.codegenerator.tests/.settings/org.eclipse.core.resources.prefs
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.classpath
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.project
create mode 100644 plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/.project
create mode 100644 plugins/de.cognicrypt.order.editor/.antlr-generator-3.2.0-patch.jar
create mode 100644 plugins/de.cognicrypt.order.editor/.classpath
create mode 100644 plugins/de.cognicrypt.order.editor/.launch/Launch Runtime Eclipse.launch
create mode 100644 plugins/de.cognicrypt.order.editor/.project
create mode 100644 plugins/de.cognicrypt.order.editor/.settings/org.eclipse.core.resources.prefs
create mode 100644 plugins/de.cognicrypt.order.editor/.settings/org.eclipse.jdt.core.prefs
create mode 100644 plugins/de.cognicrypt.order.editor/output/AEADParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AESEngine.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AeadFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AeadKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AeadPrimitive.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AlgorithmParameterGenerator.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AlgorithmParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/AsymmetricCipherKeyPair.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/BufferedBlockCipher.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/CBCBlockCipher.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/CertPathTrustManagerParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/CertificateFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/Cipher.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/CipherInputStream.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/CipherOutputStream.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/Cookie.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DHGenParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DHParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DSAGenParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DSAParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DeterministicAead.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DeterministicAeadFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DeterministicAeadKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DigestInputStream.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/DigestOutputStream.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECDomainParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECElGamalDecryptor.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECElGamalEncryptor.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECFixedTransform.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECKeyGenerationParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECKeyPairGenerator.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECKeyParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECNewPublicKeyTransform.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECNewRandomnessTransform.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECPair.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECPrivateKeyParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ECPublicKeyParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/GCMBlockCipher.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/GCMParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HMACParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HMac.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HybridDecrypt.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HybridDecryptFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HybridEncrypt.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HybridEncryptFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/HybridKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/IvParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/Key.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyAgreement.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyGenerator.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyManagerFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyPair.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyPairGenerator.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyParameter.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyStore.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyStoreBuilderParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeyTemplate.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/KeysetHandle.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/Mac.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/MacFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/MacKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/MacPrimitive.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/MessageDigest.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PBEKeySpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PBEParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PKIXBuilderParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PKIXParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PaddedBufferedBlockCipher.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ParametersWithIV.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/ParametersWithRandom.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PublicKeySign.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PublicKeySignFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PublicKeyVerify.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/PublicKeyVerifyFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSADigestSigner.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAEngine.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAKeyGenParameterSpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAKeyGenerationParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAKeyPairGenerator.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAKeyParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/RSAPrivateCrtKeyParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SHA256Digest.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SSLContext.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SSLEngine.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SSLParameters.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SecretKey.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SecretKeyFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SecretKeySpec.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SecureRandom.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/Signature.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/SignatureKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/StreamingAead.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/StreamingAeadFactory.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/StreamingAeadKeyTemplates.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/TrustAnchor.statemachine
create mode 100644 plugins/de.cognicrypt.order.editor/output/TrustManagerFactory.statemachine
delete mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/FinalState.java
delete mode 100644 plugins/de.cognicrypt.order.editor/src-gen/de/cognicrypt/order/editor/statemachine/impl/FinalStateImpl.java
diff --git a/plugins/.classpath b/plugins/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/plugins/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.codegenerator.tests/.settings/org.eclipse.core.resources.prefs b/plugins/de.cognicrypt.codegenerator.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/plugins/de.cognicrypt.codegenerator.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.classpath b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.classpath
new file mode 100644
index 000000000..39810b7d6
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.project b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.project
new file mode 100644
index 000000000..c25c11398
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/.project
@@ -0,0 +1,24 @@
+
+
+ order.statemachine.design
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
index 3e793a90f..c79fff387 100644
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/description/statemachine.odesign
@@ -4,7 +4,7 @@
-
+
-
+
@@ -37,18 +37,24 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
index df6767854..f888cf097 100644
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.design/src/order/statemachine/design/Services.java
@@ -1,7 +1,10 @@
package order.statemachine.design;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import de.cognicrypt.order.editor.statemachine.Event;
import de.cognicrypt.order.editor.statemachine.State;
/**
@@ -29,5 +32,71 @@ public int changeBorderFinalNode(EObject self) {
return 1;
}
+
+ // JavaService for a simple String output:
+ public String nameService(EObject self) {
+ // TODO Auto-generated code
+
+ return "t";
+ }
+
+ public String createEventName(EObject self) {
+
+ System.out.println("self: " + self); // TransitionImpl
+ System.out.println("self.ecrossreferences: " + self.eCrossReferences()); // source and target states
+ System.out.println("self.econtainingfeature: " + self.eContainingFeature()); // EReferenceImpl with variable name transitions
+ EStructuralFeature se = self.eContainingFeature();
+ // Execution stops here
+ Event e = null; // kein Sinn
+ System.out.println("eGet " + e.eGet(se));
+ e.eSet(se, e);
+ System.out.println("eGet after " + e.eGet(se));
+
+
+
+ return "enew";
+ }
+
+ // JavaService debugging for the event creation:
+ public Event createEvent(EObject self) {
+ // TODO Auto-generated code
+
+ System.out.println("Hello event2");
+ System.out.println(self);
+
+ //self.eSet(type name = new type();Event);
+ Event e = null;
+ if(self.eAllContents().hasNext()) {
+ System.out.println(self.eAllContents().next());
+ }
+ else {
+ System.out.println("else");
+ }
+ System.out.println("eAllContents " + self.eAllContents()); //eAllContents is empty
+ System.out.println("econtainingFeature " + self.eContainingFeature());
+ System.out.println("econtainmentFeature " + self.eContainmentFeature());
+ System.out.println("econtainer " + self.eContainer());
+ /*for(Object i:self.eAllContents()) {
+ System.out.println("loop index: " + i)
+ }*/
+
+ System.out.println("eallattr " + self.eClass().getEAllAttributes());
+ System.out.println("feature count " + self.eClass().getFeatureCount());
+ System.out.println("eallref " + self.eClass().getEAllReferences());
+ System.out.println("eallstructfeature " + self.eClass().getEAllStructuralFeatures());
+
+ //gets the event object
+ EReference eventref = self.eClass().getEAllReferences().get(1);
+ System.out.println("eventref " + eventref);
+ eventref.setName("new");
+ System.out.println("eventref " + eventref);
+ System.out.println("eventref get " + eventref.eGet(eventref)); //returns true
+ self.eSet(eventref, "ds");
+ System.out.println("klapp");
+
+ System.out.println("Hello event");
+
+ return e;
+ }
}
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/.project b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/.project
new file mode 100644
index 000000000..fbf9279fc
--- /dev/null
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/.project
@@ -0,0 +1,12 @@
+
+
+ order.statemachine.modeling
+
+
+
+
+
+
+ org.eclipse.sirius.nature.modelingproject
+
+
diff --git a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
index da9091644..2a66fbf81 100644
--- a/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
+++ b/plugins/de.cognicrypt.order.editor.sirius/order.statemachine.modeling/representations.aird
@@ -1,98 +1,8 @@
-
-
- file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
- file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AlgorithmParameters.statemachine
- file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AESEngine.statemachine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KEEP_LOCATION
- KEEP_SIZE
- KEEP_RATIO
-
-
-
-
-
-
-
-
- KEEP_LOCATION
- KEEP_SIZE
- KEEP_RATIO
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/model/generated/Statemachine.ecore
+ file:/C:/Users/T440s/git/CogniCrypt/plugins/de.cognicrypt.order.editor/output/AEADParameters.statemachine
+
+
+
+
diff --git a/plugins/de.cognicrypt.order.editor/.antlr-generator-3.2.0-patch.jar b/plugins/de.cognicrypt.order.editor/.antlr-generator-3.2.0-patch.jar
new file mode 100644
index 0000000000000000000000000000000000000000..90516fd7ac76a3ec685e046f91eb762e68e20586
GIT binary patch
literal 1484649
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