瀏覽代碼

Refactored default trigger and comprised 'oncycle' with 'always' triggers (#YAKHMI-359). Also introduced to use keywords (like 'default') for region and state names (#YAKHMI-713)

terfloth@itemis.de 12 年之前
父節點
當前提交
e063dfbec9
共有 22 個文件被更改,包括 4400 次插入3626 次删除
  1. 1 2
      plugins/org.yakindu.sct.model.stext/model/SText.ecore
  2. 1 2
      plugins/org.yakindu.sct.model.stext/model/SText.genmodel
  3. 146 121
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi
  4. 301 325
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java
  5. 308 138
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.g
  6. 22 22
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.tokens
  7. 231 233
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java
  8. 2818 2242
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java
  9. 268 146
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java
  10. 5 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/DefaultEvent.java
  11. 0 18
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/OnCycleEvent.java
  12. 9 18
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextFactory.java
  13. 79 118
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java
  14. 8 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/DefaultEventImpl.java
  15. 58 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java
  16. 0 42
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OnCycleEventImpl.java
  17. 12 24
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java
  18. 23 46
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java
  19. 20 40
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java
  20. 24 50
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java
  21. 49 16
      plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext
  22. 17 11
      plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

+ 1 - 2
plugins/org.yakindu.sct.model.stext/model/SText.ecore

@@ -65,9 +65,7 @@
   <eClassifiers xsi:type="ecore:EClass" name="BuiltinEventSpec" eSuperTypes="#//EventSpec"/>
   <eClassifiers xsi:type="ecore:EClass" name="EntryEvent" eSuperTypes="#//BuiltinEventSpec"/>
   <eClassifiers xsi:type="ecore:EClass" name="ExitEvent" eSuperTypes="#//BuiltinEventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="OnCycleEvent" eSuperTypes="#//BuiltinEventSpec"/>
   <eClassifiers xsi:type="ecore:EClass" name="AlwaysEvent" eSuperTypes="#//BuiltinEventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="DefaultEvent" eSuperTypes="#//BuiltinEventSpec"/>
   <eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Statement"/>
   <eClassifiers xsi:type="ecore:EClass" name="Literal"/>
   <eClassifiers xsi:type="ecore:EClass" name="BoolLiteral" eSuperTypes="#//Literal">
@@ -137,6 +135,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="guardExpression" eType="#//Expression"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DefaultTrigger" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger"/>
   <eClassifiers xsi:type="ecore:EClass" name="ReactionEffect" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Effect">
     <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
         eType="#//Expression" containment="true"/>

+ 1 - 2
plugins/org.yakindu.sct.model.stext/model/SText.genmodel

@@ -107,9 +107,7 @@
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//BuiltinEventSpec"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryEvent"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitEvent"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//OnCycleEvent"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//AlwaysEvent"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefaultEvent"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Expression"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Literal"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//BoolLiteral">
@@ -132,6 +130,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/triggers"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/guardExpression"/>
     </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefaultTrigger"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect/actions"/>
     </genClasses>

+ 146 - 121
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi

@@ -86,7 +86,7 @@
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value="namespace"/>
           <elements xsi:type="xtext:Assignment" feature="namespace" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
           </elements>
         </elements>
         <elements xsi:type="xtext:Assignment" cardinality="*" feature="scopes" operator="+=">
@@ -107,7 +107,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//TransitionSpecification"/>
       </type>
       <alternatives xsi:type="xtext:Assignment" feature="reaction" operator="=">
-        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="Scope">
@@ -130,7 +130,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" cardinality="*" feature="declarations" operator="+=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
         </elements>
       </alternatives>
     </rules>
@@ -161,7 +161,7 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="interface"/>
         <elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" cardinality="*" feature="declarations" operator="+=">
@@ -190,7 +190,7 @@
             <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
             <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
             <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
-            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
           </terminal>
         </elements>
       </alternatives>
@@ -203,7 +203,7 @@
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="EventDeclarartion">
@@ -228,7 +228,7 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="event"/>
         <elements xsi:type="xtext:Assignment" feature="name" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
@@ -237,7 +237,7 @@
               <type metamodel="/0/@metamodelDeclarations.3">
                 <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/base/types/2.0.0#//Type"/>
               </type>
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
             </terminal>
           </elements>
         </elements>
@@ -294,7 +294,7 @@
           </elements>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="name" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" feature="type" operator="=">
@@ -302,13 +302,13 @@
             <type metamodel="/0/@metamodelDeclarations.3">
               <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/base/types/2.0.0#//Type"/>
             </type>
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
           </terminal>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value="="/>
           <elements xsi:type="xtext:Assignment" feature="initialValue" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
           </elements>
         </elements>
       </alternatives>
@@ -337,7 +337,7 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="operation"/>
         <elements xsi:type="xtext:Assignment" feature="name" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Group" cardinality="?">
@@ -359,7 +359,7 @@
               <type metamodel="/0/@metamodelDeclarations.3">
                 <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/base/types/2.0.0#//Type"/>
               </type>
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
             </terminal>
           </elements>
         </elements>
@@ -371,7 +371,7 @@
       </type>
       <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Assignment" feature="name" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" feature="type" operator="=">
@@ -379,20 +379,48 @@
             <type metamodel="/0/@metamodelDeclarations.3">
               <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/base/types/2.0.0#//Type"/>
             </type>
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
           </terminal>
         </elements>
       </alternatives>
     </rules>
+    <rules xsi:type="xtext:ParserRule" name="XID">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+        <elements xsi:type="xtext:Keyword" value="namespace"/>
+        <elements xsi:type="xtext:Keyword" value="interface"/>
+        <elements xsi:type="xtext:Keyword" value="internal"/>
+        <elements xsi:type="xtext:Keyword" value="event"/>
+        <elements xsi:type="xtext:Keyword" value="local"/>
+        <elements xsi:type="xtext:Keyword" value="in"/>
+        <elements xsi:type="xtext:Keyword" value="out"/>
+        <elements xsi:type="xtext:Keyword" value="var"/>
+        <elements xsi:type="xtext:Keyword" value="readonly"/>
+        <elements xsi:type="xtext:Keyword" value="external"/>
+        <elements xsi:type="xtext:Keyword" value="operation"/>
+        <elements xsi:type="xtext:Keyword" value="default"/>
+        <elements xsi:type="xtext:Keyword" value="else"/>
+        <elements xsi:type="xtext:Keyword" value="entry"/>
+        <elements xsi:type="xtext:Keyword" value="exit"/>
+        <elements xsi:type="xtext:Keyword" value="always"/>
+        <elements xsi:type="xtext:Keyword" value="oncycle"/>
+        <elements xsi:type="xtext:Keyword" value="raise"/>
+        <elements xsi:type="xtext:Keyword" value="valueof"/>
+        <elements xsi:type="xtext:Keyword" value="active"/>
+      </alternatives>
+    </rules>
     <rules xsi:type="xtext:ParserRule" name="FQN">
       <type metamodel="/0/@metamodelDeclarations.1">
         <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Keyword" value="."/>
-          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+          <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
         </elements>
       </alternatives>
     </rules>
@@ -401,8 +429,8 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Reaction"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="LocalReaction">
@@ -411,13 +439,13 @@
       </type>
       <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Assignment" feature="trigger" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
         </elements>
         <elements xsi:type="xtext:Group" predicated="true">
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Keyword" value="/"/>
             <elements xsi:type="xtext:Assignment" feature="effect" operator="=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
             </elements>
           </elements>
         </elements>
@@ -434,16 +462,25 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" cardinality="?" feature="trigger" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value="/"/>
           <elements xsi:type="xtext:Assignment" feature="effect" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
           </elements>
         </elements>
       </alternatives>
     </rules>
+    <rules xsi:type="xtext:ParserRule" name="StextTrigger">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Trigger"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
+      </alternatives>
+    </rules>
     <rules xsi:type="xtext:ParserRule" name="ReactionTrigger">
       <type metamodel="/0/@metamodelDeclarations.2">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Trigger"/>
@@ -457,18 +494,18 @@
         <elements xsi:type="xtext:Alternatives">
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="*">
               <elements xsi:type="xtext:Keyword" value=","/>
               <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
               </elements>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="?">
               <elements xsi:type="xtext:Keyword" predicated="true" value="["/>
               <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
               </elements>
               <elements xsi:type="xtext:Keyword" value="]"/>
             </elements>
@@ -476,13 +513,29 @@
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Keyword" value="["/>
             <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
             </elements>
             <elements xsi:type="xtext:Keyword" value="]"/>
           </elements>
         </elements>
       </alternatives>
     </rules>
+    <rules xsi:type="xtext:ParserRule" name="DefaultTrigger">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Trigger"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//DefaultTrigger"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Alternatives">
+          <elements xsi:type="xtext:Keyword" value="default"/>
+          <elements xsi:type="xtext:Keyword" value="else"/>
+        </elements>
+      </alternatives>
+    </rules>
     <rules xsi:type="xtext:ParserRule" name="ReactionEffect">
       <type metamodel="/0/@metamodelDeclarations.2">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Effect"/>
@@ -495,16 +548,16 @@
         </elements>
         <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
           <terminal xsi:type="xtext:Alternatives">
-            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
-            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
           </terminal>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Keyword" predicated="true" value=";"/>
           <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
             <terminal xsi:type="xtext:Alternatives">
-              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
-              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
             </terminal>
           </elements>
         </elements>
@@ -515,9 +568,9 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//EventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="RegularEventSpec">
@@ -525,7 +578,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//RegularEventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Assignment" feature="event" operator="=">
-        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="TimeEventSpec">
@@ -534,13 +587,13 @@
       </type>
       <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Assignment" feature="type" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="unit" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
         </elements>
       </alternatives>
     </rules>
@@ -564,11 +617,9 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//BuiltinEventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="EntryEvent">
@@ -597,19 +648,6 @@
         <elements xsi:type="xtext:Keyword" value="exit"/>
       </alternatives>
     </rules>
-    <rules xsi:type="xtext:ParserRule" name="OnCycleEvent">
-      <type metamodel="/0/@metamodelDeclarations.0">
-        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//OnCycleEvent"/>
-      </type>
-      <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:Action">
-          <type metamodel="/0/@metamodelDeclarations.0">
-            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//OnCycleEvent"/>
-          </type>
-        </elements>
-        <elements xsi:type="xtext:Keyword" value="oncycle"/>
-      </alternatives>
-    </rules>
     <rules xsi:type="xtext:ParserRule" name="AlwaysEvent">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//AlwaysEvent"/>
@@ -620,22 +658,9 @@
             <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//AlwaysEvent"/>
           </type>
         </elements>
-        <elements xsi:type="xtext:Keyword" value="always"/>
-      </alternatives>
-    </rules>
-    <rules xsi:type="xtext:ParserRule" name="DefaultEvent">
-      <type metamodel="/0/@metamodelDeclarations.0">
-        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//DefaultEvent"/>
-      </type>
-      <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:Action">
-          <type metamodel="/0/@metamodelDeclarations.0">
-            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//DefaultEvent"/>
-          </type>
-        </elements>
         <elements xsi:type="xtext:Alternatives">
-          <elements xsi:type="xtext:Keyword" value="default"/>
-          <elements xsi:type="xtext:Keyword" value="else"/>
+          <elements xsi:type="xtext:Keyword" value="always"/>
+          <elements xsi:type="xtext:Keyword" value="oncycle"/>
         </elements>
       </alternatives>
     </rules>
@@ -651,12 +676,12 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="raise"/>
         <elements xsi:type="xtext:Assignment" feature="event" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
           </elements>
         </elements>
       </alternatives>
@@ -665,20 +690,20 @@
       <type metamodel="/0/@metamodelDeclarations.2">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Statement"/>
       </type>
-      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="Expression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
-      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="AssignmentExpression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="varRef" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -686,10 +711,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
           </elements>
         </elements>
       </alternatives>
@@ -699,7 +724,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Action" feature="condition" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -708,11 +733,11 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="?"/>
           <elements xsi:type="xtext:Assignment" feature="trueCase" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
           </elements>
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="falseCase" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
           </elements>
         </elements>
       </alternatives>
@@ -722,7 +747,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -731,7 +756,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="||"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
           </elements>
         </elements>
       </alternatives>
@@ -741,7 +766,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -750,7 +775,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="&amp;&amp;"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
           </elements>
         </elements>
       </alternatives>
@@ -760,7 +785,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -769,7 +794,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="!"/>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
           </elements>
         </elements>
       </alternatives>
@@ -779,7 +804,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -788,7 +813,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="^"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
           </elements>
         </elements>
       </alternatives>
@@ -798,7 +823,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -807,7 +832,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="|"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
           </elements>
         </elements>
       </alternatives>
@@ -817,7 +842,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -826,7 +851,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="&amp;"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
           </elements>
         </elements>
       </alternatives>
@@ -836,7 +861,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -844,10 +869,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
           </elements>
         </elements>
       </alternatives>
@@ -857,7 +882,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -865,10 +890,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
           </elements>
         </elements>
       </alternatives>
@@ -878,7 +903,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -886,10 +911,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
           </elements>
         </elements>
       </alternatives>
@@ -899,7 +924,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -907,10 +932,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
           </elements>
         </elements>
       </alternatives>
@@ -920,7 +945,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -928,10 +953,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
           </elements>
         </elements>
       </alternatives>
@@ -941,11 +966,11 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="PrimitiveValueExpression">
@@ -959,7 +984,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
         </elements>
       </alternatives>
     </rules>
@@ -968,7 +993,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="owner" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -990,12 +1015,12 @@
             </elements>
             <elements xsi:type="xtext:Group" cardinality="?">
               <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
               </elements>
               <elements xsi:type="xtext:Group" cardinality="*">
                 <elements xsi:type="xtext:Keyword" value=","/>
                 <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                  <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+                  <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
                 </elements>
               </elements>
             </elements>
@@ -1028,12 +1053,12 @@
           </elements>
           <elements xsi:type="xtext:Group" cardinality="?">
             <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="*">
               <elements xsi:type="xtext:Keyword" value=","/>
               <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
               </elements>
             </elements>
           </elements>
@@ -1054,7 +1079,7 @@
         <elements xsi:type="xtext:Keyword" value="valueof"/>
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=")"/>
       </alternatives>
@@ -1076,7 +1101,7 @@
             <type metamodel="/0/@metamodelDeclarations.2">
               <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//State"/>
             </type>
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
           </terminal>
         </elements>
         <elements xsi:type="xtext:Keyword" value=")"/>
@@ -1094,7 +1119,7 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=")"/>
       </alternatives>
@@ -1104,11 +1129,11 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Literal"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="BoolLiteral">
@@ -1122,7 +1147,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
         </elements>
       </alternatives>
     </rules>
@@ -1152,7 +1177,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
         </elements>
       </alternatives>
     </rules>
@@ -1167,7 +1192,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
         </elements>
       </alternatives>
     </rules>

+ 301 - 325
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java

@@ -60,17 +60,17 @@ protected class ThisRootNode extends RootToken {
 			case 26: return new Reaction_Alternatives(this, this, 26, inst);
 			case 27: return new LocalReaction_Group(this, this, 27, inst);
 			case 28: return new TransitionReaction_Group(this, this, 28, inst);
-			case 29: return new ReactionTrigger_Group(this, this, 29, inst);
-			case 30: return new ReactionEffect_Group(this, this, 30, inst);
-			case 31: return new EventSpec_Alternatives(this, this, 31, inst);
-			case 32: return new RegularEventSpec_EventAssignment(this, this, 32, inst);
-			case 33: return new TimeEventSpec_Group(this, this, 33, inst);
-			case 34: return new BuiltinEventSpec_Alternatives(this, this, 34, inst);
-			case 35: return new EntryEvent_Group(this, this, 35, inst);
-			case 36: return new ExitEvent_Group(this, this, 36, inst);
-			case 37: return new OnCycleEvent_Group(this, this, 37, inst);
-			case 38: return new AlwaysEvent_Group(this, this, 38, inst);
-			case 39: return new DefaultEvent_Group(this, this, 39, inst);
+			case 29: return new StextTrigger_Alternatives(this, this, 29, inst);
+			case 30: return new ReactionTrigger_Group(this, this, 30, inst);
+			case 31: return new DefaultTrigger_Group(this, this, 31, inst);
+			case 32: return new ReactionEffect_Group(this, this, 32, inst);
+			case 33: return new EventSpec_Alternatives(this, this, 33, inst);
+			case 34: return new RegularEventSpec_EventAssignment(this, this, 34, inst);
+			case 35: return new TimeEventSpec_Group(this, this, 35, inst);
+			case 36: return new BuiltinEventSpec_Alternatives(this, this, 36, inst);
+			case 37: return new EntryEvent_Group(this, this, 37, inst);
+			case 38: return new ExitEvent_Group(this, this, 38, inst);
+			case 39: return new AlwaysEvent_Group(this, this, 39, inst);
 			case 40: return new EventRaisingExpression_Group(this, this, 40, inst);
 			case 41: return new StatementExpression_ExpressionParserRuleCall(this, this, 41, inst);
 			case 42: return new Expression_AssignmentExpressionParserRuleCall(this, this, 42, inst);
@@ -1392,13 +1392,13 @@ protected class NamedInterfaceScope_InterfaceScopeParserRuleCall extends RuleCal
 /************ begin Rule InterfaceScope ****************
  *
  * InterfaceScope:
- * 	{InterfaceScope} "interface" name=ID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
+ * 	{InterfaceScope} "interface" name=XID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
  * 	//		| Exitpoint
  * 	| VariableDeclaration | OperationDeclaration)*;
  *
  **/
 
-// {InterfaceScope} "interface" name=ID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
+// {InterfaceScope} "interface" name=XID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
 // //		| Exitpoint
 // | VariableDeclaration | OperationDeclaration)*
 protected class InterfaceScope_Group extends GroupToken {
@@ -1478,7 +1478,7 @@ protected class InterfaceScope_InterfaceKeyword_1 extends KeywordToken  {
 
 }
 
-// name=ID?
+// name=XID?
 protected class InterfaceScope_NameAssignment_2 extends AssignmentToken  {
 	
 	public InterfaceScope_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -1502,9 +1502,9 @@ protected class InterfaceScope_NameAssignment_2 extends AssignmentToken  {
 	public IEObjectConsumer tryConsume() {
 		if((value = eObjectConsumer.getConsumable("name",false)) == null) return null;
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
-		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInterfaceScopeAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
-			type = AssignmentType.TERMINAL_RULE_CALL;
-			element = grammarAccess.getInterfaceScopeAccess().getNameIDTerminalRuleCall_2_0();
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0();
 			return obj;
 		}
 		return null;
@@ -2087,11 +2087,11 @@ protected class EventFeature_EventDefinitionParserRuleCall extends RuleCallToken
  *
  * // (derivation=EventDerivation)?;
  * EventDefinition:
- * 	direction=Direction? "event" name=ID (":" type=[types::Type|FQN])?;
+ * 	direction=Direction? "event" name=XID (":" type=[types::Type|FQN])?;
  *
  **/
 
-// direction=Direction? "event" name=ID (":" type=[types::Type|FQN])?
+// direction=Direction? "event" name=XID (":" type=[types::Type|FQN])?
 protected class EventDefinition_Group extends GroupToken {
 	
 	public EventDefinition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -2176,7 +2176,7 @@ protected class EventDefinition_EventKeyword_1 extends KeywordToken  {
 
 }
 
-// name=ID
+// name=XID
 protected class EventDefinition_NameAssignment_2 extends AssignmentToken  {
 	
 	public EventDefinition_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -2200,9 +2200,9 @@ protected class EventDefinition_NameAssignment_2 extends AssignmentToken  {
 	public IEObjectConsumer tryConsume() {
 		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
-		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getEventDefinitionAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
-			type = AssignmentType.TERMINAL_RULE_CALL;
-			element = grammarAccess.getEventDefinitionAccess().getNameIDTerminalRuleCall_2_0();
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0();
 			return obj;
 		}
 		return null;
@@ -2391,12 +2391,12 @@ protected class VariableFeature_VariableDefinitionParserRuleCall extends RuleCal
 /************ begin Rule VariableDefinition ****************
  *
  * VariableDefinition:
- * 	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=ID ":" type=[types::Type|FQN] ("="
+ * 	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=XID ":" type=[types::Type|FQN] ("="
  * 	initialValue=Expression)?;
  *
  **/
 
-// {VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=ID ":" type=[types::Type|FQN] ("="
+// {VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=XID ":" type=[types::Type|FQN] ("="
 // initialValue=Expression)?
 protected class VariableDefinition_Group extends GroupToken {
 	
@@ -2569,7 +2569,7 @@ protected class VariableDefinition_ExternalAssignment_2_1 extends AssignmentToke
 }
 
 
-// name=ID
+// name=XID
 protected class VariableDefinition_NameAssignment_3 extends AssignmentToken  {
 	
 	public VariableDefinition_NameAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -2593,9 +2593,9 @@ protected class VariableDefinition_NameAssignment_3 extends AssignmentToken  {
 	public IEObjectConsumer tryConsume() {
 		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
-		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getVariableDefinitionAccess().getNameIDTerminalRuleCall_3_0(), value, null)) {
-			type = AssignmentType.TERMINAL_RULE_CALL;
-			element = grammarAccess.getVariableDefinitionAccess().getNameIDTerminalRuleCall_3_0();
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0();
 			return obj;
 		}
 		return null;
@@ -2852,12 +2852,12 @@ protected class OperationFeature_OperationDefinitionParserRuleCall extends RuleC
 /************ begin Rule OperationDefinition ****************
  *
  * OperationDefinition:
- * 	{OperationDefinition} "operation" name=ID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
+ * 	{OperationDefinition} "operation" name=XID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
  * 	type=[types::Type|FQN])?;
  *
  **/
 
-// {OperationDefinition} "operation" name=ID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
+// {OperationDefinition} "operation" name=XID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
 // type=[types::Type|FQN])?
 protected class OperationDefinition_Group extends GroupToken {
 	
@@ -2936,7 +2936,7 @@ protected class OperationDefinition_OperationKeyword_1 extends KeywordToken  {
 
 }
 
-// name=ID
+// name=XID
 protected class OperationDefinition_NameAssignment_2 extends AssignmentToken  {
 	
 	public OperationDefinition_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -2960,9 +2960,9 @@ protected class OperationDefinition_NameAssignment_2 extends AssignmentToken  {
 	public IEObjectConsumer tryConsume() {
 		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
-		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getOperationDefinitionAccess().getNameIDTerminalRuleCall_2_0(), value, null)) {
-			type = AssignmentType.TERMINAL_RULE_CALL;
-			element = grammarAccess.getOperationDefinitionAccess().getNameIDTerminalRuleCall_2_0();
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0();
 			return obj;
 		}
 		return null;
@@ -3266,11 +3266,11 @@ protected class OperationDefinition_TypeAssignment_6_1 extends AssignmentToken
 /************ begin Rule Parameter ****************
  *
  * Parameter returns types::Parameter:
- * 	name=ID ":" type=[types::Type|FQN];
+ * 	name=XID ":" type=[types::Type|FQN];
  *
  **/
 
-// name=ID ":" type=[types::Type|FQN]
+// name=XID ":" type=[types::Type|FQN]
 protected class Parameter_Group extends GroupToken {
 	
 	public Parameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -3299,7 +3299,7 @@ protected class Parameter_Group extends GroupToken {
 
 }
 
-// name=ID
+// name=XID
 protected class Parameter_NameAssignment_0 extends AssignmentToken  {
 	
 	public Parameter_NameAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -3322,9 +3322,9 @@ protected class Parameter_NameAssignment_0 extends AssignmentToken  {
 	public IEObjectConsumer tryConsume() {
 		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
-		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0(), value, null)) {
-			type = AssignmentType.TERMINAL_RULE_CALL;
-			element = grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0();
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0();
 			return obj;
 		}
 		return null;
@@ -3396,6 +3396,7 @@ protected class Parameter_TypeAssignment_2 extends AssignmentToken  {
 
 
 
+
 /************ begin Rule Reaction ****************
  *
  * / * ---- reaction rules ----
@@ -3716,11 +3717,11 @@ protected class LocalReaction_EffectAssignment_1_0_1 extends AssignmentToken  {
  *
  * // ('#' properties=ReactionProperties)?;
  * TransitionReaction:
- * 	{TransitionReaction} trigger=ReactionTrigger? ("/" effect=ReactionEffect)?;
+ * 	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
  *
  **/
 
-// {TransitionReaction} trigger=ReactionTrigger? ("/" effect=ReactionEffect)?
+// {TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?
 protected class TransitionReaction_Group extends GroupToken {
 	
 	public TransitionReaction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -3777,7 +3778,7 @@ protected class TransitionReaction_TransitionReactionAction_0 extends ActionToke
 	}
 }
 
-// trigger=ReactionTrigger?
+// trigger=StextTrigger?
 protected class TransitionReaction_TriggerAssignment_1 extends AssignmentToken  {
 	
 	public TransitionReaction_TriggerAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -3792,7 +3793,7 @@ protected class TransitionReaction_TriggerAssignment_1 extends AssignmentToken
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new ReactionTrigger_Group(this, this, 0, inst);
+			case 0: return new StextTrigger_Alternatives(this, this, 0, inst);
 			default: return null;
 		}	
 	}
@@ -3803,9 +3804,9 @@ protected class TransitionReaction_TriggerAssignment_1 extends AssignmentToken
 		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("trigger");
 		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
 			IEObjectConsumer param = createEObjectConsumer((EObject)value);
-			if(param.isInstanceOf(grammarAccess.getReactionTriggerRule().getType().getClassifier())) {
+			if(param.isInstanceOf(grammarAccess.getStextTriggerRule().getType().getClassifier())) {
 				type = AssignmentType.PARSER_RULE_CALL;
-				element = grammarAccess.getTransitionReactionAccess().getTriggerReactionTriggerParserRuleCall_1_0(); 
+				element = grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0(); 
 				consumed = obj;
 				return param;
 			}
@@ -3919,6 +3920,120 @@ protected class TransitionReaction_EffectAssignment_2_1 extends AssignmentToken
 /************ end Rule TransitionReaction ****************/
 
 
+/************ begin Rule StextTrigger ****************
+ *
+ * StextTrigger returns sgraph::Trigger:
+ * 	ReactionTrigger | DefaultTrigger;
+ *
+ **/
+
+// ReactionTrigger | DefaultTrigger
+protected class StextTrigger_Alternatives extends AlternativesToken {
+
+	public StextTrigger_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getStextTriggerAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StextTrigger_ReactionTriggerParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new StextTrigger_DefaultTriggerParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getReactionTriggerAccess().getReactionTriggerAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ReactionTrigger
+protected class StextTrigger_ReactionTriggerParserRuleCall_0 extends RuleCallToken {
+	
+	public StextTrigger_ReactionTriggerParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReactionTrigger_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getReactionTriggerAccess().getReactionTriggerAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ReactionTrigger_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DefaultTrigger
+protected class StextTrigger_DefaultTriggerParserRuleCall_1 extends RuleCallToken {
+	
+	public StextTrigger_DefaultTriggerParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DefaultTrigger_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DefaultTrigger_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule StextTrigger ****************/
+
+
 /************ begin Rule ReactionTrigger ****************
  *
  * ReactionTrigger returns sgraph::Trigger:
@@ -4402,6 +4517,117 @@ protected class ReactionTrigger_RightSquareBracketKeyword_1_1_2 extends KeywordT
 /************ end Rule ReactionTrigger ****************/
 
 
+/************ begin Rule DefaultTrigger ****************
+ *
+ * DefaultTrigger returns sgraph::Trigger:
+ * 	{DefaultTrigger} ("default" | "else");
+ *
+ **/
+
+// {DefaultTrigger} ("default" | "else")
+protected class DefaultTrigger_Group extends GroupToken {
+	
+	public DefaultTrigger_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getDefaultTriggerAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DefaultTrigger_Alternatives_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {DefaultTrigger}
+protected class DefaultTrigger_DefaultTriggerAction_0 extends ActionToken  {
+
+	public DefaultTrigger_DefaultTriggerAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "default" | "else"
+protected class DefaultTrigger_Alternatives_1 extends AlternativesToken {
+
+	public DefaultTrigger_Alternatives_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getDefaultTriggerAccess().getAlternatives_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DefaultTrigger_DefaultKeyword_1_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "default"
+protected class DefaultTrigger_DefaultKeyword_1_0 extends KeywordToken  {
+	
+	public DefaultTrigger_DefaultKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DefaultTrigger_DefaultTriggerAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+
+/************ end Rule DefaultTrigger ****************/
+
+
 /************ begin Rule ReactionEffect ****************
  *
  * // (';')?;
@@ -4671,10 +4897,8 @@ protected class EventSpec_Alternatives extends AlternativesToken {
     @Override
 	public IEObjectConsumer tryConsume() {
 		if(getEObject().eClass() != grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getDefaultEventAccess().getDefaultEventAction_0().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getEntryEventAccess().getEntryEventAction_0().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getExitEventAccess().getExitEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getRegularEventSpecRule().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getTimeEventSpecRule().getType().getClassifier())
 			return null;
@@ -4778,10 +5002,8 @@ protected class EventSpec_BuiltinEventSpecParserRuleCall_2 extends RuleCallToken
     @Override
 	public IEObjectConsumer tryConsume() {
 		if(getEObject().eClass() != grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getDefaultEventAccess().getDefaultEventAction_0().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getEntryEventAccess().getEntryEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getExitEventAccess().getExitEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0().getType().getClassifier())
+		   getEObject().eClass() != grammarAccess.getExitEventAccess().getExitEventAction_0().getType().getClassifier())
 			return null;
 		if(checkForRecursion(BuiltinEventSpec_Alternatives.class, eObjectConsumer)) return null;
 		return eObjectConsumer;
@@ -5013,12 +5235,13 @@ protected class TimeEventSpec_UnitAssignment_2 extends AssignmentToken  {
 /************ begin Rule BuiltinEventSpec ****************
  *
  * //TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
+ * // | DefaultEvent | OnCycleEvent ;
  * BuiltinEventSpec:
- * 	EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent;
+ * 	EntryEvent | ExitEvent | AlwaysEvent;
  *
  **/
 
-// EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent
+// EntryEvent | ExitEvent | AlwaysEvent
 protected class BuiltinEventSpec_Alternatives extends AlternativesToken {
 
 	public BuiltinEventSpec_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -5035,9 +5258,7 @@ protected class BuiltinEventSpec_Alternatives extends AlternativesToken {
 		switch(index) {
 			case 0: return new BuiltinEventSpec_EntryEventParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
 			case 1: return new BuiltinEventSpec_ExitEventParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
-			case 2: return new BuiltinEventSpec_OnCycleEventParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
-			case 3: return new BuiltinEventSpec_AlwaysEventParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
-			case 4: return new BuiltinEventSpec_DefaultEventParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 2: return new BuiltinEventSpec_AlwaysEventParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
 			default: return null;
 		}	
 	}
@@ -5045,10 +5266,8 @@ protected class BuiltinEventSpec_Alternatives extends AlternativesToken {
     @Override
 	public IEObjectConsumer tryConsume() {
 		if(getEObject().eClass() != grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getDefaultEventAccess().getDefaultEventAction_0().getType().getClassifier() && 
 		   getEObject().eClass() != grammarAccess.getEntryEventAccess().getEntryEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getExitEventAccess().getExitEventAction_0().getType().getClassifier() && 
-		   getEObject().eClass() != grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0().getType().getClassifier())
+		   getEObject().eClass() != grammarAccess.getExitEventAccess().getExitEventAction_0().getType().getClassifier())
 			return null;
 		return eObjectConsumer;
 	}
@@ -5127,52 +5346,16 @@ protected class BuiltinEventSpec_ExitEventParserRuleCall_1 extends RuleCallToken
 	}	
 }
 
-// OnCycleEvent
-protected class BuiltinEventSpec_OnCycleEventParserRuleCall_2 extends RuleCallToken {
-	
-	public BuiltinEventSpec_OnCycleEventParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public RuleCall getGrammarElement() {
-		return grammarAccess.getBuiltinEventSpecAccess().getOnCycleEventParserRuleCall_2();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new OnCycleEvent_Group(this, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(getEObject().eClass() != grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0().getType().getClassifier())
-			return null;
-		if(checkForRecursion(OnCycleEvent_Group.class, eObjectConsumer)) return null;
-		return eObjectConsumer;
-	}
-	
-    @Override
-	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
-		switch(index) {
-			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
-		}	
-	}	
-}
-
 // AlwaysEvent
-protected class BuiltinEventSpec_AlwaysEventParserRuleCall_3 extends RuleCallToken {
+protected class BuiltinEventSpec_AlwaysEventParserRuleCall_2 extends RuleCallToken {
 	
-	public BuiltinEventSpec_AlwaysEventParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+	public BuiltinEventSpec_AlwaysEventParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
 		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
 	}
 	
 	@Override
 	public RuleCall getGrammarElement() {
-		return grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_3();
+		return grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2();
 	}
 
     @Override
@@ -5199,42 +5382,6 @@ protected class BuiltinEventSpec_AlwaysEventParserRuleCall_3 extends RuleCallTok
 	}	
 }
 
-// DefaultEvent
-protected class BuiltinEventSpec_DefaultEventParserRuleCall_4 extends RuleCallToken {
-	
-	public BuiltinEventSpec_DefaultEventParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public RuleCall getGrammarElement() {
-		return grammarAccess.getBuiltinEventSpecAccess().getDefaultEventParserRuleCall_4();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new DefaultEvent_Group(this, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(getEObject().eClass() != grammarAccess.getDefaultEventAccess().getDefaultEventAction_0().getType().getClassifier())
-			return null;
-		if(checkForRecursion(DefaultEvent_Group.class, eObjectConsumer)) return null;
-		return eObjectConsumer;
-	}
-	
-    @Override
-	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
-		switch(index) {
-			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
-		}	
-	}	
-}
-
 
 /************ end Rule BuiltinEventSpec ****************/
 
@@ -5415,102 +5562,16 @@ protected class ExitEvent_ExitKeyword_1 extends KeywordToken  {
 /************ end Rule ExitEvent ****************/
 
 
-/************ begin Rule OnCycleEvent ****************
- *
- * OnCycleEvent:
- * 	{OnCycleEvent} "oncycle";
- *
- **/
-
-// {OnCycleEvent} "oncycle"
-protected class OnCycleEvent_Group extends GroupToken {
-	
-	public OnCycleEvent_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Group getGrammarElement() {
-		return grammarAccess.getOnCycleEventAccess().getGroup();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new OnCycleEvent_OncycleKeyword_1(lastRuleCallOrigin, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(getEObject().eClass() != grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0().getType().getClassifier())
-			return null;
-		return eObjectConsumer;
-	}
-
-}
-
-// {OnCycleEvent}
-protected class OnCycleEvent_OnCycleEventAction_0 extends ActionToken  {
-
-	public OnCycleEvent_OnCycleEventAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Action getGrammarElement() {
-		return grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(!eObjectConsumer.isConsumed()) return null;
-		return eObjectConsumer;
-	}
-}
-
-// "oncycle"
-protected class OnCycleEvent_OncycleKeyword_1 extends KeywordToken  {
-	
-	public OnCycleEvent_OncycleKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Keyword getGrammarElement() {
-		return grammarAccess.getOnCycleEventAccess().getOncycleKeyword_1();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new OnCycleEvent_OnCycleEventAction_0(lastRuleCallOrigin, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-}
-
-
-/************ end Rule OnCycleEvent ****************/
-
-
 /************ begin Rule AlwaysEvent ****************
  *
+ * //OnCycleEvent:
+ * //	{OnCycleEvent} 'oncycle'; 
  * AlwaysEvent:
- * 	{AlwaysEvent} "always";
+ * 	{AlwaysEvent} ("always" | "oncycle");
  *
  **/
 
-// {AlwaysEvent} "always"
+// {AlwaysEvent} ("always" | "oncycle")
 protected class AlwaysEvent_Group extends GroupToken {
 	
 	public AlwaysEvent_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -5525,7 +5586,7 @@ protected class AlwaysEvent_Group extends GroupToken {
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new AlwaysEvent_AlwaysKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			case 0: return new AlwaysEvent_Alternatives_1(lastRuleCallOrigin, this, 0, inst);
 			default: return null;
 		}	
 	}
@@ -5565,132 +5626,44 @@ protected class AlwaysEvent_AlwaysEventAction_0 extends ActionToken  {
 	}
 }
 
-// "always"
-protected class AlwaysEvent_AlwaysKeyword_1 extends KeywordToken  {
-	
-	public AlwaysEvent_AlwaysKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Keyword getGrammarElement() {
-		return grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new AlwaysEvent_AlwaysEventAction_0(lastRuleCallOrigin, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-}
-
-
-/************ end Rule AlwaysEvent ****************/
-
+// "always" | "oncycle"
+protected class AlwaysEvent_Alternatives_1 extends AlternativesToken {
 
-/************ begin Rule DefaultEvent ****************
- *
- * DefaultEvent:
- * 	{DefaultEvent} ("default" | "else");
- *
- **/
-
-// {DefaultEvent} ("default" | "else")
-protected class DefaultEvent_Group extends GroupToken {
-	
-	public DefaultEvent_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Group getGrammarElement() {
-		return grammarAccess.getDefaultEventAccess().getGroup();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			case 0: return new DefaultEvent_Alternatives_1(lastRuleCallOrigin, this, 0, inst);
-			default: return null;
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(getEObject().eClass() != grammarAccess.getDefaultEventAccess().getDefaultEventAction_0().getType().getClassifier())
-			return null;
-		return eObjectConsumer;
-	}
-
-}
-
-// {DefaultEvent}
-protected class DefaultEvent_DefaultEventAction_0 extends ActionToken  {
-
-	public DefaultEvent_DefaultEventAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
-		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
-	}
-	
-	@Override
-	public Action getGrammarElement() {
-		return grammarAccess.getDefaultEventAccess().getDefaultEventAction_0();
-	}
-
-    @Override
-	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
-		switch(index) {
-			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
-		}	
-	}
-
-    @Override
-	public IEObjectConsumer tryConsume() {
-		if(!eObjectConsumer.isConsumed()) return null;
-		return eObjectConsumer;
-	}
-}
-
-// "default" | "else"
-protected class DefaultEvent_Alternatives_1 extends AlternativesToken {
-
-	public DefaultEvent_Alternatives_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+	public AlwaysEvent_Alternatives_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
 		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
 	}
 	
 	@Override
 	public Alternatives getGrammarElement() {
-		return grammarAccess.getDefaultEventAccess().getAlternatives_1();
+		return grammarAccess.getAlwaysEventAccess().getAlternatives_1();
 	}
 
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new DefaultEvent_DefaultKeyword_1_0(lastRuleCallOrigin, this, 0, inst);
+			case 0: return new AlwaysEvent_AlwaysKeyword_1_0(lastRuleCallOrigin, this, 0, inst);
 			default: return null;
 		}	
 	}
 
 }
 
-// "default"
-protected class DefaultEvent_DefaultKeyword_1_0 extends KeywordToken  {
+// "always"
+protected class AlwaysEvent_AlwaysKeyword_1_0 extends KeywordToken  {
 	
-	public DefaultEvent_DefaultKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+	public AlwaysEvent_AlwaysKeyword_1_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
 		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
 	}
 	
 	@Override
 	public Keyword getGrammarElement() {
-		return grammarAccess.getDefaultEventAccess().getDefaultKeyword_1_0();
+		return grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0();
 	}
 
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new DefaultEvent_DefaultEventAction_0(lastRuleCallOrigin, this, 0, inst);
+			case 0: return new AlwaysEvent_AlwaysEventAction_0(lastRuleCallOrigin, this, 0, inst);
 			default: return null;
 		}	
 	}
@@ -5699,11 +5672,14 @@ protected class DefaultEvent_DefaultKeyword_1_0 extends KeywordToken  {
 
 
 
-/************ end Rule DefaultEvent ****************/
+/************ end Rule AlwaysEvent ****************/
 
 
 /************ begin Rule EventRaisingExpression ****************
  *
+ * //DefaultEvent:
+ * //	{DefaultEvent} ('default' | 'else')
+ * //;
  * // ****************
  * // Expression Grammar
  * // ****************

+ 308 - 138
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.g

@@ -544,19 +544,19 @@ ruleInterfaceScope returns [EObject current=null]
     }
 (
 (
-		lv_name_2_0=RULE_ID
-		{
-			newLeafNode(lv_name_2_0, grammarAccess.getInterfaceScopeAccess().getNameIDTerminalRuleCall_2_0()); 
-		}
-		{
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleXID		{
 	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getInterfaceScopeRule());
+	            $current = createModelElementForParent(grammarAccess.getInterfaceScopeRule());
 	        }
-       		setWithLastConsumed(
+       		set(
        			$current, 
        			"name",
         		lv_name_2_0, 
-        		"ID");
+        		"XID");
+	        afterParserOrEnumRuleCall();
 	    }
 
 )
@@ -795,19 +795,19 @@ ruleEventDefinition returns [EObject current=null]
     }
 (
 (
-		lv_name_2_0=RULE_ID
-		{
-			newLeafNode(lv_name_2_0, grammarAccess.getEventDefinitionAccess().getNameIDTerminalRuleCall_2_0()); 
-		}
-		{
+		{ 
+	        newCompositeNode(grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleXID		{
 	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getEventDefinitionRule());
+	            $current = createModelElementForParent(grammarAccess.getEventDefinitionRule());
 	        }
-       		setWithLastConsumed(
+       		set(
        			$current, 
        			"name",
         		lv_name_2_0, 
-        		"ID");
+        		"XID");
+	        afterParserOrEnumRuleCall();
 	    }
 
 )
@@ -965,19 +965,19 @@ ruleVariableDefinition returns [EObject current=null]
 
 )(
 (
-		lv_name_5_0=RULE_ID
-		{
-			newLeafNode(lv_name_5_0, grammarAccess.getVariableDefinitionAccess().getNameIDTerminalRuleCall_3_0()); 
-		}
-		{
+		{ 
+	        newCompositeNode(grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0()); 
+	    }
+		lv_name_5_0=ruleXID		{
 	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getVariableDefinitionRule());
+	            $current = createModelElementForParent(grammarAccess.getVariableDefinitionRule());
 	        }
-       		setWithLastConsumed(
+       		set(
        			$current, 
        			"name",
         		lv_name_5_0, 
-        		"ID");
+        		"XID");
+	        afterParserOrEnumRuleCall();
 	    }
 
 )
@@ -1087,19 +1087,19 @@ ruleOperationDefinition returns [EObject current=null]
     }
 (
 (
-		lv_name_2_0=RULE_ID
-		{
-			newLeafNode(lv_name_2_0, grammarAccess.getOperationDefinitionAccess().getNameIDTerminalRuleCall_2_0()); 
-		}
-		{
+		{ 
+	        newCompositeNode(grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleXID		{
 	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getOperationDefinitionRule());
+	            $current = createModelElementForParent(grammarAccess.getOperationDefinitionRule());
 	        }
-       		setWithLastConsumed(
+       		set(
        			$current, 
        			"name",
         		lv_name_2_0, 
-        		"ID");
+        		"XID");
+	        afterParserOrEnumRuleCall();
 	    }
 
 )
@@ -1193,19 +1193,19 @@ ruleParameter returns [EObject current=null]
     @after { leaveRule(); }:
 ((
 (
-		lv_name_0_0=RULE_ID
-		{
-			newLeafNode(lv_name_0_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); 
-		}
-		{
+		{ 
+	        newCompositeNode(grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleXID		{
 	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getParameterRule());
+	            $current = createModelElementForParent(grammarAccess.getParameterRule());
 	        }
-       		setWithLastConsumed(
+       		set(
        			$current, 
        			"name",
         		lv_name_0_0, 
-        		"ID");
+        		"XID");
+	        afterParserOrEnumRuleCall();
 	    }
 
 )
@@ -1235,6 +1235,174 @@ ruleParameter returns [EObject current=null]
 
 
 
+// Entry rule entryRuleXID
+entryRuleXID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXIDRule()); } 
+	 iv_ruleXID=ruleXID 
+	 { $current=$iv_ruleXID.current.getText(); }  
+	 EOF 
+;
+
+// Rule XID
+ruleXID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getXIDAccess().getIDTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='namespace' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getNamespaceKeyword_1()); 
+    }
+
+    |
+	kw='interface' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getInterfaceKeyword_2()); 
+    }
+
+    |
+	kw='internal' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getInternalKeyword_3()); 
+    }
+
+    |
+	kw='event' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getEventKeyword_4()); 
+    }
+
+    |
+	kw='local' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getLocalKeyword_5()); 
+    }
+
+    |
+	kw='in' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getInKeyword_6()); 
+    }
+
+    |
+	kw='out' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getOutKeyword_7()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getVarKeyword_8()); 
+    }
+
+    |
+	kw='readonly' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getReadonlyKeyword_9()); 
+    }
+
+    |
+	kw='external' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getExternalKeyword_10()); 
+    }
+
+    |
+	kw='operation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getOperationKeyword_11()); 
+    }
+
+    |
+	kw='default' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getDefaultKeyword_12()); 
+    }
+
+    |
+	kw='else' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getElseKeyword_13()); 
+    }
+
+    |
+	kw='entry' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getEntryKeyword_14()); 
+    }
+
+    |
+	kw='exit' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getExitKeyword_15()); 
+    }
+
+    |
+	kw='always' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getAlwaysKeyword_16()); 
+    }
+
+    |
+	kw='oncycle' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getOncycleKeyword_17()); 
+    }
+
+    |
+	kw='raise' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getRaiseKeyword_18()); 
+    }
+
+    |
+	kw='valueof' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getValueofKeyword_19()); 
+    }
+
+    |
+	kw='active' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getXIDAccess().getActiveKeyword_20()); 
+    }
+)
+    ;
+
+
+
+
+
 // Entry rule entryRuleFQN
 entryRuleFQN returns [String current=null] 
 	:
@@ -1249,12 +1417,16 @@ ruleFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
     @init { enterRule(); 
     }
     @after { leaveRule(); }:
-(    this_ID_0=RULE_ID    {
-		$current.merge(this_ID_0);
+(
+    { 
+        newCompositeNode(grammarAccess.getFQNAccess().getXIDParserRuleCall_0()); 
+    }
+    this_XID_0=ruleXID    {
+		$current.merge(this_XID_0);
     }
 
     { 
-    newLeafNode(this_ID_0, grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); 
+        afterParserOrEnumRuleCall();
     }
 (
 	kw='.' 
@@ -1262,12 +1434,16 @@ ruleFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
         $current.merge(kw);
         newLeafNode(kw, grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); 
     }
-    this_ID_2=RULE_ID    {
-		$current.merge(this_ID_2);
+
+    { 
+        newCompositeNode(grammarAccess.getFQNAccess().getXIDParserRuleCall_1_1()); 
+    }
+    this_XID_2=ruleXID    {
+		$current.merge(this_XID_2);
     }
 
     { 
-    newLeafNode(this_ID_2, grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); 
+        afterParserOrEnumRuleCall();
     }
 )*)
     ;
@@ -1367,9 +1543,9 @@ ruleTransitionReaction returns [EObject current=null]
 )(
 (
 		{ 
-	        newCompositeNode(grammarAccess.getTransitionReactionAccess().getTriggerReactionTriggerParserRuleCall_1_0()); 
+	        newCompositeNode(grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0()); 
 	    }
-		lv_trigger_1_0=ruleReactionTrigger		{
+		lv_trigger_1_0=ruleStextTrigger		{
 	        if ($current==null) {
 	            $current = createModelElementForParent(grammarAccess.getTransitionReactionRule());
 	        }
@@ -1377,7 +1553,7 @@ ruleTransitionReaction returns [EObject current=null]
        			$current, 
        			"trigger",
         		lv_trigger_1_0, 
-        		"ReactionTrigger");
+        		"StextTrigger");
 	        afterParserOrEnumRuleCall();
 	    }
 
@@ -1411,6 +1587,46 @@ ruleTransitionReaction returns [EObject current=null]
 
 
 
+// Entry rule entryRuleStextTrigger
+entryRuleStextTrigger returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStextTriggerRule()); }
+	 iv_ruleStextTrigger=ruleStextTrigger 
+	 { $current=$iv_ruleStextTrigger.current; } 
+	 EOF 
+;
+
+// Rule StextTrigger
+ruleStextTrigger returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0()); 
+    }
+    this_ReactionTrigger_0=ruleReactionTrigger
+    { 
+        $current = $this_ReactionTrigger_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1()); 
+    }
+    this_DefaultTrigger_1=ruleDefaultTrigger
+    { 
+        $current = $this_DefaultTrigger_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
 // Entry rule entryRuleReactionTrigger
 entryRuleReactionTrigger returns [EObject current=null] 
 	:
@@ -1532,6 +1748,42 @@ ruleReactionTrigger returns [EObject current=null]
 
 
 
+// Entry rule entryRuleDefaultTrigger
+entryRuleDefaultTrigger returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDefaultTriggerRule()); }
+	 iv_ruleDefaultTrigger=ruleDefaultTrigger 
+	 { $current=$iv_ruleDefaultTrigger.current; } 
+	 EOF 
+;
+
+// Rule DefaultTrigger
+ruleDefaultTrigger returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0(),
+            $current);
+    }
+)(	otherlv_1='default' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0());
+    }
+
+    |	otherlv_2='else' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDefaultTriggerAccess().getElseKeyword_1_1());
+    }
+))
+;
+
+
+
+
+
 // Entry rule entryRuleReactionEffect
 entryRuleReactionEffect returns [EObject current=null] 
 	:
@@ -1836,31 +2088,11 @@ ruleBuiltinEventSpec returns [EObject current=null]
 
     |
     { 
-        newCompositeNode(grammarAccess.getBuiltinEventSpecAccess().getOnCycleEventParserRuleCall_2()); 
-    }
-    this_OnCycleEvent_2=ruleOnCycleEvent
-    { 
-        $current = $this_OnCycleEvent_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_3()); 
-    }
-    this_AlwaysEvent_3=ruleAlwaysEvent
-    { 
-        $current = $this_AlwaysEvent_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getBuiltinEventSpecAccess().getDefaultEventParserRuleCall_4()); 
+        newCompositeNode(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2()); 
     }
-    this_DefaultEvent_4=ruleDefaultEvent
+    this_AlwaysEvent_2=ruleAlwaysEvent
     { 
-        $current = $this_DefaultEvent_4.current; 
+        $current = $this_AlwaysEvent_2.current; 
         afterParserOrEnumRuleCall();
     }
 )
@@ -1932,37 +2164,6 @@ ruleExitEvent returns [EObject current=null]
 
 
 
-// Entry rule entryRuleOnCycleEvent
-entryRuleOnCycleEvent returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOnCycleEventRule()); }
-	 iv_ruleOnCycleEvent=ruleOnCycleEvent 
-	 { $current=$iv_ruleOnCycleEvent.current; } 
-	 EOF 
-;
-
-// Rule OnCycleEvent
-ruleOnCycleEvent returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0(),
-            $current);
-    }
-)	otherlv_1='oncycle' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getOnCycleEventAccess().getOncycleKeyword_1());
-    }
-)
-;
-
-
-
-
-
 // Entry rule entryRuleAlwaysEvent
 entryRuleAlwaysEvent returns [EObject current=null] 
 	:
@@ -1983,45 +2184,14 @@ ruleAlwaysEvent returns [EObject current=null]
             grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0(),
             $current);
     }
-)	otherlv_1='always' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleDefaultEvent
-entryRuleDefaultEvent returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getDefaultEventRule()); }
-	 iv_ruleDefaultEvent=ruleDefaultEvent 
-	 { $current=$iv_ruleDefaultEvent.current; } 
-	 EOF 
-;
-
-// Rule DefaultEvent
-ruleDefaultEvent returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getDefaultEventAccess().getDefaultEventAction_0(),
-            $current);
-    }
-)(	otherlv_1='default' 
+)(	otherlv_1='always' 
     {
-    	newLeafNode(otherlv_1, grammarAccess.getDefaultEventAccess().getDefaultKeyword_1_0());
+    	newLeafNode(otherlv_1, grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0());
     }
 
-    |	otherlv_2='else' 
+    |	otherlv_2='oncycle' 
     {
-    	newLeafNode(otherlv_2, grammarAccess.getDefaultEventAccess().getElseKeyword_1_1());
+    	newLeafNode(otherlv_2, grammarAccess.getAlwaysEventAccess().getOncycleKeyword_1_1());
     }
 ))
 ;

+ 22 - 22
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.tokens

@@ -78,30 +78,30 @@ T__79=79
 T__78=78
 T__77=77
 '>='=76
+'out'=32
 'internal'=20
-'out'=53
 '~'=72
 '=='=77
-'/'=31
+'/'=43
 '/='=57
 '%='=58
 '>'=75
 'event'=21
-'||'=43
-'&&'=44
-';'=34
-'raise'=41
+'||'=48
+'&&'=49
+';'=46
+'raise'=39
 '+'=68
-'.'=30
-'active'=50
-'^'=46
+'active'=41
+'.'=42
+'^'=51
 '>>'=67
-'else'=40
+'else'=34
 '^='=64
 '+='=59
 'readonly'=23
 '>>='=62
-'?'=42
+'?'=47
 'var'=22
 's'=79
 '&='=63
@@ -110,22 +110,22 @@ T__77=77
 '-'=69
 'exit'=36
 ','=28
-'default'=39
-'in'=52
+'default'=33
+'in'=31
 '-='=60
-']'=33
+']'=45
 '<<='=61
 'ns'=82
-'!'=45
-'|'=47
+'!'=50
+'|'=52
 'ms'=80
 'every'=55
 '|='=65
 '@@statechart@@'=14
 '@@state@@'=15
 '='=25
-'always'=38
-'oncycle'=37
+'always'=37
+'oncycle'=38
 ')'=29
 '*='=56
 'entry'=35
@@ -138,11 +138,11 @@ T__77=77
 '<='=74
 '!='=78
 '@@transition@@'=16
-'valueof'=49
+'valueof'=40
 'external'=24
 '<'=73
 '*'=70
-'['=32
-'local'=51
-'&'=48
+'['=44
+'local'=30
+'&'=53
 'interface'=18

文件差異過大導致無法顯示
+ 231 - 233
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java


文件差異過大導致無法顯示
+ 2818 - 2242
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java


+ 268 - 146
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java

@@ -306,7 +306,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Action cInterfaceScopeAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cInterfaceKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final RuleCall cNameXIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		private final Assignment cDeclarationsAssignment_4 = (Assignment)cGroup.eContents().get(4);
 		private final Alternatives cDeclarationsAlternatives_4_0 = (Alternatives)cDeclarationsAssignment_4.eContents().get(0);
@@ -315,12 +315,12 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cDeclarationsOperationDeclarationParserRuleCall_4_0_2 = (RuleCall)cDeclarationsAlternatives_4_0.eContents().get(2);
 		
 		//InterfaceScope:
-		//	{InterfaceScope} "interface" name=ID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
+		//	{InterfaceScope} "interface" name=XID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
 		//	//		| Exitpoint
 		//	| VariableDeclaration | OperationDeclaration)*;
 		public ParserRule getRule() { return rule; }
 
-		//{InterfaceScope} "interface" name=ID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
+		//{InterfaceScope} "interface" name=XID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
 		////		| Exitpoint
 		//| VariableDeclaration | OperationDeclaration)*
 		public Group getGroup() { return cGroup; }
@@ -331,11 +331,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//"interface"
 		public Keyword getInterfaceKeyword_1() { return cInterfaceKeyword_1; }
 
-		//name=ID?
+		//name=XID?
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 
-		//ID
-		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+		//XID
+		public RuleCall getNameXIDParserRuleCall_2_0() { return cNameXIDParserRuleCall_2_0; }
 
 		//":"
 		public Keyword getColonKeyword_3() { return cColonKeyword_3; }
@@ -472,7 +472,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cDirectionDirectionEnumRuleCall_0_0 = (RuleCall)cDirectionAssignment_0.eContents().get(0);
 		private final Keyword cEventKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final RuleCall cNameXIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
 		private final Keyword cColonKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
 		private final Assignment cTypeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
@@ -481,10 +481,10 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		
 		//// (derivation=EventDerivation)?;
 		//EventDefinition:
-		//	direction=Direction? "event" name=ID (":" type=[types::Type|FQN])?;
+		//	direction=Direction? "event" name=XID (":" type=[types::Type|FQN])?;
 		public ParserRule getRule() { return rule; }
 
-		//direction=Direction? "event" name=ID (":" type=[types::Type|FQN])?
+		//direction=Direction? "event" name=XID (":" type=[types::Type|FQN])?
 		public Group getGroup() { return cGroup; }
 
 		//direction=Direction?
@@ -496,11 +496,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//"event"
 		public Keyword getEventKeyword_1() { return cEventKeyword_1; }
 
-		//name=ID
+		//name=XID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 
-		//ID
-		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+		//XID
+		public RuleCall getNameXIDParserRuleCall_2_0() { return cNameXIDParserRuleCall_2_0; }
 
 		//(":" type=[types::Type|FQN])?
 		public Group getGroup_3() { return cGroup_3; }
@@ -553,7 +553,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Assignment cExternalAssignment_2_1 = (Assignment)cUnorderedGroup_2.eContents().get(1);
 		private final Keyword cExternalExternalKeyword_2_1_0 = (Keyword)cExternalAssignment_2_1.eContents().get(0);
 		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
-		private final RuleCall cNameIDTerminalRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
+		private final RuleCall cNameXIDParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
 		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		private final Assignment cTypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
 		private final CrossReference cTypeTypeCrossReference_5_0 = (CrossReference)cTypeAssignment_5.eContents().get(0);
@@ -564,11 +564,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cInitialValueExpressionParserRuleCall_6_1_0 = (RuleCall)cInitialValueAssignment_6_1.eContents().get(0);
 		
 		//VariableDefinition:
-		//	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=ID ":" type=[types::Type|FQN] ("="
+		//	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=XID ":" type=[types::Type|FQN] ("="
 		//	initialValue=Expression)?;
 		public ParserRule getRule() { return rule; }
 
-		//{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=ID ":" type=[types::Type|FQN] ("="
+		//{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=XID ":" type=[types::Type|FQN] ("="
 		//initialValue=Expression)?
 		public Group getGroup() { return cGroup; }
 
@@ -593,11 +593,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//"external"
 		public Keyword getExternalExternalKeyword_2_1_0() { return cExternalExternalKeyword_2_1_0; }
 
-		//name=ID
+		//name=XID
 		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
 
-		//ID
-		public RuleCall getNameIDTerminalRuleCall_3_0() { return cNameIDTerminalRuleCall_3_0; }
+		//XID
+		public RuleCall getNameXIDParserRuleCall_3_0() { return cNameXIDParserRuleCall_3_0; }
 
 		//":"
 		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
@@ -654,7 +654,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Action cOperationDefinitionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cOperationKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final RuleCall cNameXIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Keyword cLeftParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
 		private final Assignment cParametersAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
@@ -671,11 +671,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cTypeTypeFQNParserRuleCall_6_1_0_1 = (RuleCall)cTypeTypeCrossReference_6_1_0.eContents().get(1);
 		
 		//OperationDefinition:
-		//	{OperationDefinition} "operation" name=ID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
+		//	{OperationDefinition} "operation" name=XID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
 		//	type=[types::Type|FQN])?;
 		public ParserRule getRule() { return rule; }
 
-		//{OperationDefinition} "operation" name=ID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
+		//{OperationDefinition} "operation" name=XID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
 		//type=[types::Type|FQN])?
 		public Group getGroup() { return cGroup; }
 
@@ -685,11 +685,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//"operation"
 		public Keyword getOperationKeyword_1() { return cOperationKeyword_1; }
 
-		//name=ID
+		//name=XID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 
-		//ID
-		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+		//XID
+		public RuleCall getNameXIDParserRuleCall_2_0() { return cNameXIDParserRuleCall_2_0; }
 
 		//"("
 		public Keyword getLeftParenthesisKeyword_3() { return cLeftParenthesisKeyword_3; }
@@ -738,24 +738,24 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Parameter");
 		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 RuleCall cNameXIDParserRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
 		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final CrossReference cTypeTypeCrossReference_2_0 = (CrossReference)cTypeAssignment_2.eContents().get(0);
 		private final RuleCall cTypeTypeFQNParserRuleCall_2_0_1 = (RuleCall)cTypeTypeCrossReference_2_0.eContents().get(1);
 		
 		//Parameter returns types::Parameter:
-		//	name=ID ":" type=[types::Type|FQN];
+		//	name=XID ":" type=[types::Type|FQN];
 		public ParserRule getRule() { return rule; }
 
-		//name=ID ":" type=[types::Type|FQN]
+		//name=XID ":" type=[types::Type|FQN]
 		public Group getGroup() { return cGroup; }
 
-		//name=ID
+		//name=XID
 		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
 
-		//ID
-		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+		//XID
+		public RuleCall getNameXIDParserRuleCall_0_0() { return cNameXIDParserRuleCall_0_0; }
 
 		//":"
 		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
@@ -770,36 +770,134 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public RuleCall getTypeTypeFQNParserRuleCall_2_0_1() { return cTypeTypeFQNParserRuleCall_2_0_1; }
 	}
 
+	public class XIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "XID");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final Keyword cNamespaceKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
+		private final Keyword cInterfaceKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
+		private final Keyword cInternalKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
+		private final Keyword cEventKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
+		private final Keyword cLocalKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
+		private final Keyword cInKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
+		private final Keyword cOutKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
+		private final Keyword cVarKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
+		private final Keyword cReadonlyKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
+		private final Keyword cExternalKeyword_10 = (Keyword)cAlternatives.eContents().get(10);
+		private final Keyword cOperationKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
+		private final Keyword cDefaultKeyword_12 = (Keyword)cAlternatives.eContents().get(12);
+		private final Keyword cElseKeyword_13 = (Keyword)cAlternatives.eContents().get(13);
+		private final Keyword cEntryKeyword_14 = (Keyword)cAlternatives.eContents().get(14);
+		private final Keyword cExitKeyword_15 = (Keyword)cAlternatives.eContents().get(15);
+		private final Keyword cAlwaysKeyword_16 = (Keyword)cAlternatives.eContents().get(16);
+		private final Keyword cOncycleKeyword_17 = (Keyword)cAlternatives.eContents().get(17);
+		private final Keyword cRaiseKeyword_18 = (Keyword)cAlternatives.eContents().get(18);
+		private final Keyword cValueofKeyword_19 = (Keyword)cAlternatives.eContents().get(19);
+		private final Keyword cActiveKeyword_20 = (Keyword)cAlternatives.eContents().get(20);
+		
+		/// * ---- entrypoint definition ---- * / //Entrypoint returns sgraph::Declaration:
+		////	{Entrypoint} 'entrypoint' name=XID;
+		/// * ---- exitpoint definition ---- * / //Exitpoint returns sgraph::Declaration:
+		////	{Exitpoint} 'exitpoint' name=XID;
+		/// * ---- Datatype rules ---- * / XID:
+		//	ID | "namespace" | "interface" | "internal" | "event" | "local" | "in" | "out" | "var" | "readonly" | "external" |
+		//	"operation" | "default" | "else" | "entry" | "exit" | "always" | "oncycle" | "raise" | "valueof" | "active";
+		public ParserRule getRule() { return rule; }
+
+		//ID | "namespace" | "interface" | "internal" | "event" | "local" | "in" | "out" | "var" | "readonly" | "external" |
+		//"operation" | "default" | "else" | "entry" | "exit" | "always" | "oncycle" | "raise" | "valueof" | "active"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+
+		//"namespace"
+		public Keyword getNamespaceKeyword_1() { return cNamespaceKeyword_1; }
+
+		//"interface"
+		public Keyword getInterfaceKeyword_2() { return cInterfaceKeyword_2; }
+
+		//"internal"
+		public Keyword getInternalKeyword_3() { return cInternalKeyword_3; }
+
+		//"event"
+		public Keyword getEventKeyword_4() { return cEventKeyword_4; }
+
+		//"local"
+		public Keyword getLocalKeyword_5() { return cLocalKeyword_5; }
+
+		//"in"
+		public Keyword getInKeyword_6() { return cInKeyword_6; }
+
+		//"out"
+		public Keyword getOutKeyword_7() { return cOutKeyword_7; }
+
+		//"var"
+		public Keyword getVarKeyword_8() { return cVarKeyword_8; }
+
+		//"readonly"
+		public Keyword getReadonlyKeyword_9() { return cReadonlyKeyword_9; }
+
+		//"external"
+		public Keyword getExternalKeyword_10() { return cExternalKeyword_10; }
+
+		//"operation"
+		public Keyword getOperationKeyword_11() { return cOperationKeyword_11; }
+
+		//"default"
+		public Keyword getDefaultKeyword_12() { return cDefaultKeyword_12; }
+
+		//"else"
+		public Keyword getElseKeyword_13() { return cElseKeyword_13; }
+
+		//"entry"
+		public Keyword getEntryKeyword_14() { return cEntryKeyword_14; }
+
+		//"exit"
+		public Keyword getExitKeyword_15() { return cExitKeyword_15; }
+
+		//"always"
+		public Keyword getAlwaysKeyword_16() { return cAlwaysKeyword_16; }
+
+		//"oncycle"
+		public Keyword getOncycleKeyword_17() { return cOncycleKeyword_17; }
+
+		//"raise"
+		public Keyword getRaiseKeyword_18() { return cRaiseKeyword_18; }
+
+		//"valueof"
+		public Keyword getValueofKeyword_19() { return cValueofKeyword_19; }
+
+		//"active"
+		public Keyword getActiveKeyword_20() { return cActiveKeyword_20; }
+	}
+
 	public class FQNElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FQN");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final RuleCall cXIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
 		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
 		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
-		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		private final RuleCall cXIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
 		
-		/// * ---- entrypoint definition ---- * / //Entrypoint returns sgraph::Declaration:
-		////	{Entrypoint} 'entrypoint' name=ID;
-		/// * ---- exitpoint definition ---- * / //Exitpoint returns sgraph::Declaration:
-		////	{Exitpoint} 'exitpoint' name=ID;
-		/// * ---- Datatype rules ---- * / FQN:
-		//	ID ("." ID)*;
+		//FQN:
+		//	XID ("." XID)*;
 		public ParserRule getRule() { return rule; }
 
-		//ID ("." ID)*
+		//XID ("." XID)*
 		public Group getGroup() { return cGroup; }
 
-		//ID
-		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+		//XID
+		public RuleCall getXIDParserRuleCall_0() { return cXIDParserRuleCall_0; }
 
-		//("." ID)*
+		//("." XID)*
 		public Group getGroup_1() { return cGroup_1; }
 
 		//"."
 		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
 
-		//ID
-		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
+		//XID
+		public RuleCall getXIDParserRuleCall_1_1() { return cXIDParserRuleCall_1_1; }
 	}
 
 	public class ReactionElements extends AbstractParserRuleElementFinder {
@@ -870,7 +968,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cTransitionReactionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Assignment cTriggerAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cTriggerReactionTriggerParserRuleCall_1_0 = (RuleCall)cTriggerAssignment_1.eContents().get(0);
+		private final RuleCall cTriggerStextTriggerParserRuleCall_1_0 = (RuleCall)cTriggerAssignment_1.eContents().get(0);
 		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
 		private final Keyword cSolidusKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
 		private final Assignment cEffectAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
@@ -878,20 +976,20 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		
 		//// ('#' properties=ReactionProperties)?;
 		//TransitionReaction:
-		//	{TransitionReaction} trigger=ReactionTrigger? ("/" effect=ReactionEffect)?;
+		//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
 		public ParserRule getRule() { return rule; }
 
-		//{TransitionReaction} trigger=ReactionTrigger? ("/" effect=ReactionEffect)?
+		//{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?
 		public Group getGroup() { return cGroup; }
 
 		//{TransitionReaction}
 		public Action getTransitionReactionAction_0() { return cTransitionReactionAction_0; }
 
-		//trigger=ReactionTrigger?
+		//trigger=StextTrigger?
 		public Assignment getTriggerAssignment_1() { return cTriggerAssignment_1; }
 
-		//ReactionTrigger
-		public RuleCall getTriggerReactionTriggerParserRuleCall_1_0() { return cTriggerReactionTriggerParserRuleCall_1_0; }
+		//StextTrigger
+		public RuleCall getTriggerStextTriggerParserRuleCall_1_0() { return cTriggerStextTriggerParserRuleCall_1_0; }
 
 		//("/" effect=ReactionEffect)?
 		public Group getGroup_2() { return cGroup_2; }
@@ -906,6 +1004,26 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public RuleCall getEffectReactionEffectParserRuleCall_2_1_0() { return cEffectReactionEffectParserRuleCall_2_1_0; }
 	}
 
+	public class StextTriggerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StextTrigger");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cReactionTriggerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDefaultTriggerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//StextTrigger returns sgraph::Trigger:
+		//	ReactionTrigger | DefaultTrigger;
+		public ParserRule getRule() { return rule; }
+
+		//ReactionTrigger | DefaultTrigger
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ReactionTrigger
+		public RuleCall getReactionTriggerParserRuleCall_0() { return cReactionTriggerParserRuleCall_0; }
+
+		//DefaultTrigger
+		public RuleCall getDefaultTriggerParserRuleCall_1() { return cDefaultTriggerParserRuleCall_1; }
+	}
+
 	public class ReactionTriggerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReactionTrigger");
 		private final Group cGroup = (Group)rule.eContents().get(1);
@@ -997,6 +1115,34 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public Keyword getRightSquareBracketKeyword_1_1_2() { return cRightSquareBracketKeyword_1_1_2; }
 	}
 
+	public class DefaultTriggerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DefaultTrigger");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cDefaultTriggerAction_0 = (Action)cGroup.eContents().get(0);
+		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
+		private final Keyword cDefaultKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
+		private final Keyword cElseKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
+		
+		//DefaultTrigger returns sgraph::Trigger:
+		//	{DefaultTrigger} ("default" | "else");
+		public ParserRule getRule() { return rule; }
+
+		//{DefaultTrigger} ("default" | "else")
+		public Group getGroup() { return cGroup; }
+
+		//{DefaultTrigger}
+		public Action getDefaultTriggerAction_0() { return cDefaultTriggerAction_0; }
+
+		//"default" | "else"
+		public Alternatives getAlternatives_1() { return cAlternatives_1; }
+
+		//"default"
+		public Keyword getDefaultKeyword_1_0() { return cDefaultKeyword_1_0; }
+
+		//"else"
+		public Keyword getElseKeyword_1_1() { return cElseKeyword_1_1; }
+	}
+
 	public class ReactionEffectElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReactionEffect");
 		private final Group cGroup = (Group)rule.eContents().get(1);
@@ -1147,16 +1293,15 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cEntryEventParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cExitEventParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
-		private final RuleCall cOnCycleEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
-		private final RuleCall cAlwaysEventParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
-		private final RuleCall cDefaultEventParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cAlwaysEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
 		////TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
+		//// | DefaultEvent | OnCycleEvent ;
 		//BuiltinEventSpec:
-		//	EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent;
+		//	EntryEvent | ExitEvent | AlwaysEvent;
 		public ParserRule getRule() { return rule; }
 
-		//EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent
+		//EntryEvent | ExitEvent | AlwaysEvent
 		public Alternatives getAlternatives() { return cAlternatives; }
 
 		//EntryEvent
@@ -1165,14 +1310,8 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//ExitEvent
 		public RuleCall getExitEventParserRuleCall_1() { return cExitEventParserRuleCall_1; }
 
-		//OnCycleEvent
-		public RuleCall getOnCycleEventParserRuleCall_2() { return cOnCycleEventParserRuleCall_2; }
-
 		//AlwaysEvent
-		public RuleCall getAlwaysEventParserRuleCall_3() { return cAlwaysEventParserRuleCall_3; }
-
-		//DefaultEvent
-		public RuleCall getDefaultEventParserRuleCall_4() { return cDefaultEventParserRuleCall_4; }
+		public RuleCall getAlwaysEventParserRuleCall_2() { return cAlwaysEventParserRuleCall_2; }
 	}
 
 	public class EntryEventElements extends AbstractParserRuleElementFinder {
@@ -1215,72 +1354,34 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public Keyword getExitKeyword_1() { return cExitKeyword_1; }
 	}
 
-	public class OnCycleEventElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "OnCycleEvent");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Action cOnCycleEventAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cOncycleKeyword_1 = (Keyword)cGroup.eContents().get(1);
-		
-		//OnCycleEvent:
-		//	{OnCycleEvent} "oncycle";
-		public ParserRule getRule() { return rule; }
-
-		//{OnCycleEvent} "oncycle"
-		public Group getGroup() { return cGroup; }
-
-		//{OnCycleEvent}
-		public Action getOnCycleEventAction_0() { return cOnCycleEventAction_0; }
-
-		//"oncycle"
-		public Keyword getOncycleKeyword_1() { return cOncycleKeyword_1; }
-	}
-
 	public class AlwaysEventElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AlwaysEvent");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cAlwaysEventAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cAlwaysKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
+		private final Keyword cAlwaysKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
+		private final Keyword cOncycleKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
 		
+		////OnCycleEvent:
+		////	{OnCycleEvent} 'oncycle'; 
 		//AlwaysEvent:
-		//	{AlwaysEvent} "always";
+		//	{AlwaysEvent} ("always" | "oncycle");
 		public ParserRule getRule() { return rule; }
 
-		//{AlwaysEvent} "always"
+		//{AlwaysEvent} ("always" | "oncycle")
 		public Group getGroup() { return cGroup; }
 
 		//{AlwaysEvent}
 		public Action getAlwaysEventAction_0() { return cAlwaysEventAction_0; }
 
-		//"always"
-		public Keyword getAlwaysKeyword_1() { return cAlwaysKeyword_1; }
-	}
-
-	public class DefaultEventElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DefaultEvent");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Action cDefaultEventAction_0 = (Action)cGroup.eContents().get(0);
-		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
-		private final Keyword cDefaultKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
-		private final Keyword cElseKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
-		
-		//DefaultEvent:
-		//	{DefaultEvent} ("default" | "else");
-		public ParserRule getRule() { return rule; }
-
-		//{DefaultEvent} ("default" | "else")
-		public Group getGroup() { return cGroup; }
-
-		//{DefaultEvent}
-		public Action getDefaultEventAction_0() { return cDefaultEventAction_0; }
-
-		//"default" | "else"
+		//"always" | "oncycle"
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 
-		//"default"
-		public Keyword getDefaultKeyword_1_0() { return cDefaultKeyword_1_0; }
+		//"always"
+		public Keyword getAlwaysKeyword_1_0() { return cAlwaysKeyword_1_0; }
 
-		//"else"
-		public Keyword getElseKeyword_1_1() { return cElseKeyword_1_1; }
+		//"oncycle"
+		public Keyword getOncycleKeyword_1_1() { return cOncycleKeyword_1_1; }
 	}
 
 	public class EventRaisingExpressionElements extends AbstractParserRuleElementFinder {
@@ -1295,6 +1396,9 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Assignment cValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
 		private final RuleCall cValueExpressionParserRuleCall_3_1_0 = (RuleCall)cValueAssignment_3_1.eContents().get(0);
 		
+		////DefaultEvent:
+		////	{DefaultEvent} ('default' | 'else')
+		////;
 		//// ****************
 		//// Expression Grammar
 		//// ****************
@@ -2780,11 +2884,14 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	private OperationFeatureElements pOperationFeature;
 	private OperationDefinitionElements pOperationDefinition;
 	private ParameterElements pParameter;
+	private XIDElements pXID;
 	private FQNElements pFQN;
 	private ReactionElements pReaction;
 	private LocalReactionElements pLocalReaction;
 	private TransitionReactionElements pTransitionReaction;
+	private StextTriggerElements pStextTrigger;
 	private ReactionTriggerElements pReactionTrigger;
+	private DefaultTriggerElements pDefaultTrigger;
 	private ReactionEffectElements pReactionEffect;
 	private EventSpecElements pEventSpec;
 	private RegularEventSpecElements pRegularEventSpec;
@@ -2793,9 +2900,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	private BuiltinEventSpecElements pBuiltinEventSpec;
 	private EntryEventElements pEntryEvent;
 	private ExitEventElements pExitEvent;
-	private OnCycleEventElements pOnCycleEvent;
 	private AlwaysEventElements pAlwaysEvent;
-	private DefaultEventElements pDefaultEvent;
 	private EventRaisingExpressionElements pEventRaisingExpression;
 	private StatementExpressionElements pStatementExpression;
 	private ExpressionElements pExpression;
@@ -3014,7 +3119,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//InterfaceScope:
-	//	{InterfaceScope} "interface" name=ID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
+	//	{InterfaceScope} "interface" name=XID? ":" declarations+=(EventDeclarartion //		| Entrypoint 
 	//	//		| Exitpoint
 	//	| VariableDeclaration | OperationDeclaration)*;
 	public InterfaceScopeElements getInterfaceScopeAccess() {
@@ -3071,7 +3176,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 
 	//// (derivation=EventDerivation)?;
 	//EventDefinition:
-	//	direction=Direction? "event" name=ID (":" type=[types::Type|FQN])?;
+	//	direction=Direction? "event" name=XID (":" type=[types::Type|FQN])?;
 	public EventDefinitionElements getEventDefinitionAccess() {
 		return (pEventDefinition != null) ? pEventDefinition : (pEventDefinition = new EventDefinitionElements());
 	}
@@ -3113,7 +3218,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//VariableDefinition:
-	//	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=ID ":" type=[types::Type|FQN] ("="
+	//	{VariableDefinition} "var" (readonly?="readonly"? & external?="external"?) name=XID ":" type=[types::Type|FQN] ("="
 	//	initialValue=Expression)?;
 	public VariableDefinitionElements getVariableDefinitionAccess() {
 		return (pVariableDefinition != null) ? pVariableDefinition : (pVariableDefinition = new VariableDefinitionElements());
@@ -3144,7 +3249,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//OperationDefinition:
-	//	{OperationDefinition} "operation" name=ID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
+	//	{OperationDefinition} "operation" name=XID "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" (":"
 	//	type=[types::Type|FQN])?;
 	public OperationDefinitionElements getOperationDefinitionAccess() {
 		return (pOperationDefinition != null) ? pOperationDefinition : (pOperationDefinition = new OperationDefinitionElements());
@@ -3155,7 +3260,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//Parameter returns types::Parameter:
-	//	name=ID ":" type=[types::Type|FQN];
+	//	name=XID ":" type=[types::Type|FQN];
 	public ParameterElements getParameterAccess() {
 		return (pParameter != null) ? pParameter : (pParameter = new ParameterElements());
 	}
@@ -3165,11 +3270,22 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	/// * ---- entrypoint definition ---- * / //Entrypoint returns sgraph::Declaration:
-	////	{Entrypoint} 'entrypoint' name=ID;
+	////	{Entrypoint} 'entrypoint' name=XID;
 	/// * ---- exitpoint definition ---- * / //Exitpoint returns sgraph::Declaration:
-	////	{Exitpoint} 'exitpoint' name=ID;
-	/// * ---- Datatype rules ---- * / FQN:
-	//	ID ("." ID)*;
+	////	{Exitpoint} 'exitpoint' name=XID;
+	/// * ---- Datatype rules ---- * / XID:
+	//	ID | "namespace" | "interface" | "internal" | "event" | "local" | "in" | "out" | "var" | "readonly" | "external" |
+	//	"operation" | "default" | "else" | "entry" | "exit" | "always" | "oncycle" | "raise" | "valueof" | "active";
+	public XIDElements getXIDAccess() {
+		return (pXID != null) ? pXID : (pXID = new XIDElements());
+	}
+	
+	public ParserRule getXIDRule() {
+		return getXIDAccess().getRule();
+	}
+
+	//FQN:
+	//	XID ("." XID)*;
 	public FQNElements getFQNAccess() {
 		return (pFQN != null) ? pFQN : (pFQN = new FQNElements());
 	}
@@ -3203,7 +3319,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 
 	//// ('#' properties=ReactionProperties)?;
 	//TransitionReaction:
-	//	{TransitionReaction} trigger=ReactionTrigger? ("/" effect=ReactionEffect)?;
+	//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
 	public TransitionReactionElements getTransitionReactionAccess() {
 		return (pTransitionReaction != null) ? pTransitionReaction : (pTransitionReaction = new TransitionReactionElements());
 	}
@@ -3212,6 +3328,16 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getTransitionReactionAccess().getRule();
 	}
 
+	//StextTrigger returns sgraph::Trigger:
+	//	ReactionTrigger | DefaultTrigger;
+	public StextTriggerElements getStextTriggerAccess() {
+		return (pStextTrigger != null) ? pStextTrigger : (pStextTrigger = new StextTriggerElements());
+	}
+	
+	public ParserRule getStextTriggerRule() {
+		return getStextTriggerAccess().getRule();
+	}
+
 	//ReactionTrigger returns sgraph::Trigger:
 	//	{ReactionTrigger} (triggers+=EventSpec ("," triggers+=EventSpec)* ("[" guardExpression=Expression "]")? | "["
 	//	guardExpression=Expression "]");
@@ -3223,6 +3349,16 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getReactionTriggerAccess().getRule();
 	}
 
+	//DefaultTrigger returns sgraph::Trigger:
+	//	{DefaultTrigger} ("default" | "else");
+	public DefaultTriggerElements getDefaultTriggerAccess() {
+		return (pDefaultTrigger != null) ? pDefaultTrigger : (pDefaultTrigger = new DefaultTriggerElements());
+	}
+	
+	public ParserRule getDefaultTriggerRule() {
+		return getDefaultTriggerAccess().getRule();
+	}
+
 	//// (';')?;
 	//ReactionEffect returns sgraph::Effect:
 	//	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (";" actions+=(Expression | EventRaisingExpression))*;
@@ -3287,8 +3423,9 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	////TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
+	//// | DefaultEvent | OnCycleEvent ;
 	//BuiltinEventSpec:
-	//	EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent;
+	//	EntryEvent | ExitEvent | AlwaysEvent;
 	public BuiltinEventSpecElements getBuiltinEventSpecAccess() {
 		return (pBuiltinEventSpec != null) ? pBuiltinEventSpec : (pBuiltinEventSpec = new BuiltinEventSpecElements());
 	}
@@ -3317,18 +3454,10 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getExitEventAccess().getRule();
 	}
 
-	//OnCycleEvent:
-	//	{OnCycleEvent} "oncycle";
-	public OnCycleEventElements getOnCycleEventAccess() {
-		return (pOnCycleEvent != null) ? pOnCycleEvent : (pOnCycleEvent = new OnCycleEventElements());
-	}
-	
-	public ParserRule getOnCycleEventRule() {
-		return getOnCycleEventAccess().getRule();
-	}
-
+	////OnCycleEvent:
+	////	{OnCycleEvent} 'oncycle'; 
 	//AlwaysEvent:
-	//	{AlwaysEvent} "always";
+	//	{AlwaysEvent} ("always" | "oncycle");
 	public AlwaysEventElements getAlwaysEventAccess() {
 		return (pAlwaysEvent != null) ? pAlwaysEvent : (pAlwaysEvent = new AlwaysEventElements());
 	}
@@ -3337,16 +3466,9 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getAlwaysEventAccess().getRule();
 	}
 
-	//DefaultEvent:
-	//	{DefaultEvent} ("default" | "else");
-	public DefaultEventElements getDefaultEventAccess() {
-		return (pDefaultEvent != null) ? pDefaultEvent : (pDefaultEvent = new DefaultEventElements());
-	}
-	
-	public ParserRule getDefaultEventRule() {
-		return getDefaultEventAccess().getRule();
-	}
-
+	////DefaultEvent:
+	////	{DefaultEvent} ('default' | 'else')
+	////;
 	//// ****************
 	//// Expression Grammar
 	//// ****************

+ 5 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/DefaultEvent.java

@@ -2,17 +2,18 @@
  */
 package org.yakindu.sct.model.stext.stext;
 
+import org.yakindu.sct.model.sgraph.Trigger;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Default Event</b></em>'.
+ * A representation of the model object '<em><b>Default Trigger</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see org.yakindu.sct.model.stext.stext.StextPackage#getDefaultEvent()
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getDefaultTrigger()
  * @model
  * @generated
  */
-public interface DefaultEvent extends BuiltinEventSpec
+public interface DefaultTrigger extends Trigger
 {
-} // DefaultEvent
+} // DefaultTrigger

+ 0 - 18
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/OnCycleEvent.java

@@ -1,18 +0,0 @@
-/**
- */
-package org.yakindu.sct.model.stext.stext;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>On Cycle Event</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see org.yakindu.sct.model.stext.stext.StextPackage#getOnCycleEvent()
- * @model
- * @generated
- */
-public interface OnCycleEvent extends BuiltinEventSpec
-{
-} // OnCycleEvent

+ 9 - 18
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextFactory.java

@@ -220,15 +220,6 @@ public interface StextFactory extends EFactory
    */
   ExitEvent createExitEvent();
 
-  /**
-   * Returns a new object of class '<em>On Cycle Event</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>On Cycle Event</em>'.
-   * @generated
-   */
-  OnCycleEvent createOnCycleEvent();
-
   /**
    * Returns a new object of class '<em>Always Event</em>'.
    * <!-- begin-user-doc -->
@@ -238,15 +229,6 @@ public interface StextFactory extends EFactory
    */
   AlwaysEvent createAlwaysEvent();
 
-  /**
-   * Returns a new object of class '<em>Default Event</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>Default Event</em>'.
-   * @generated
-   */
-  DefaultEvent createDefaultEvent();
-
   /**
    * Returns a new object of class '<em>Expression</em>'.
    * <!-- begin-user-doc -->
@@ -328,6 +310,15 @@ public interface StextFactory extends EFactory
    */
   ReactionTrigger createReactionTrigger();
 
+  /**
+   * Returns a new object of class '<em>Default Trigger</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Default Trigger</em>'.
+   * @generated
+   */
+  DefaultTrigger createDefaultTrigger();
+
   /**
    * Returns a new object of class '<em>Reaction Effect</em>'.
    * <!-- begin-user-doc -->

+ 79 - 118
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java

@@ -846,25 +846,6 @@ public interface StextPackage extends EPackage
    */
   int EXIT_EVENT_FEATURE_COUNT = BUILTIN_EVENT_SPEC_FEATURE_COUNT + 0;
 
-  /**
-   * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.OnCycleEventImpl <em>On Cycle Event</em>}' class.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see org.yakindu.sct.model.stext.stext.impl.OnCycleEventImpl
-   * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getOnCycleEvent()
-   * @generated
-   */
-  int ON_CYCLE_EVENT = 22;
-
-  /**
-   * The number of structural features of the '<em>On Cycle Event</em>' class.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   * @ordered
-   */
-  int ON_CYCLE_EVENT_FEATURE_COUNT = BUILTIN_EVENT_SPEC_FEATURE_COUNT + 0;
-
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.AlwaysEventImpl <em>Always Event</em>}' class.
    * <!-- begin-user-doc -->
@@ -873,7 +854,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAlwaysEvent()
    * @generated
    */
-  int ALWAYS_EVENT = 23;
+  int ALWAYS_EVENT = 22;
 
   /**
    * The number of structural features of the '<em>Always Event</em>' class.
@@ -884,25 +865,6 @@ public interface StextPackage extends EPackage
    */
   int ALWAYS_EVENT_FEATURE_COUNT = BUILTIN_EVENT_SPEC_FEATURE_COUNT + 0;
 
-  /**
-   * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.DefaultEventImpl <em>Default Event</em>}' class.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see org.yakindu.sct.model.stext.stext.impl.DefaultEventImpl
-   * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDefaultEvent()
-   * @generated
-   */
-  int DEFAULT_EVENT = 24;
-
-  /**
-   * The number of structural features of the '<em>Default Event</em>' class.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   * @ordered
-   */
-  int DEFAULT_EVENT_FEATURE_COUNT = BUILTIN_EVENT_SPEC_FEATURE_COUNT + 0;
-
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.ExpressionImpl <em>Expression</em>}' class.
    * <!-- begin-user-doc -->
@@ -911,7 +873,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getExpression()
    * @generated
    */
-  int EXPRESSION = 25;
+  int EXPRESSION = 23;
 
   /**
    * The number of structural features of the '<em>Expression</em>' class.
@@ -930,7 +892,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLiteral()
    * @generated
    */
-  int LITERAL = 26;
+  int LITERAL = 24;
 
   /**
    * The number of structural features of the '<em>Literal</em>' class.
@@ -949,7 +911,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBoolLiteral()
    * @generated
    */
-  int BOOL_LITERAL = 27;
+  int BOOL_LITERAL = 25;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -977,7 +939,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getIntLiteral()
    * @generated
    */
-  int INT_LITERAL = 28;
+  int INT_LITERAL = 26;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1005,7 +967,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getRealLiteral()
    * @generated
    */
-  int REAL_LITERAL = 29;
+  int REAL_LITERAL = 27;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1033,7 +995,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getHexLiteral()
    * @generated
    */
-  int HEX_LITERAL = 30;
+  int HEX_LITERAL = 28;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1061,7 +1023,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getStringLiteral()
    * @generated
    */
-  int STRING_LITERAL = 31;
+  int STRING_LITERAL = 29;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1089,7 +1051,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getSimpleScope()
    * @generated
    */
-  int SIMPLE_SCOPE = 32;
+  int SIMPLE_SCOPE = 30;
 
   /**
    * The feature id for the '<em><b>Declarations</b></em>' containment reference list.
@@ -1135,7 +1097,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getReactionTrigger()
    * @generated
    */
-  int REACTION_TRIGGER = 33;
+  int REACTION_TRIGGER = 31;
 
   /**
    * The feature id for the '<em><b>Triggers</b></em>' containment reference list.
@@ -1164,6 +1126,25 @@ public interface StextPackage extends EPackage
    */
   int REACTION_TRIGGER_FEATURE_COUNT = SGraphPackage.TRIGGER_FEATURE_COUNT + 2;
 
+  /**
+   * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.DefaultTriggerImpl <em>Default Trigger</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.yakindu.sct.model.stext.stext.impl.DefaultTriggerImpl
+   * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDefaultTrigger()
+   * @generated
+   */
+  int DEFAULT_TRIGGER = 32;
+
+  /**
+   * The number of structural features of the '<em>Default Trigger</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEFAULT_TRIGGER_FEATURE_COUNT = SGraphPackage.TRIGGER_FEATURE_COUNT + 0;
+
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.ReactionEffectImpl <em>Reaction Effect</em>}' class.
    * <!-- begin-user-doc -->
@@ -1172,7 +1153,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getReactionEffect()
    * @generated
    */
-  int REACTION_EFFECT = 34;
+  int REACTION_EFFECT = 33;
 
   /**
    * The feature id for the '<em><b>Actions</b></em>' containment reference list.
@@ -1200,7 +1181,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEventRaisingExpression()
    * @generated
    */
-  int EVENT_RAISING_EXPRESSION = 35;
+  int EVENT_RAISING_EXPRESSION = 34;
 
   /**
    * The feature id for the '<em><b>Event</b></em>' containment reference.
@@ -1237,7 +1218,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAssignmentExpression()
    * @generated
    */
-  int ASSIGNMENT_EXPRESSION = 36;
+  int ASSIGNMENT_EXPRESSION = 35;
 
   /**
    * The feature id for the '<em><b>Var Ref</b></em>' containment reference.
@@ -1283,7 +1264,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getConditionalExpression()
    * @generated
    */
-  int CONDITIONAL_EXPRESSION = 37;
+  int CONDITIONAL_EXPRESSION = 36;
 
   /**
    * The feature id for the '<em><b>Condition</b></em>' containment reference.
@@ -1329,7 +1310,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalOrExpression()
    * @generated
    */
-  int LOGICAL_OR_EXPRESSION = 38;
+  int LOGICAL_OR_EXPRESSION = 37;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1366,7 +1347,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalAndExpression()
    * @generated
    */
-  int LOGICAL_AND_EXPRESSION = 39;
+  int LOGICAL_AND_EXPRESSION = 38;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1403,7 +1384,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalNotExpression()
    * @generated
    */
-  int LOGICAL_NOT_EXPRESSION = 40;
+  int LOGICAL_NOT_EXPRESSION = 39;
 
   /**
    * The feature id for the '<em><b>Operand</b></em>' containment reference.
@@ -1431,7 +1412,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseXorExpression()
    * @generated
    */
-  int BITWISE_XOR_EXPRESSION = 41;
+  int BITWISE_XOR_EXPRESSION = 40;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1468,7 +1449,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseOrExpression()
    * @generated
    */
-  int BITWISE_OR_EXPRESSION = 42;
+  int BITWISE_OR_EXPRESSION = 41;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1505,7 +1486,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseAndExpression()
    * @generated
    */
-  int BITWISE_AND_EXPRESSION = 43;
+  int BITWISE_AND_EXPRESSION = 42;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1542,7 +1523,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalRelationExpression()
    * @generated
    */
-  int LOGICAL_RELATION_EXPRESSION = 44;
+  int LOGICAL_RELATION_EXPRESSION = 43;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1588,7 +1569,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getShiftExpression()
    * @generated
    */
-  int SHIFT_EXPRESSION = 45;
+  int SHIFT_EXPRESSION = 44;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1634,7 +1615,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalAddSubtractExpression()
    * @generated
    */
-  int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 46;
+  int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 45;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1680,7 +1661,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalMultiplyDivideExpression()
    * @generated
    */
-  int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 47;
+  int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 46;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1726,7 +1707,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalUnaryExpression()
    * @generated
    */
-  int NUMERICAL_UNARY_EXPRESSION = 48;
+  int NUMERICAL_UNARY_EXPRESSION = 47;
 
   /**
    * The feature id for the '<em><b>Operator</b></em>' attribute.
@@ -1763,7 +1744,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getPrimitiveValueExpression()
    * @generated
    */
-  int PRIMITIVE_VALUE_EXPRESSION = 49;
+  int PRIMITIVE_VALUE_EXPRESSION = 48;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' containment reference.
@@ -1791,7 +1772,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getFeatureCall()
    * @generated
    */
-  int FEATURE_CALL = 50;
+  int FEATURE_CALL = 49;
 
   /**
    * The feature id for the '<em><b>Owner</b></em>' containment reference.
@@ -1846,7 +1827,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getElementReferenceExpression()
    * @generated
    */
-  int ELEMENT_REFERENCE_EXPRESSION = 51;
+  int ELEMENT_REFERENCE_EXPRESSION = 50;
 
   /**
    * The feature id for the '<em><b>Reference</b></em>' reference.
@@ -1892,7 +1873,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEventValueReferenceExpression()
    * @generated
    */
-  int EVENT_VALUE_REFERENCE_EXPRESSION = 52;
+  int EVENT_VALUE_REFERENCE_EXPRESSION = 51;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' containment reference.
@@ -1920,7 +1901,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getActiveStateReferenceExpression()
    * @generated
    */
-  int ACTIVE_STATE_REFERENCE_EXPRESSION = 53;
+  int ACTIVE_STATE_REFERENCE_EXPRESSION = 52;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' reference.
@@ -1948,7 +1929,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getParenthesizedExpression()
    * @generated
    */
-  int PARENTHESIZED_EXPRESSION = 54;
+  int PARENTHESIZED_EXPRESSION = 53;
 
   /**
    * The feature id for the '<em><b>Expression</b></em>' containment reference.
@@ -1976,7 +1957,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDirection()
    * @generated
    */
-  int DIRECTION = 55;
+  int DIRECTION = 54;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.TimeEventType <em>Time Event Type</em>}' enum.
@@ -1986,7 +1967,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getTimeEventType()
    * @generated
    */
-  int TIME_EVENT_TYPE = 56;
+  int TIME_EVENT_TYPE = 55;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.AssignmentOperator <em>Assignment Operator</em>}' enum.
@@ -1996,7 +1977,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAssignmentOperator()
    * @generated
    */
-  int ASSIGNMENT_OPERATOR = 57;
+  int ASSIGNMENT_OPERATOR = 56;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.ShiftOperator <em>Shift Operator</em>}' enum.
@@ -2006,7 +1987,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getShiftOperator()
    * @generated
    */
-  int SHIFT_OPERATOR = 58;
+  int SHIFT_OPERATOR = 57;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.AdditiveOperator <em>Additive Operator</em>}' enum.
@@ -2016,7 +1997,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAdditiveOperator()
    * @generated
    */
-  int ADDITIVE_OPERATOR = 59;
+  int ADDITIVE_OPERATOR = 58;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.MultiplicativeOperator <em>Multiplicative Operator</em>}' enum.
@@ -2026,7 +2007,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getMultiplicativeOperator()
    * @generated
    */
-  int MULTIPLICATIVE_OPERATOR = 60;
+  int MULTIPLICATIVE_OPERATOR = 59;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.UnaryOperator <em>Unary Operator</em>}' enum.
@@ -2036,7 +2017,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getUnaryOperator()
    * @generated
    */
-  int UNARY_OPERATOR = 61;
+  int UNARY_OPERATOR = 60;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.RelationalOperator <em>Relational Operator</em>}' enum.
@@ -2046,7 +2027,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getRelationalOperator()
    * @generated
    */
-  int RELATIONAL_OPERATOR = 62;
+  int RELATIONAL_OPERATOR = 61;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.TimeUnit <em>Time Unit</em>}' enum.
@@ -2056,7 +2037,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getTimeUnit()
    * @generated
    */
-  int TIME_UNIT = 63;
+  int TIME_UNIT = 62;
 
 
   /**
@@ -2433,16 +2414,6 @@ public interface StextPackage extends EPackage
    */
   EClass getExitEvent();
 
-  /**
-   * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.OnCycleEvent <em>On Cycle Event</em>}'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return the meta object for class '<em>On Cycle Event</em>'.
-   * @see org.yakindu.sct.model.stext.stext.OnCycleEvent
-   * @generated
-   */
-  EClass getOnCycleEvent();
-
   /**
    * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.AlwaysEvent <em>Always Event</em>}'.
    * <!-- begin-user-doc -->
@@ -2453,16 +2424,6 @@ public interface StextPackage extends EPackage
    */
   EClass getAlwaysEvent();
 
-  /**
-   * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.DefaultEvent <em>Default Event</em>}'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return the meta object for class '<em>Default Event</em>'.
-   * @see org.yakindu.sct.model.stext.stext.DefaultEvent
-   * @generated
-   */
-  EClass getDefaultEvent();
-
   /**
    * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.Expression <em>Expression</em>}'.
    * <!-- begin-user-doc -->
@@ -2630,6 +2591,16 @@ public interface StextPackage extends EPackage
    */
   EReference getReactionTrigger_GuardExpression();
 
+  /**
+   * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.DefaultTrigger <em>Default Trigger</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Default Trigger</em>'.
+   * @see org.yakindu.sct.model.stext.stext.DefaultTrigger
+   * @generated
+   */
+  EClass getDefaultTrigger();
+
   /**
    * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.ReactionEffect <em>Reaction Effect</em>}'.
    * <!-- begin-user-doc -->
@@ -3780,16 +3751,6 @@ public interface StextPackage extends EPackage
      */
     EClass EXIT_EVENT = eINSTANCE.getExitEvent();
 
-    /**
-     * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.OnCycleEventImpl <em>On Cycle Event</em>}' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see org.yakindu.sct.model.stext.stext.impl.OnCycleEventImpl
-     * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getOnCycleEvent()
-     * @generated
-     */
-    EClass ON_CYCLE_EVENT = eINSTANCE.getOnCycleEvent();
-
     /**
      * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.AlwaysEventImpl <em>Always Event</em>}' class.
      * <!-- begin-user-doc -->
@@ -3800,16 +3761,6 @@ public interface StextPackage extends EPackage
      */
     EClass ALWAYS_EVENT = eINSTANCE.getAlwaysEvent();
 
-    /**
-     * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.DefaultEventImpl <em>Default Event</em>}' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see org.yakindu.sct.model.stext.stext.impl.DefaultEventImpl
-     * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDefaultEvent()
-     * @generated
-     */
-    EClass DEFAULT_EVENT = eINSTANCE.getDefaultEvent();
-
     /**
      * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.ExpressionImpl <em>Expression</em>}' class.
      * <!-- begin-user-doc -->
@@ -3956,6 +3907,16 @@ public interface StextPackage extends EPackage
      */
     EReference REACTION_TRIGGER__GUARD_EXPRESSION = eINSTANCE.getReactionTrigger_GuardExpression();
 
+    /**
+     * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.DefaultTriggerImpl <em>Default Trigger</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.yakindu.sct.model.stext.stext.impl.DefaultTriggerImpl
+     * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDefaultTrigger()
+     * @generated
+     */
+    EClass DEFAULT_TRIGGER = eINSTANCE.getDefaultTrigger();
+
     /**
      * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.ReactionEffectImpl <em>Reaction Effect</em>}' class.
      * <!-- begin-user-doc -->

+ 8 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/DefaultEventImpl.java

@@ -4,26 +4,28 @@ package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
 
-import org.yakindu.sct.model.stext.stext.DefaultEvent;
+import org.yakindu.sct.model.sgraph.impl.TriggerImpl;
+
+import org.yakindu.sct.model.stext.stext.DefaultTrigger;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Default Event</b></em>'.
+ * An implementation of the model object '<em><b>Default Trigger</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * </p>
  *
  * @generated
  */
-public class DefaultEventImpl extends BuiltinEventSpecImpl implements DefaultEvent
+public class DefaultTriggerImpl extends TriggerImpl implements DefaultTrigger
 {
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    */
-  protected DefaultEventImpl()
+  protected DefaultTriggerImpl()
   {
     super();
   }
@@ -36,7 +38,7 @@ public class DefaultEventImpl extends BuiltinEventSpecImpl implements DefaultEve
   @Override
   protected EClass eStaticClass()
   {
-    return StextPackage.Literals.DEFAULT_EVENT;
+    return StextPackage.Literals.DEFAULT_TRIGGER;
   }
 
-} //DefaultEventImpl
+} //DefaultTriggerImpl

+ 58 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java

@@ -83,6 +83,33 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
    * @generated
    */
   public Trigger getTrigger()
+  {
+    if (trigger != null && trigger.eIsProxy())
+    {
+      InternalEObject oldTrigger = (InternalEObject)trigger;
+      trigger = (Trigger)eResolveProxy(oldTrigger);
+      if (trigger != oldTrigger)
+      {
+        InternalEObject newTrigger = (InternalEObject)trigger;
+        NotificationChain msgs = oldTrigger.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.LOCAL_REACTION__TRIGGER, null, null);
+        if (newTrigger.eInternalContainer() == null)
+        {
+          msgs = newTrigger.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.LOCAL_REACTION__TRIGGER, null, msgs);
+        }
+        if (msgs != null) msgs.dispatch();
+        if (eNotificationRequired())
+          eNotify(new ENotificationImpl(this, Notification.RESOLVE, StextPackage.LOCAL_REACTION__TRIGGER, oldTrigger, trigger));
+      }
+    }
+    return trigger;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Trigger basicGetTrigger()
   {
     return trigger;
   }
@@ -131,6 +158,33 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
    * @generated
    */
   public Effect getEffect()
+  {
+    if (effect != null && effect.eIsProxy())
+    {
+      InternalEObject oldEffect = (InternalEObject)effect;
+      effect = (Effect)eResolveProxy(oldEffect);
+      if (effect != oldEffect)
+      {
+        InternalEObject newEffect = (InternalEObject)effect;
+        NotificationChain msgs = oldEffect.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.LOCAL_REACTION__EFFECT, null, null);
+        if (newEffect.eInternalContainer() == null)
+        {
+          msgs = newEffect.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.LOCAL_REACTION__EFFECT, null, msgs);
+        }
+        if (msgs != null) msgs.dispatch();
+        if (eNotificationRequired())
+          eNotify(new ENotificationImpl(this, Notification.RESOLVE, StextPackage.LOCAL_REACTION__EFFECT, oldEffect, effect));
+      }
+    }
+    return effect;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Effect basicGetEffect()
   {
     return effect;
   }
@@ -202,9 +256,11 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
     switch (featureID)
     {
       case StextPackage.LOCAL_REACTION__TRIGGER:
-        return getTrigger();
+        if (resolve) return getTrigger();
+        return basicGetTrigger();
       case StextPackage.LOCAL_REACTION__EFFECT:
-        return getEffect();
+        if (resolve) return getEffect();
+        return basicGetEffect();
     }
     return super.eGet(featureID, resolve, coreType);
   }

+ 0 - 42
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OnCycleEventImpl.java

@@ -1,42 +0,0 @@
-/**
- */
-package org.yakindu.sct.model.stext.stext.impl;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.yakindu.sct.model.stext.stext.OnCycleEvent;
-import org.yakindu.sct.model.stext.stext.StextPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>On Cycle Event</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * </p>
- *
- * @generated
- */
-public class OnCycleEventImpl extends BuiltinEventSpecImpl implements OnCycleEvent
-{
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  protected OnCycleEventImpl()
-  {
-    super();
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  protected EClass eStaticClass()
-  {
-    return StextPackage.Literals.ON_CYCLE_EVENT;
-  }
-
-} //OnCycleEventImpl

+ 12 - 24
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java

@@ -87,9 +87,7 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
       case StextPackage.BUILTIN_EVENT_SPEC: return createBuiltinEventSpec();
       case StextPackage.ENTRY_EVENT: return createEntryEvent();
       case StextPackage.EXIT_EVENT: return createExitEvent();
-      case StextPackage.ON_CYCLE_EVENT: return createOnCycleEvent();
       case StextPackage.ALWAYS_EVENT: return createAlwaysEvent();
-      case StextPackage.DEFAULT_EVENT: return createDefaultEvent();
       case StextPackage.EXPRESSION: return createExpression();
       case StextPackage.LITERAL: return createLiteral();
       case StextPackage.BOOL_LITERAL: return createBoolLiteral();
@@ -99,6 +97,7 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
       case StextPackage.STRING_LITERAL: return createStringLiteral();
       case StextPackage.SIMPLE_SCOPE: return createSimpleScope();
       case StextPackage.REACTION_TRIGGER: return createReactionTrigger();
+      case StextPackage.DEFAULT_TRIGGER: return createDefaultTrigger();
       case StextPackage.REACTION_EFFECT: return createReactionEffect();
       case StextPackage.EVENT_RAISING_EXPRESSION: return createEventRaisingExpression();
       case StextPackage.ASSIGNMENT_EXPRESSION: return createAssignmentExpression();
@@ -433,17 +432,6 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return exitEvent;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public OnCycleEvent createOnCycleEvent()
-  {
-    OnCycleEventImpl onCycleEvent = new OnCycleEventImpl();
-    return onCycleEvent;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -455,17 +443,6 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return alwaysEvent;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public DefaultEvent createDefaultEvent()
-  {
-    DefaultEventImpl defaultEvent = new DefaultEventImpl();
-    return defaultEvent;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -565,6 +542,17 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return reactionTrigger;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public DefaultTrigger createDefaultTrigger()
+  {
+    DefaultTriggerImpl defaultTrigger = new DefaultTriggerImpl();
+    return defaultTrigger;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->

+ 23 - 46
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java

@@ -28,7 +28,7 @@ import org.yakindu.sct.model.stext.stext.BoolLiteral;
 import org.yakindu.sct.model.stext.stext.BuiltinEventSpec;
 import org.yakindu.sct.model.stext.stext.ConditionalExpression;
 import org.yakindu.sct.model.stext.stext.DefRoot;
-import org.yakindu.sct.model.stext.stext.DefaultEvent;
+import org.yakindu.sct.model.stext.stext.DefaultTrigger;
 import org.yakindu.sct.model.stext.stext.Direction;
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EntryEvent;
@@ -53,7 +53,6 @@ import org.yakindu.sct.model.stext.stext.MultiplicativeOperator;
 import org.yakindu.sct.model.stext.stext.NumericalAddSubtractExpression;
 import org.yakindu.sct.model.stext.stext.NumericalMultiplyDivideExpression;
 import org.yakindu.sct.model.stext.stext.NumericalUnaryExpression;
-import org.yakindu.sct.model.stext.stext.OnCycleEvent;
 import org.yakindu.sct.model.stext.stext.OperationDefinition;
 import org.yakindu.sct.model.stext.stext.ParenthesizedExpression;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
@@ -245,13 +244,6 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass exitEventEClass = null;
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  private EClass onCycleEventEClass = null;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -259,13 +251,6 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass alwaysEventEClass = null;
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  private EClass defaultEventEClass = null;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -329,6 +314,13 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass reactionTriggerEClass = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass defaultTriggerEClass = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -966,16 +958,6 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return exitEventEClass;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public EClass getOnCycleEvent()
-  {
-    return onCycleEventEClass;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -986,16 +968,6 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return alwaysEventEClass;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public EClass getDefaultEvent()
-  {
-    return defaultEventEClass;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1156,6 +1128,16 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return (EReference)reactionTriggerEClass.getEStructuralFeatures().get(1);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getDefaultTrigger()
+  {
+    return defaultTriggerEClass;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1994,12 +1976,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     exitEventEClass = createEClass(EXIT_EVENT);
 
-    onCycleEventEClass = createEClass(ON_CYCLE_EVENT);
-
     alwaysEventEClass = createEClass(ALWAYS_EVENT);
 
-    defaultEventEClass = createEClass(DEFAULT_EVENT);
-
     expressionEClass = createEClass(EXPRESSION);
 
     literalEClass = createEClass(LITERAL);
@@ -2025,6 +2003,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     createEReference(reactionTriggerEClass, REACTION_TRIGGER__TRIGGERS);
     createEReference(reactionTriggerEClass, REACTION_TRIGGER__GUARD_EXPRESSION);
 
+    defaultTriggerEClass = createEClass(DEFAULT_TRIGGER);
+
     reactionEffectEClass = createEClass(REACTION_EFFECT);
     createEReference(reactionEffectEClass, REACTION_EFFECT__ACTIONS);
 
@@ -2180,9 +2160,7 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     builtinEventSpecEClass.getESuperTypes().add(this.getEventSpec());
     entryEventEClass.getESuperTypes().add(this.getBuiltinEventSpec());
     exitEventEClass.getESuperTypes().add(this.getBuiltinEventSpec());
-    onCycleEventEClass.getESuperTypes().add(this.getBuiltinEventSpec());
     alwaysEventEClass.getESuperTypes().add(this.getBuiltinEventSpec());
-    defaultEventEClass.getESuperTypes().add(this.getBuiltinEventSpec());
     expressionEClass.getESuperTypes().add(theSGraphPackage.getStatement());
     boolLiteralEClass.getESuperTypes().add(this.getLiteral());
     intLiteralEClass.getESuperTypes().add(this.getLiteral());
@@ -2191,6 +2169,7 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     stringLiteralEClass.getESuperTypes().add(this.getLiteral());
     simpleScopeEClass.getESuperTypes().add(theSGraphPackage.getScope());
     reactionTriggerEClass.getESuperTypes().add(theSGraphPackage.getTrigger());
+    defaultTriggerEClass.getESuperTypes().add(theSGraphPackage.getTrigger());
     reactionEffectEClass.getESuperTypes().add(theSGraphPackage.getEffect());
     eventRaisingExpressionEClass.getESuperTypes().add(this.getExpression());
     assignmentExpressionEClass.getESuperTypes().add(this.getExpression());
@@ -2272,12 +2251,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     initEClass(exitEventEClass, ExitEvent.class, "ExitEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-    initEClass(onCycleEventEClass, OnCycleEvent.class, "OnCycleEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-
     initEClass(alwaysEventEClass, AlwaysEvent.class, "AlwaysEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-    initEClass(defaultEventEClass, DefaultEvent.class, "DefaultEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-
     initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
     initEClass(literalEClass, Literal.class, "Literal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -2303,6 +2278,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     initEReference(getReactionTrigger_Triggers(), this.getEventSpec(), null, "triggers", null, 0, -1, ReactionTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getReactionTrigger_GuardExpression(), this.getExpression(), null, "guardExpression", null, 0, 1, ReactionTrigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+    initEClass(defaultTriggerEClass, DefaultTrigger.class, "DefaultTrigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
     initEClass(reactionEffectEClass, ReactionEffect.class, "ReactionEffect", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getReactionEffect_Actions(), this.getExpression(), null, "actions", null, 0, -1, ReactionEffect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 

+ 20 - 40
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java

@@ -202,21 +202,11 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createExitEventAdapter();
       }
       @Override
-      public Adapter caseOnCycleEvent(OnCycleEvent object)
-      {
-        return createOnCycleEventAdapter();
-      }
-      @Override
       public Adapter caseAlwaysEvent(AlwaysEvent object)
       {
         return createAlwaysEventAdapter();
       }
       @Override
-      public Adapter caseDefaultEvent(DefaultEvent object)
-      {
-        return createDefaultEventAdapter();
-      }
-      @Override
       public Adapter caseExpression(Expression object)
       {
         return createExpressionAdapter();
@@ -262,6 +252,11 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createReactionTriggerAdapter();
       }
       @Override
+      public Adapter caseDefaultTrigger(DefaultTrigger object)
+      {
+        return createDefaultTriggerAdapter();
+      }
+      @Override
       public Adapter caseReactionEffect(ReactionEffect object)
       {
         return createReactionEffectAdapter();
@@ -793,21 +788,6 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
-  /**
-   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.OnCycleEvent <em>On Cycle Event</em>}'.
-   * <!-- begin-user-doc -->
-   * 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.
-   * <!-- end-user-doc -->
-   * @return the new adapter.
-   * @see org.yakindu.sct.model.stext.stext.OnCycleEvent
-   * @generated
-   */
-  public Adapter createOnCycleEventAdapter()
-  {
-    return null;
-  }
-
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.AlwaysEvent <em>Always Event</em>}'.
    * <!-- begin-user-doc -->
@@ -823,21 +803,6 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
-  /**
-   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.DefaultEvent <em>Default Event</em>}'.
-   * <!-- begin-user-doc -->
-   * 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.
-   * <!-- end-user-doc -->
-   * @return the new adapter.
-   * @see org.yakindu.sct.model.stext.stext.DefaultEvent
-   * @generated
-   */
-  public Adapter createDefaultEventAdapter()
-  {
-    return null;
-  }
-
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.Expression <em>Expression</em>}'.
    * <!-- begin-user-doc -->
@@ -973,6 +938,21 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.DefaultTrigger <em>Default Trigger</em>}'.
+   * <!-- begin-user-doc -->
+   * 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.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.DefaultTrigger
+   * @generated
+   */
+  public Adapter createDefaultTriggerAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.ReactionEffect <em>Reaction Effect</em>}'.
    * <!-- begin-user-doc -->

+ 24 - 50
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java

@@ -281,15 +281,6 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case StextPackage.ON_CYCLE_EVENT:
-      {
-        OnCycleEvent onCycleEvent = (OnCycleEvent)theEObject;
-        T result = caseOnCycleEvent(onCycleEvent);
-        if (result == null) result = caseBuiltinEventSpec(onCycleEvent);
-        if (result == null) result = caseEventSpec(onCycleEvent);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
       case StextPackage.ALWAYS_EVENT:
       {
         AlwaysEvent alwaysEvent = (AlwaysEvent)theEObject;
@@ -299,15 +290,6 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case StextPackage.DEFAULT_EVENT:
-      {
-        DefaultEvent defaultEvent = (DefaultEvent)theEObject;
-        T result = caseDefaultEvent(defaultEvent);
-        if (result == null) result = caseBuiltinEventSpec(defaultEvent);
-        if (result == null) result = caseEventSpec(defaultEvent);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
       case StextPackage.EXPRESSION:
       {
         Expression expression = (Expression)theEObject;
@@ -379,6 +361,14 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case StextPackage.DEFAULT_TRIGGER:
+      {
+        DefaultTrigger defaultTrigger = (DefaultTrigger)theEObject;
+        T result = caseDefaultTrigger(defaultTrigger);
+        if (result == null) result = caseTrigger(defaultTrigger);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case StextPackage.REACTION_EFFECT:
       {
         ReactionEffect reactionEffect = (ReactionEffect)theEObject;
@@ -923,22 +913,6 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
-  /**
-   * Returns the result of interpreting the object as an instance of '<em>On Cycle Event</em>'.
-   * <!-- begin-user-doc -->
-   * This implementation returns null;
-   * returning a non-null result will terminate the switch.
-   * <!-- end-user-doc -->
-   * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>On Cycle Event</em>'.
-   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-   * @generated
-   */
-  public T caseOnCycleEvent(OnCycleEvent object)
-  {
-    return null;
-  }
-
   /**
    * Returns the result of interpreting the object as an instance of '<em>Always Event</em>'.
    * <!-- begin-user-doc -->
@@ -955,22 +929,6 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
-  /**
-   * Returns the result of interpreting the object as an instance of '<em>Default Event</em>'.
-   * <!-- begin-user-doc -->
-   * This implementation returns null;
-   * returning a non-null result will terminate the switch.
-   * <!-- end-user-doc -->
-   * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Default Event</em>'.
-   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-   * @generated
-   */
-  public T caseDefaultEvent(DefaultEvent object)
-  {
-    return null;
-  }
-
   /**
    * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
    * <!-- begin-user-doc -->
@@ -1115,6 +1073,22 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Default Trigger</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Default Trigger</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseDefaultTrigger(DefaultTrigger object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Reaction Effect</em>'.
    * <!-- begin-user-doc -->

+ 49 - 16
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext

@@ -66,7 +66,7 @@ NamedInterfaceScope returns base::NamedElement:
 ;
 
 InterfaceScope:
-	{InterfaceScope} 'interface' (name=ID)? ':' (declarations+=(
+	{InterfaceScope} 'interface' (name=XID)? ':' (declarations+=(
 		EventDeclarartion 
 		| VariableDeclaration 
 		| OperationDeclaration 
@@ -92,7 +92,7 @@ Declaration returns sgraph::Declaration:
 EventDeclarartion returns sgraph::Event: EventDefinition;
 EventFeature returns types::Event : EventDefinition;
 EventDefinition:
-	 (direction=Direction)? 'event' name=ID (':' type=[types::Type|FQN])?;// (derivation=EventDerivation)?;
+	 (direction=Direction)? 'event' name=XID (':' type=[types::Type|FQN])?;// (derivation=EventDerivation)?;
 
 //EventDerivation:
 //	 (':' value=Expression)?;
@@ -105,31 +105,55 @@ VariableDeclaration returns sgraph::Variable:VariableDefinition;
 VariableFeature returns types::Property: VariableDefinition ;
 
 VariableDefinition:
-	{VariableDefinition} 'var' ((readonly?='readonly')? & (external?='external')?) name=ID ':' type=[types::Type|FQN] ('='
+	{VariableDefinition} 'var' ((readonly?='readonly')? & (external?='external')?) name=XID ':' type=[types::Type|FQN] ('='
 	initialValue=Expression)?;
 
 /* ---- operation definition ---- */
 OperationDeclaration returns sgraph::Declaration: OperationDefinition;
 OperationFeature returns types::Operation: OperationDefinition;
 OperationDefinition:
-	{OperationDefinition} 'operation' name=ID '(' (parameters+=Parameter (',' parameters+=Parameter)*)? ')' (':' type=[types::Type|FQN])?;
+	{OperationDefinition} 'operation' name=XID '(' (parameters+=Parameter (',' parameters+=Parameter)*)? ')' (':' type=[types::Type|FQN])?;
 
 Parameter returns types::Parameter:
-	name=ID ':' type=[types::Type|FQN]
+	name=XID ':' type=[types::Type|FQN]
 ;
 
 
 /* ---- entrypoint definition ---- */
 //Entrypoint returns sgraph::Declaration:
-//	{Entrypoint} 'entrypoint' name=ID;
+//	{Entrypoint} 'entrypoint' name=XID;
 
 /* ---- exitpoint definition ---- */
 //Exitpoint returns sgraph::Declaration:
-//	{Exitpoint} 'exitpoint' name=ID;
+//	{Exitpoint} 'exitpoint' name=XID;
 
 /* ---- Datatype rules ---- */
+XID:
+	ID 
+	| 'namespace' 
+	| 'interface'
+	| 'internal'
+	| 'event' 
+	| 'local'
+	| 'in'
+	| 'out'
+	| 'var' 
+	| 'readonly'
+	| 'external'
+	| 'operation' 
+	| 'default' 
+	| 'else'
+	| 'entry'
+	| 'exit'
+	| 'always' 
+	| 'oncycle'
+	| 'raise'
+	| 'valueof' 
+	| 'active' 
+;
+
 FQN:
-	ID ('.' ID)*;
+	XID ('.' XID)*;
 
 	/* ---- reaction rules ----
 Define the structure of reactions that are central for describing the statecharts behavior. 
@@ -141,15 +165,24 @@ LocalReaction:
 	(trigger=ReactionTrigger) =>('/' effect=ReactionEffect); //('#' properties=ReactionProperties)?;
 
 TransitionReaction:
-	{TransitionReaction} (trigger=ReactionTrigger)? ('/' effect=ReactionEffect)?; // ('#' properties=ReactionProperties)?;
+	{TransitionReaction} (trigger=StextTrigger)? ('/' effect=ReactionEffect)?; // ('#' properties=ReactionProperties)?;
+
+
+StextTrigger returns sgraph::Trigger : ReactionTrigger | DefaultTrigger;
 
 ReactionTrigger returns sgraph::Trigger:
 	{ReactionTrigger} ((triggers+=EventSpec ("," triggers+=EventSpec)* (=> '[' guardExpression=Expression ']')?)
 	| ('[' guardExpression=Expression ']'));
 
+DefaultTrigger returns sgraph::Trigger:
+	{DefaultTrigger} ('default' | 'else')
+;
+
+
 ReactionEffect returns sgraph::Effect:
 	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (=> ';' actions+=(Expression|EventRaisingExpression) )* ; // (';')?;
 
+
 //ReactionProperties:
 //	{ReactionProperties} (properties+=ReactionProperty)*;
 //
@@ -177,7 +210,7 @@ enum TimeEventType:
 
 	//TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
 BuiltinEventSpec:
-	EntryEvent | ExitEvent | OnCycleEvent | AlwaysEvent | DefaultEvent;
+	EntryEvent | ExitEvent |  AlwaysEvent; // | DefaultEvent | OnCycleEvent ;
 
 EntryEvent:
 	{EntryEvent} 'entry';
@@ -185,15 +218,15 @@ EntryEvent:
 ExitEvent:
 	{ExitEvent} 'exit';
 
-OnCycleEvent:
-	{OnCycleEvent} 'oncycle'; 
+//OnCycleEvent:
+//	{OnCycleEvent} 'oncycle'; 
 	
 AlwaysEvent:
-	{AlwaysEvent} 'always';
+	{AlwaysEvent} ('always' | 'oncycle');
 
-DefaultEvent:
-	{DefaultEvent} ('default' | 'else')
-;
+//DefaultEvent:
+//	{DefaultEvent} ('default' | 'else')
+//;
 
 //****************
 // Expression Grammar

+ 17 - 11
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -41,11 +41,12 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Statement;
 import org.yakindu.sct.model.sgraph.Transition;
+import org.yakindu.sct.model.sgraph.Trigger;
 import org.yakindu.sct.model.sgraph.validation.SCTResourceValidator;
 import org.yakindu.sct.model.sgraph.validation.SGraphJavaValidator;
 import org.yakindu.sct.model.stext.services.STextGrammarAccess;
 import org.yakindu.sct.model.stext.stext.AssignmentExpression;
-import org.yakindu.sct.model.stext.stext.DefaultEvent;
+import org.yakindu.sct.model.stext.stext.DefaultTrigger;
 import org.yakindu.sct.model.stext.stext.Direction;
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EntryEvent;
@@ -395,23 +396,28 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 	public void checkChoiceWithoutDefaultTransition(final Choice choice) {
 		boolean found = false;
 		for (Transition transition : choice.getOutgoingTransitions()) {
-			ReactionTrigger casted = (ReactionTrigger) transition.getTrigger();
-			if (casted == null) {
-				found = true;
-			} else if (casted.getTriggers().size() > 0) {
-				for (EventSpec spec : casted.getTriggers()) {
-					if (spec instanceof DefaultEvent) {
-						found = true;
-					}
-				}
-			} else
+			Trigger trigger = transition.getTrigger();
+			if (isDefault(trigger)) {
 				found = true;
+			}
 		}
 		if (!found)
 			warning(CHOICE_ONE_OUTGOING_DEFAULT_TRANSITION,
 					SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS);
 	}
 
+	
+	
+	protected boolean isDefault(Trigger trigger) {
+		
+		return 
+			trigger == null 
+			|| trigger instanceof DefaultTrigger
+			|| ((trigger instanceof ReactionTrigger) 
+					&&  ((ReactionTrigger)trigger).getTriggers().size() == 0 
+					&&  ((ReactionTrigger)trigger).getGuardExpression() == null);
+	}
+	
 	@Override
 	protected String getCurrentLanguage(Map<Object, Object> context,
 			EObject eObject) {