Prechádzať zdrojové kódy

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 13 rokov pred
rodič
commit
f5d07a99cd
39 zmenil súbory, kde vykonal 16913 pridanie a 7362 odobranie
  1. 6 0
      examples/org.yakindu.sct.examples.c.trafficlight/.project
  2. 2 2
      examples/org.yakindu.sct.examples.c.trafficlight/model/GenModelJava.sgen
  3. 1 1
      examples/org.yakindu.sct.examples.c.trafficlight/model/TrafficLightWaiting.sct
  4. 64 55
      examples/org.yakindu.sct.examples.c.trafficlight/src-gen/TrafficLightWaiting.c
  5. 2 2
      examples/org.yakindu.sct.examples.c.trafficlight/src-gen/TrafficLightWaiting.h
  6. 7 8
      examples/org.yakindu.sct.examples.c.trafficlight/src-gen/sc_types.h
  7. 6 0
      examples/org.yakindu.sct.examples.clock/.project
  8. 32 32
      examples/org.yakindu.sct.examples.clock/model/clock.sct
  9. 11 0
      examples/org.yakindu.sct.examples.clock/model/clock.sgen
  10. 7796 0
      examples/org.yakindu.sct.examples.clock/src-gen/Clock.c
  11. 234 0
      examples/org.yakindu.sct.examples.clock/src-gen/Clock.h
  12. 58 0
      examples/org.yakindu.sct.examples.clock/src-gen/ClockRequired.h
  13. 27 0
      examples/org.yakindu.sct.examples.clock/src-gen/sc_types.h
  14. 12 0
      examples/org.yakindu.sct.examples.trafficlight/src-gen/org/yakindu/sct/examples/trafficlight/cyclebased/trafficlightwaiting/TrafficLightWaitingStatemachine.java
  15. BIN
      plugins/org.yakindu.sct.doc.user/help/Tutorial/images/example_finished.PNG
  16. 52 42
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.xtend
  17. 60 71
      plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/SexecElementMapping.xtend
  18. BIN
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/.BehaviorMapping.java._trace
  19. BIN
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/.SexecElementMapping.java._trace
  20. 19 16
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.java
  21. 0 26
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/SexecElementMapping.java
  22. 72 0
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/StateVectorBuilder.smap
  23. 34 0
      plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/TraceExtensions.smap
  24. BIN
      plugins/org.yakindu.sct.model.stext.edit/icons/full/obj16/DefaultTrigger.gif
  25. 1 0
      plugins/org.yakindu.sct.model.stext.edit/plugin.properties
  26. 129 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/DefaultTriggerItemProvider.java
  27. 5 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/LocalReactionItemProvider.java
  28. 0 10
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/ReactionTriggerItemProvider.java
  29. 26 52
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/StextItemProviderAdapterFactory.java
  30. 5 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/TransitionReactionItemProvider.java
  31. 9 6
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java
  32. 5 3
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java
  33. 401 228
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g
  34. 69 69
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.tokens
  35. 471 477
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java
  36. 7275 6203
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java
  37. 2 2
      plugins/org.yakindu.sct.model.stext.ui/src/org/yakindu/sct/model/stext/ui/contentassist/STextProposalProvider.java
  38. 14 50
      test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateReactionTest.java
  39. 6 7
      test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/util/StextTestFactory.java

+ 6 - 0
examples/org.yakindu.sct.examples.c.trafficlight/.project

@@ -86,6 +86,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.yakindu.sct.builder.SCTBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.cdt.core.cnature</nature>
@@ -94,5 +99,6 @@
 		<nature>org.eclipse.cdt.make.core.ScannerConfigNature</nature>
 		<nature>com.trolltech.qtcppproject.QtNature</nature>
 		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.yakindu.sct.builder.SCTNature</nature>
 	</natures>
 </projectDescription>

+ 2 - 2
examples/org.yakindu.sct.examples.c.trafficlight/model/GenModelJava.sgen

@@ -5,7 +5,7 @@ GeneratorModel for yakindu::c {
 		feature Outlet {
 			targetProject = "org.yakindu.sct.examples.c.trafficlight"
 			targetFolder = "src-gen"
-		}
+		} 
 		
 		feature LicenseHeader {
 			licenseText = "
@@ -14,7 +14,7 @@ All rights reserved. This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v1.0
 which accompanies this distribution, and is available at
 http://www.eclipse.org/legal/epl-v10.html
-
+ 
 Contributors:
     committers of YAKINDU - initial API and implementation
 �"

+ 1 - 1
examples/org.yakindu.sct.examples.c.trafficlight/model/TrafficLightWaiting.sct

@@ -37,7 +37,7 @@
           <vertices xsi:type="sgraph:State" xmi:id="_K-JX7RBEEeGQ0KsLDV4EFg" specification="entry / Pedestrian.red = true;&#xD;&#xA;&#x9;Pedestrian.green = false" name="PedestrianRed" incomingTransitions="_iZox8BBEEeGQ0KsLDV4EFg">
             <outgoingTransitions xmi:id="_nVCU8BBEEeGQ0KsLDV4EFg" specification="after 5s" target="_TfjYTRBEEeGQ0KsLDV4EFg"/>
           </vertices>
-          <vertices xsi:type="sgraph:State" xmi:id="_TfjYTRBEEeGQ0KsLDV4EFg" specification="entry / TrafficLight.red = true;&#xD;&#xA;&#x9;TrafficLight.yellow = true;&#xD;&#xA;&#x9;TrafficLight.green = false" name="StreetPrepare" incomingTransitions="_nVCU8BBEEeGQ0KsLDV4EFg">
+          <vertices xsi:type="sgraph:State" xmi:id="_TfjYTRBEEeGQ0KsLDV4EFg" specification="entry / TrafficLight.red = true;&#xD;&#xA;&#x9;TrafficLight.yellow = true;&#xD;&#xA;&#x9;TrafficLight.green = false" name="StreetPrepared" incomingTransitions="_nVCU8BBEEeGQ0KsLDV4EFg">
             <outgoingTransitions xmi:id="_pddaABBEEeGQ0KsLDV4EFg" specification="after 2s" target="_w8meYBA_EeGQ0KsLDV4EFg"/>
           </vertices>
           <vertices xsi:type="sgraph:Entry" xmi:id="_xz0nABBPEeGQ0KsLDV4EFg">

+ 64 - 55
examples/org.yakindu.sct.examples.c.trafficlight/src-gen/TrafficLightWaiting.c

@@ -18,7 +18,7 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetAttention(TrafficL
 static void trafficLightWaiting_react_main_region_on_r1_StreetRed(TrafficLightWaiting* handle);
 static void trafficLightWaiting_react_main_region_on_r1_PedestrianGreen(TrafficLightWaiting* handle);
 static void trafficLightWaiting_react_main_region_on_r1_PedestrianRed(TrafficLightWaiting* handle);
-static void trafficLightWaiting_react_main_region_on_r1_StreetPrepare(TrafficLightWaiting* handle);
+static void trafficLightWaiting_react_main_region_on_r1_StreetPrepared(TrafficLightWaiting* handle);
 static void trafficLightWaiting_react_main_region_off_r1_YellowOn(TrafficLightWaiting* handle);
 static void trafficLightWaiting_react_main_region_off_r1_YellowOff(TrafficLightWaiting* handle);
 static void clearInEvents(TrafficLightWaiting* handle);
@@ -39,7 +39,16 @@ clearInEvents(handle);
 clearOutEvents(handle);
 
 	// TODO: initialize all events ...
-	// TODO: initialize all variables ... (set default values - here or inenter sequence ?!?)
+
+	{
+		/* Default init sequence for statechart TrafficLightWaiting */
+		handle->ifaceTrafficLight.red = bool_false;
+		handle->ifaceTrafficLight.yellow = bool_false;
+		handle->ifaceTrafficLight.green = bool_false;
+		handle->ifacePedestrian.request = bool_false;
+		handle->ifacePedestrian.red = bool_false;
+		handle->ifacePedestrian.green = bool_false;
+	}
 
 }
 
@@ -178,14 +187,14 @@ void trafficLightWaiting_exit(TrafficLightWaiting* handle)
 					}
 					break;
 				}
-				case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+				case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 					{
-						/* Default exit sequence for state StreetPrepare */
+						/* Default exit sequence for state StreetPrepared */
 						handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 						handle->stateConfVectorPosition = 0;
 						{
-							/* Exit action for state 'StreetPrepare'. */
-							trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+							/* Exit action for state 'StreetPrepared'. */
+							trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 						}
 					}
 					break;
@@ -231,7 +240,7 @@ static void clearInEvents(TrafficLightWaiting* handle) {
 	handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetRed_time_event_0_raised = bool_false; 
 	handle->timeEvents.TrafficLightWaiting_main_region_on_r1_PedestrianGreen_time_event_0_raised = bool_false; 
 	handle->timeEvents.TrafficLightWaiting_main_region_on_r1_PedestrianRed_time_event_0_raised = bool_false; 
-	handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised = bool_false; 
+	handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised = bool_false; 
 	handle->timeEvents.TrafficLightWaiting_main_region_off_r1_YellowOn_time_event_0_raised = bool_false; 
 	handle->timeEvents.TrafficLightWaiting_main_region_off_r1_YellowOff_time_event_0_raised = bool_false; 
 }
@@ -276,8 +285,8 @@ void trafficLightWaiting_runCycle(TrafficLightWaiting* handle) {
 			trafficLightWaiting_react_main_region_on_r1_PedestrianRed(handle);
 			break;
 		}
-		case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
-			trafficLightWaiting_react_main_region_on_r1_StreetPrepare(handle);
+		case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
+			trafficLightWaiting_react_main_region_on_r1_StreetPrepared(handle);
 			break;
 		}
 		case TrafficLightWaiting_main_region_off_r1_YellowOn : {
@@ -307,7 +316,7 @@ sc_boolean trafficLightWaiting_isActive(TrafficLightWaiting* handle, TrafficLigh
 	switch (state) {
 		case TrafficLightWaiting_main_region_on : 
 			return (sc_boolean) (handle->stateConfVector[0] >= TrafficLightWaiting_main_region_on
-				&& handle->stateConfVector[0] <= TrafficLightWaiting_main_region_on_r1_StreetPrepare);
+				&& handle->stateConfVector[0] <= TrafficLightWaiting_main_region_on_r1_StreetPrepared);
 		case TrafficLightWaiting_main_region_on_r1_StreetGreen : 
 			return (sc_boolean) (handle->stateConfVector[0] == TrafficLightWaiting_main_region_on_r1_StreetGreen
 			);
@@ -332,8 +341,8 @@ sc_boolean trafficLightWaiting_isActive(TrafficLightWaiting* handle, TrafficLigh
 		case TrafficLightWaiting_main_region_on_r1_PedestrianRed : 
 			return (sc_boolean) (handle->stateConfVector[0] == TrafficLightWaiting_main_region_on_r1_PedestrianRed
 			);
-		case TrafficLightWaiting_main_region_on_r1_StreetPrepare : 
-			return (sc_boolean) (handle->stateConfVector[0] == TrafficLightWaiting_main_region_on_r1_StreetPrepare
+		case TrafficLightWaiting_main_region_on_r1_StreetPrepared : 
+			return (sc_boolean) (handle->stateConfVector[0] == TrafficLightWaiting_main_region_on_r1_StreetPrepared
 			);
 		case TrafficLightWaiting_main_region_off : 
 			return (sc_boolean) (handle->stateConfVector[0] >= TrafficLightWaiting_main_region_off
@@ -514,14 +523,14 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetGreen(TrafficLight
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -694,14 +703,14 @@ static void trafficLightWaiting_react_main_region_on_r1_PedWaiting_r1_waitOn(Tra
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -919,14 +928,14 @@ static void trafficLightWaiting_react_main_region_on_r1_PedWaiting_r1_waitOff(Tr
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1144,14 +1153,14 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetAttention(TrafficL
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1317,14 +1326,14 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetRed(TrafficLightWa
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1489,14 +1498,14 @@ static void trafficLightWaiting_react_main_region_on_r1_PedestrianGreen(TrafficL
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1661,14 +1670,14 @@ static void trafficLightWaiting_react_main_region_on_r1_PedestrianRed(TrafficLig
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1717,15 +1726,15 @@ static void trafficLightWaiting_react_main_region_on_r1_PedestrianRed(TrafficLig
 					}
 				}
 				{
-					/* Default enter sequence for state StreetPrepare */
+					/* Default enter sequence for state StreetPrepared */
 					{
-						/* Entry action for state 'StreetPrepare'. */
-						trafficLightWaiting_setTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) , 2 * 1000, bool_false);
+						/* Entry action for state 'StreetPrepared'. */
+						trafficLightWaiting_setTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) , 2 * 1000, bool_false);
 						handle->ifaceTrafficLight.red = bool_true;
 						handle->ifaceTrafficLight.yellow = bool_true;
 						handle->ifaceTrafficLight.green = bool_false;
 					}
-					handle->stateConfVector[0] = TrafficLightWaiting_main_region_on_r1_StreetPrepare;
+					handle->stateConfVector[0] = TrafficLightWaiting_main_region_on_r1_StreetPrepared;
 					handle->stateConfVectorPosition = 0;
 				}
 			} 
@@ -1733,10 +1742,10 @@ static void trafficLightWaiting_react_main_region_on_r1_PedestrianRed(TrafficLig
 	}
 }
 
-/* The reactions of state StreetPrepare. */
-static void trafficLightWaiting_react_main_region_on_r1_StreetPrepare(TrafficLightWaiting* handle) {
+/* The reactions of state StreetPrepared. */
+static void trafficLightWaiting_react_main_region_on_r1_StreetPrepared(TrafficLightWaiting* handle) {
 	{
-		/* The reactions of state StreetPrepare. */
+		/* The reactions of state StreetPrepared. */
 		if (handle->iface.onOff_raised) { 
 			{
 				/* Default exit sequence for state on */
@@ -1834,14 +1843,14 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetPrepare(TrafficLig
 							}
 							break;
 						}
-						case TrafficLightWaiting_main_region_on_r1_StreetPrepare : {
+						case TrafficLightWaiting_main_region_on_r1_StreetPrepared : {
 							{
-								/* Default exit sequence for state StreetPrepare */
+								/* Default exit sequence for state StreetPrepared */
 								handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 								handle->stateConfVectorPosition = 0;
 								{
-									/* Exit action for state 'StreetPrepare'. */
-									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+									/* Exit action for state 'StreetPrepared'. */
+									trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 								}
 							}
 							break;
@@ -1879,14 +1888,14 @@ static void trafficLightWaiting_react_main_region_on_r1_StreetPrepare(TrafficLig
 				}
 			}
 		}  else {
-			if (handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) { 
+			if (handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) { 
 				{
-					/* Default exit sequence for state StreetPrepare */
+					/* Default exit sequence for state StreetPrepared */
 					handle->stateConfVector[0] = TrafficLightWaiting_last_state;
 					handle->stateConfVectorPosition = 0;
 					{
-						/* Exit action for state 'StreetPrepare'. */
-						trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised) );		
+						/* Exit action for state 'StreetPrepared'. */
+						trafficLightWaiting_unsetTimer( (sc_eventid) &(handle->timeEvents.TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised) );		
 					}
 				}
 				{

+ 2 - 2
examples/org.yakindu.sct.examples.c.trafficlight/src-gen/TrafficLightWaiting.h

@@ -21,7 +21,7 @@ typedef enum {
 	TrafficLightWaiting_main_region_on_r1_StreetRed ,
 	TrafficLightWaiting_main_region_on_r1_PedestrianGreen ,
 	TrafficLightWaiting_main_region_on_r1_PedestrianRed ,
-	TrafficLightWaiting_main_region_on_r1_StreetPrepare ,
+	TrafficLightWaiting_main_region_on_r1_StreetPrepared ,
 	TrafficLightWaiting_main_region_off ,
 	TrafficLightWaiting_main_region_off_r1_YellowOn ,
 	TrafficLightWaiting_main_region_off_r1_YellowOff ,
@@ -57,7 +57,7 @@ typedef struct {
 	sc_boolean TrafficLightWaiting_main_region_on_r1_StreetRed_time_event_0_raised;
 	sc_boolean TrafficLightWaiting_main_region_on_r1_PedestrianGreen_time_event_0_raised;
 	sc_boolean TrafficLightWaiting_main_region_on_r1_PedestrianRed_time_event_0_raised;
-	sc_boolean TrafficLightWaiting_main_region_on_r1_StreetPrepare_time_event_0_raised;
+	sc_boolean TrafficLightWaiting_main_region_on_r1_StreetPrepared_time_event_0_raised;
 	sc_boolean TrafficLightWaiting_main_region_off_r1_YellowOn_time_event_0_raised;
 	sc_boolean TrafficLightWaiting_main_region_off_r1_YellowOff_time_event_0_raised;
 } TrafficLightWaitingTimeEvents;

+ 7 - 8
examples/org.yakindu.sct.examples.c.trafficlight/src-gen/sc_types.h

@@ -7,16 +7,15 @@ extern "C" {
 
 #include <stdint.h>
 #include <stdbool.h>
-
-typedef int_fast16_t sc_short;
+ 				
+typedef int_fast16_t  sc_short;
 typedef uint_fast16_t sc_ushort;
-typedef int32_t sc_integer;
-typedef uint32_t sc_uinteger;
-
-typedef double sc_real;
-typedef char* sc_string;
+typedef int32_t       sc_integer; 
+typedef uint32_t      sc_uinteger; 
+typedef double        sc_real;
+typedef char*         sc_string;
 
-typedef void* sc_eventid;
+typedef void*         sc_eventid;
 
 #ifdef __cplusplus
 }

+ 6 - 0
examples/org.yakindu.sct.examples.clock/.project

@@ -15,9 +15,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.yakindu.sct.builder.SCTBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.yakindu.sct.builder.SCTNature</nature>
 	</natures>
 </projectDescription>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 32 - 32
examples/org.yakindu.sct.examples.clock/model/clock.sct


+ 11 - 0
examples/org.yakindu.sct.examples.clock/model/clock.sgen

@@ -0,0 +1,11 @@
+GeneratorModel for yakindu::c {
+	
+	statechart clock
+	{
+		feature Outlet {
+			targetProject =  "org.yakindu.sct.examples.clock" 
+			targetFolder =  "src-gen" 
+		}  
+		
+	}
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 7796 - 0
examples/org.yakindu.sct.examples.clock/src-gen/Clock.c


+ 234 - 0
examples/org.yakindu.sct.examples.clock/src-gen/Clock.h

@@ -0,0 +1,234 @@
+#ifndef CLOCK_H_
+#define CLOCK_H_
+
+#include "sc_types.h"
+
+#ifdef __cplusplus
+extern "C" { 
+#endif 
+
+/*! \file Header of the state machine 'clock'.
+*/
+
+//! enumeration of all states 
+typedef enum {
+	clock_main_displays ,
+	clock_main_displays__region0_regular_beep_test ,
+	clock_main_displays__region0_regular_beep_test_regular_update ,
+	clock_main_displays__region0_regular_beep_test_regular_update__region0_sec ,
+	clock_main_displays__region0_regular_beep_test_regular_update__region0_min ,
+	clock_main_displays__region0_regular_beep_test_regular_update__region0_hr ,
+	clock_main_displays__region0_regular_beep_test_regular_update__region0_mode ,
+	clock_main_displays__region0_regular_beep_test_regular_time ,
+	clock_main_displays__region0_regular_beep_test_regular_date ,
+	clock_main_displays__region0_regular_beep_test_beep_test_off ,
+	clock_main_displays__region0_regular_beep_test_beep_test_beep ,
+	clock_main_displays__region0_wait ,
+	clock_main_alarms_beep ,
+	clock_main_alarms_beep_r1_alarm_1_beeps ,
+	clock_main_alarms_beep_r1_alarm_2_beeps ,
+	clock_main_alarms_beep_r1_both_beep ,
+	clock_main_stopwatch ,
+	clock_main_stopwatch_r1_zero ,
+	clock_main_stopwatch_r1_display_run ,
+	clock_main_stopwatch_r1_display_run_display_regular ,
+	clock_main_stopwatch_r1_display_run_display_lap ,
+	clock_main_stopwatch_r1_display_run_run_on ,
+	clock_main_stopwatch_r1_display_run_run_off ,
+	clock_main_settings ,
+	clock_main_settings_r1_alarm_1 ,
+	clock_main_settings_r1_alarm_1_r1_off ,
+	clock_main_settings_r1_alarm_1_r1_on ,
+	clock_main_settings_r1_update_1 ,
+	clock_main_settings_r1_update_1_r1_hr ,
+	clock_main_settings_r1_update_1_r1_min ,
+	clock_main_settings_r1_update_2 ,
+	clock_main_settings_r1_update_2_r1_hr ,
+	clock_main_settings_r1_update_2_r1_min ,
+	clock_main_settings_r1_alarm_2 ,
+	clock_main_settings_r1_alarm_2_r1_off ,
+	clock_main_settings_r1_alarm_2_r1_on ,
+	clock_main_settings_r1_chime ,
+	clock_main_settings_r1_chime_r1_off ,
+	clock_main_settings_r1_chime_r1_on ,
+	clock_alarm_1_disabled ,
+	clock_alarm_1_enabled ,
+	clock_alarm_2_disabled ,
+	clock_alarm_2_enabled ,
+	clock_chime___status_disabled ,
+	clock_chime___status_enabled ,
+	clock_chime___status_enabled_r1_quiet ,
+	clock_chime___status_enabled_r1_beep ,
+	clock_light_off ,
+	clock_light_on ,
+	clock_power_ok ,
+	clock_power_blink ,
+	Clock_last_state
+} ClockStates;
+
+//! Type definition of the data structure for the ClockIface interface scope.
+typedef struct {
+	sc_boolean a_p_raised;
+	sc_boolean b_p_raised;
+	sc_boolean b_r_raised;
+	sc_boolean c_p_raised;
+	sc_boolean c_r_raised;
+	sc_boolean d_p_raised;
+	sc_boolean d_r_raised;
+} ClockIface;
+
+//! Type definition of the data structure for the ClockIfaceClock interface scope.
+typedef struct {
+	sc_integer  second;
+	sc_integer  minute;
+	sc_integer  hour;
+	sc_integer  time;
+	sc_integer  al1_time;
+	sc_integer  al2_time;
+} ClockIfaceClock;
+
+//! Type definition of the data structure for the ClockIfaceStopwatch interface scope.
+typedef struct {
+	sc_integer  time;
+	sc_integer  lap;
+} ClockIfaceStopwatch;
+
+//! Type definition of the data structure for the ClockIfaceBattery interface scope.
+typedef struct {
+	sc_boolean low_raised;
+	sc_boolean replace_raised;
+	sc_integer  max_energy;
+	sc_real  min_energy;
+	sc_integer  energy;
+} ClockIfaceBattery;
+
+//! Type definition of the data structure for the ClockInternal interface scope.
+typedef struct {
+	sc_integer  delta;
+} ClockInternal;
+
+//! Type definition of the data structure for the ClockTimeEvents interface scope.
+typedef struct {
+	sc_boolean clock_main_displays__region0_regular_beep_test_regular_update_time_event_0_raised;
+	sc_boolean clock_main_displays__region0_regular_beep_test_regular_date_time_event_0_raised;
+	sc_boolean clock_main_displays__region0_wait_time_event_0_raised;
+	sc_boolean clock_main_alarms_beep_time_event_0_raised;
+	sc_boolean clock_main_stopwatch_r1_display_run_run_on_time_event_0_raised;
+	sc_boolean clock_chime___status_enabled_r1_beep_time_event_0_raised;
+	sc_boolean clock_time_event_0_raised;
+} ClockTimeEvents;
+
+
+//! the maximum number of orthogonal states defines the dimension of the state configuration vector.
+#define CLOCK_MAX_ORTHOGONAL_STATES 7
+//! dimension of the state configuration vector for history states
+#define CLOCK_MAX_HISTORY_STATES 10
+
+/*! Type definition of the data structure for the Clock state machine.
+This data structure has to be allocated by the client code. */
+typedef struct {
+	ClockStates stateConfVector[CLOCK_MAX_ORTHOGONAL_STATES];
+	ClockStates historyVector[CLOCK_MAX_HISTORY_STATES];
+	sc_ushort stateConfVectorPosition; 
+	
+	ClockIface iface;
+	ClockIfaceClock ifaceClock;
+	ClockIfaceStopwatch ifaceStopwatch;
+	ClockIfaceBattery ifaceBattery;
+	ClockInternal internal;
+	ClockTimeEvents timeEvents;
+} Clock;
+
+/*! Initializes the Clock state machine data structures. Must be called before first usage.*/
+extern void clock_init(Clock* handle);
+
+/*! Activates the state machine */
+extern void clock_enter(Clock* handle);
+
+/*! Deactivates the state machine */
+extern void clock_exit(Clock* handle);
+
+/*! Performs a 'run to completion' step. */
+extern void clock_runCycle(Clock* handle);
+
+/*! Raises a time event. */
+extern void clock_raiseTimeEvent(Clock* handle, sc_eventid evid);
+
+/*! Raises the in event 'a_p' that is defined in the default interface scope. */ 
+extern void clockIface_raise_a_p(Clock* handle);
+
+/*! Raises the in event 'b_p' that is defined in the default interface scope. */ 
+extern void clockIface_raise_b_p(Clock* handle);
+
+/*! Raises the in event 'b_r' that is defined in the default interface scope. */ 
+extern void clockIface_raise_b_r(Clock* handle);
+
+/*! Raises the in event 'c_p' that is defined in the default interface scope. */ 
+extern void clockIface_raise_c_p(Clock* handle);
+
+/*! Raises the in event 'c_r' that is defined in the default interface scope. */ 
+extern void clockIface_raise_c_r(Clock* handle);
+
+/*! Raises the in event 'd_p' that is defined in the default interface scope. */ 
+extern void clockIface_raise_d_p(Clock* handle);
+
+/*! Raises the in event 'd_r' that is defined in the default interface scope. */ 
+extern void clockIface_raise_d_r(Clock* handle);
+
+
+/*! Gets the value of the variable 'second' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_second(Clock* handle);
+/*! Gets the value of the variable 'minute' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_minute(Clock* handle);
+/*! Sets the value of the variable 'minute' that is defined in the interface scope 'clock'. */ 
+extern void clockIfaceClock_set_minute(Clock* handle, sc_integer value);
+/*! Gets the value of the variable 'hour' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_hour(Clock* handle);
+/*! Sets the value of the variable 'hour' that is defined in the interface scope 'clock'. */ 
+extern void clockIfaceClock_set_hour(Clock* handle, sc_integer value);
+/*! Gets the value of the variable 'time' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_time(Clock* handle);
+/*! Sets the value of the variable 'time' that is defined in the interface scope 'clock'. */ 
+extern void clockIfaceClock_set_time(Clock* handle, sc_integer value);
+/*! Gets the value of the variable 'al1_time' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_al1_time(Clock* handle);
+/*! Sets the value of the variable 'al1_time' that is defined in the interface scope 'clock'. */ 
+extern void clockIfaceClock_set_al1_time(Clock* handle, sc_integer value);
+/*! Gets the value of the variable 'al2_time' that is defined in the interface scope 'clock'. */ 
+extern sc_integer clockIfaceClock_get_al2_time(Clock* handle);
+/*! Sets the value of the variable 'al2_time' that is defined in the interface scope 'clock'. */ 
+extern void clockIfaceClock_set_al2_time(Clock* handle, sc_integer value);
+
+/*! Gets the value of the variable 'time' that is defined in the interface scope 'stopwatch'. */ 
+extern sc_integer clockIfaceStopwatch_get_time(Clock* handle);
+/*! Sets the value of the variable 'time' that is defined in the interface scope 'stopwatch'. */ 
+extern void clockIfaceStopwatch_set_time(Clock* handle, sc_integer value);
+/*! Gets the value of the variable 'lap' that is defined in the interface scope 'stopwatch'. */ 
+extern sc_integer clockIfaceStopwatch_get_lap(Clock* handle);
+/*! Sets the value of the variable 'lap' that is defined in the interface scope 'stopwatch'. */ 
+extern void clockIfaceStopwatch_set_lap(Clock* handle, sc_integer value);
+
+/*! Raises the in event 'low' that is defined in the interface scope 'battery'. */ 
+extern void clockIfaceBattery_raise_low(Clock* handle);
+
+/*! Raises the in event 'replace' that is defined in the interface scope 'battery'. */ 
+extern void clockIfaceBattery_raise_replace(Clock* handle);
+
+/*! Gets the value of the variable 'max_energy' that is defined in the interface scope 'battery'. */ 
+extern sc_integer clockIfaceBattery_get_max_energy(Clock* handle);
+/*! Gets the value of the variable 'min_energy' that is defined in the interface scope 'battery'. */ 
+extern sc_real clockIfaceBattery_get_min_energy(Clock* handle);
+/*! Gets the value of the variable 'energy' that is defined in the interface scope 'battery'. */ 
+extern sc_integer clockIfaceBattery_get_energy(Clock* handle);
+/*! Sets the value of the variable 'energy' that is defined in the interface scope 'battery'. */ 
+extern void clockIfaceBattery_set_energy(Clock* handle, sc_integer value);
+
+
+/*! Checks if the specified state is active. */
+extern sc_boolean clock_isActive(Clock* handle, ClockStates state);
+
+#ifdef __cplusplus
+}
+#endif 
+
+#endif /* CLOCK_H_ */

+ 58 - 0
examples/org.yakindu.sct.examples.clock/src-gen/ClockRequired.h

@@ -0,0 +1,58 @@
+#ifndef CLOCKREQUIRED_H_
+#define CLOCKREQUIRED_H_
+
+#include "sc_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif 
+
+
+
+/*! \file This header defines prototypes for all functions that are required by the state machine implementation.
+
+This is a state machine uses time events which require access to a timing service. Thus the function prototypes:
+	- clock_setTimer and
+	- clock_unsetTimer
+are defined.
+
+		
+These functions will be called during a 'run to completion step' (runCycle) of the statechart. 
+There are some constraints that have to be considered for the implementation of these functions:
+	- never call the statechart API functions from within these functions.
+	- make sure that the execution time is as short as possible.
+ 
+*/
+
+
+
+
+
+
+
+
+//
+// This is a timed state machine that requires timer services
+// 
+
+//! This function has to set up timers for the time events that are required by the state machine.
+/*! 
+	This function will be called for each time event that is relevant for a state when a state will be entered.
+	\param evid An unique identifier of the event.
+	\time_ms The time in milli seconds
+	\periodic Indicates the the time event must be raised periodically until the timer is unset 
+*/
+extern void clock_setTimer(const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic);
+
+//! This function has to unset timers for the time events that are required by the state machine.
+/*! 
+	This function will be called for each time event taht is relevant for a state when a state will be left.
+	\param evid An unique identifier of the event.
+*/
+extern void clock_unsetTimer(const sc_eventid evid);
+
+#ifdef __cplusplus
+}
+#endif 
+
+#endif /* CLOCKREQUIRED_H_ */

+ 27 - 0
examples/org.yakindu.sct.examples.clock/src-gen/sc_types.h

@@ -0,0 +1,27 @@
+#ifndef SC_TYPES_H_
+#define SC_TYPES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif 
+
+#include <stdint.h>
+#include <stdbool.h>
+ 				
+typedef int_fast16_t  sc_short;
+typedef uint_fast16_t sc_ushort;
+typedef int32_t       sc_integer; 
+typedef uint32_t      sc_uinteger; 
+typedef double        sc_real;
+typedef char*         sc_string;
+
+typedef void*         sc_eventid;
+
+#ifdef __cplusplus
+}
+#endif 
+#define sc_boolean bool
+#define bool_true true
+#define bool_false false
+
+#endif /* SC_TYPES_H_ */

+ 12 - 0
examples/org.yakindu.sct.examples.trafficlight/src-gen/org/yakindu/sct/examples/trafficlight/cyclebased/trafficlightwaiting/TrafficLightWaitingStatemachine.java

@@ -172,6 +172,18 @@ public class TrafficLightWaitingStatemachine
 
 		clearEvents();
 		clearOutEvents();
+
+		sCITrafficLight.red = false;
+
+		sCITrafficLight.yellow = false;
+
+		sCITrafficLight.green = false;
+
+		sCIPedestrian.request = false;
+
+		sCIPedestrian.red = false;
+
+		sCIPedestrian.green = false;
 	}
 
 	public void enter() {

BIN
plugins/org.yakindu.sct.doc.user/help/Tutorial/images/example_finished.PNG


+ 52 - 42
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.xtend

@@ -1,43 +1,44 @@
-package org.yakindu.sct.model.sexec.transformation
-
-import com.google.inject.Inject
-import java.util.HashSet
-import java.util.List
-import java.util.Set
-import org.eclipse.emf.ecore.util.EcoreUtil
-import org.yakindu.sct.model.sexec.Check
-import org.yakindu.sct.model.sexec.Execution
-import org.yakindu.sct.model.sexec.ExecutionChoice
-import org.yakindu.sct.model.sexec.ExecutionEntry
-import org.yakindu.sct.model.sexec.ExecutionFlow
-import org.yakindu.sct.model.sexec.ExecutionNode
-import org.yakindu.sct.model.sexec.ExecutionRegion
-import org.yakindu.sct.model.sexec.ExecutionScope
-import org.yakindu.sct.model.sexec.ExecutionState
-import org.yakindu.sct.model.sexec.ExecutionSynchronization
-import org.yakindu.sct.model.sexec.Reaction
-import org.yakindu.sct.model.sexec.Sequence
-import org.yakindu.sct.model.sexec.Step
-import org.yakindu.sct.model.sgraph.Choice
-import org.yakindu.sct.model.sgraph.Effect
-import org.yakindu.sct.model.sgraph.Entry
-import org.yakindu.sct.model.sgraph.Pseudostate
-import org.yakindu.sct.model.sgraph.Region
-import org.yakindu.sct.model.sgraph.RegularState
-import org.yakindu.sct.model.sgraph.State
-import org.yakindu.sct.model.sgraph.Statechart
-import org.yakindu.sct.model.sgraph.Statement
-import org.yakindu.sct.model.sgraph.Synchronization
-import org.yakindu.sct.model.sgraph.Transition
-import org.yakindu.sct.model.sgraph.Trigger
-import org.yakindu.sct.model.sgraph.Vertex
-import org.yakindu.sct.model.stext.stext.AlwaysEvent
-import org.yakindu.sct.model.stext.stext.Expression
-import org.yakindu.sct.model.stext.stext.LocalReaction
-import org.yakindu.sct.model.stext.stext.OnCycleEvent
-import org.yakindu.sct.model.stext.stext.ReactionEffect
-import org.yakindu.sct.model.stext.stext.ReactionTrigger
-import org.yakindu.sct.model.stext.stext.RegularEventSpec
+package org.yakindu.sct.model.sexec.transformation
+
+import com.google.inject.Inject
+import java.util.HashSet
+import java.util.List
+import java.util.Set
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.yakindu.sct.model.sexec.Check
+import org.yakindu.sct.model.sexec.Execution
+import org.yakindu.sct.model.sexec.ExecutionChoice
+import org.yakindu.sct.model.sexec.ExecutionEntry
+import org.yakindu.sct.model.sexec.ExecutionFlow
+import org.yakindu.sct.model.sexec.ExecutionNode
+import org.yakindu.sct.model.sexec.ExecutionRegion
+import org.yakindu.sct.model.sexec.ExecutionScope
+import org.yakindu.sct.model.sexec.ExecutionState
+import org.yakindu.sct.model.sexec.ExecutionSynchronization
+import org.yakindu.sct.model.sexec.Reaction
+import org.yakindu.sct.model.sexec.Sequence
+import org.yakindu.sct.model.sexec.Step
+import org.yakindu.sct.model.sgraph.Choice
+import org.yakindu.sct.model.sgraph.Effect
+import org.yakindu.sct.model.sgraph.Entry
+import org.yakindu.sct.model.sgraph.Pseudostate
+import org.yakindu.sct.model.sgraph.Region
+import org.yakindu.sct.model.sgraph.RegularState
+import org.yakindu.sct.model.sgraph.State
+import org.yakindu.sct.model.sgraph.Statechart
+import org.yakindu.sct.model.sgraph.Statement
+import org.yakindu.sct.model.sgraph.Synchronization
+import org.yakindu.sct.model.sgraph.Transition
+import org.yakindu.sct.model.sgraph.Trigger
+import org.yakindu.sct.model.sgraph.Vertex
+import org.yakindu.sct.model.stext.stext.AlwaysEvent
+import org.yakindu.sct.model.stext.stext.BoolLiteral
+import org.yakindu.sct.model.stext.stext.DefaultTrigger
+import org.yakindu.sct.model.stext.stext.Expression
+import org.yakindu.sct.model.stext.stext.LocalReaction
+import org.yakindu.sct.model.stext.stext.ReactionEffect
+import org.yakindu.sct.model.stext.stext.ReactionTrigger
+import org.yakindu.sct.model.stext.stext.RegularEventSpec
 import org.yakindu.sct.model.stext.stext.TimeEventSpec
 
  
@@ -352,7 +353,7 @@ class BehaviorMapping {
 					|| ! (lr.trigger as ReactionTrigger).triggers.filter( t | 
 						t instanceof RegularEventSpec 
 						|| t instanceof TimeEventSpec 
-						|| t instanceof OnCycleEvent 
+//						|| t instanceof OnCycleEvent 
 						|| t instanceof AlwaysEvent
 					).empty
 				)
@@ -377,7 +378,7 @@ class BehaviorMapping {
 					|| ! (lr.trigger as ReactionTrigger).triggers.filter( t | 
 						t instanceof RegularEventSpec 
 						|| t instanceof TimeEventSpec 
-						|| t instanceof OnCycleEvent 
+//						|| t instanceof OnCycleEvent 
 						|| t instanceof AlwaysEvent
 					).toList.empty
 				)
@@ -607,6 +608,15 @@ class BehaviorMapping {
 	}
 	
 	def dispatch Statement buildCondition (Trigger t) { null }
+
+
+	def dispatch Statement buildCondition (DefaultTrigger t) { 
+		val r = stext.factory.createPrimitiveValueExpression
+		val BoolLiteral boolLit = stext.factory.createBoolLiteral
+		boolLit.value = true		
+		r.value = boolLit
+		return r
+	 }
 	
 	def dispatch Statement buildCondition (ReactionTrigger t) {
 		val triggerCheck = if (! t.triggers.empty) t.triggers.reverseView.fold(null as Expression,

+ 60 - 71
plugins/org.yakindu.sct.model.sexec/src/org/yakindu/sct/model/sexec/transformation/SexecElementMapping.xtend

@@ -1,59 +1,56 @@
-package org.yakindu.sct.model.sexec.transformation
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.emf.ecore.util.EcoreUtil
-import org.eclipse.xtext.naming.IQualifiedNameProvider
-import org.eclipse.xtext.util.Strings
-import org.yakindu.base.base.NamedElement
-import org.yakindu.sct.model.sexec.Call
-import org.yakindu.sct.model.sexec.Check
-import org.yakindu.sct.model.sexec.CheckRef
-import org.yakindu.sct.model.sexec.ExecutionChoice
-import org.yakindu.sct.model.sexec.ExecutionEntry
-import org.yakindu.sct.model.sexec.ExecutionFlow
-import org.yakindu.sct.model.sexec.ExecutionNode
-import org.yakindu.sct.model.sexec.ExecutionRegion
-import org.yakindu.sct.model.sexec.ExecutionState
-import org.yakindu.sct.model.sexec.ExecutionSynchronization
-import org.yakindu.sct.model.sexec.Reaction
-import org.yakindu.sct.model.sexec.ScheduleTimeEvent
-import org.yakindu.sct.model.sexec.SexecFactory
-import org.yakindu.sct.model.sexec.Step
-import org.yakindu.sct.model.sexec.TimeEvent
-import org.yakindu.sct.model.sexec.UnscheduleTimeEvent
-import org.yakindu.sct.model.sgraph.Choice
-import org.yakindu.sct.model.sgraph.CompositeElement
-import org.yakindu.sct.model.sgraph.Entry
-import org.yakindu.sct.model.sgraph.EntryKind
-import org.yakindu.sct.model.sgraph.FinalState
-import org.yakindu.sct.model.sgraph.Region
-import org.yakindu.sct.model.sgraph.RegularState
-import org.yakindu.sct.model.sgraph.Scope
-import org.yakindu.sct.model.sgraph.State
-import org.yakindu.sct.model.sgraph.Statechart
-import org.yakindu.sct.model.sgraph.Statement
-import org.yakindu.sct.model.sgraph.Synchronization
-import org.yakindu.sct.model.sgraph.Transition
-import org.yakindu.sct.model.stext.stext.AlwaysEvent
-import org.yakindu.sct.model.stext.stext.BoolLiteral
-import org.yakindu.sct.model.stext.stext.DefaultEvent
-import org.yakindu.sct.model.stext.stext.ElementReferenceExpression
-import org.yakindu.sct.model.stext.stext.EventDefinition
-import org.yakindu.sct.model.stext.stext.EventSpec
-import org.yakindu.sct.model.stext.stext.Expression
-import org.yakindu.sct.model.stext.stext.FeatureCall
-import org.yakindu.sct.model.stext.stext.InterfaceScope
-import org.yakindu.sct.model.stext.stext.LocalReaction
-import org.yakindu.sct.model.stext.stext.OnCycleEvent
-import org.yakindu.sct.model.stext.stext.OperationDefinition
-import org.yakindu.sct.model.stext.stext.ReactionTrigger
-import org.yakindu.sct.model.stext.stext.RegularEventSpec
-import org.yakindu.sct.model.stext.stext.StextFactory
-import org.yakindu.sct.model.stext.stext.TimeEventSpec
-import org.yakindu.sct.model.stext.stext.TimeEventType
-import org.yakindu.sct.model.stext.stext.VariableDefinition
-import org.yakindu.sct.model.sgraph.Exit
+package org.yakindu.sct.model.sexec.transformation
+
+import com.google.inject.Inject
+import com.google.inject.Singleton
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.util.Strings
+import org.yakindu.base.base.NamedElement
+import org.yakindu.sct.model.sexec.Call
+import org.yakindu.sct.model.sexec.Check
+import org.yakindu.sct.model.sexec.CheckRef
+import org.yakindu.sct.model.sexec.ExecutionChoice
+import org.yakindu.sct.model.sexec.ExecutionEntry
+import org.yakindu.sct.model.sexec.ExecutionFlow
+import org.yakindu.sct.model.sexec.ExecutionNode
+import org.yakindu.sct.model.sexec.ExecutionRegion
+import org.yakindu.sct.model.sexec.ExecutionState
+import org.yakindu.sct.model.sexec.ExecutionSynchronization
+import org.yakindu.sct.model.sexec.Reaction
+import org.yakindu.sct.model.sexec.ScheduleTimeEvent
+import org.yakindu.sct.model.sexec.SexecFactory
+import org.yakindu.sct.model.sexec.Step
+import org.yakindu.sct.model.sexec.TimeEvent
+import org.yakindu.sct.model.sexec.UnscheduleTimeEvent
+import org.yakindu.sct.model.sgraph.Choice
+import org.yakindu.sct.model.sgraph.CompositeElement
+import org.yakindu.sct.model.sgraph.Entry
+import org.yakindu.sct.model.sgraph.EntryKind
+import org.yakindu.sct.model.sgraph.FinalState
+import org.yakindu.sct.model.sgraph.Region
+import org.yakindu.sct.model.sgraph.RegularState
+import org.yakindu.sct.model.sgraph.Scope
+import org.yakindu.sct.model.sgraph.State
+import org.yakindu.sct.model.sgraph.Statechart
+import org.yakindu.sct.model.sgraph.Statement
+import org.yakindu.sct.model.sgraph.Synchronization
+import org.yakindu.sct.model.sgraph.Transition
+import org.yakindu.sct.model.stext.stext.AlwaysEvent
+import org.yakindu.sct.model.stext.stext.BoolLiteral
+import org.yakindu.sct.model.stext.stext.ElementReferenceExpression
+import org.yakindu.sct.model.stext.stext.EventDefinition
+import org.yakindu.sct.model.stext.stext.EventSpec
+import org.yakindu.sct.model.stext.stext.Expression
+import org.yakindu.sct.model.stext.stext.FeatureCall
+import org.yakindu.sct.model.stext.stext.InterfaceScope
+import org.yakindu.sct.model.stext.stext.LocalReaction
+import org.yakindu.sct.model.stext.stext.OperationDefinition
+import org.yakindu.sct.model.stext.stext.ReactionTrigger
+import org.yakindu.sct.model.stext.stext.RegularEventSpec
+import org.yakindu.sct.model.stext.stext.StextFactory
+import org.yakindu.sct.model.stext.stext.TimeEventSpec
+import org.yakindu.sct.model.stext.stext.TimeEventType
+import org.yakindu.sct.model.stext.stext.VariableDefinition
  
 
 
@@ -248,13 +245,13 @@ import org.yakindu.sct.model.sgraph.Exit
 		return r
 	}
 
-	def dispatch Expression raised(OnCycleEvent e) {
-		val r = stext.factory.createPrimitiveValueExpression
-		val BoolLiteral boolLit = stext.factory.createBoolLiteral
-		boolLit.value = true		
-		r.value = boolLit
-		return r
-	}
+//	def dispatch Expression raised(OnCycleEvent e) {
+//		val r = stext.factory.createPrimitiveValueExpression
+//		val BoolLiteral boolLit = stext.factory.createBoolLiteral
+//		boolLit.value = true		
+//		r.value = boolLit
+//		return r
+//	}
 	
 	def dispatch Expression raised(AlwaysEvent e) {
 		val r = stext.factory.createPrimitiveValueExpression
@@ -264,14 +261,6 @@ import org.yakindu.sct.model.sgraph.Exit
 		return r
 	}
 
-	def dispatch Expression raised(DefaultEvent e) {
-		val r = stext.factory.createPrimitiveValueExpression
-		val BoolLiteral boolLit = stext.factory.createBoolLiteral
-		boolLit.value = true		
-		r.value = boolLit
-		return r
-	}
-
 
 	def dispatch ExecutionNode mapped(State s) { s.create }
 	def dispatch ExecutionNode mapped(FinalState s) { s.create }

BIN
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/.BehaviorMapping.java._trace


BIN
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/.SexecElementMapping.java._trace


+ 19 - 16
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/BehaviorMapping.java

@@ -64,13 +64,16 @@ import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
 import org.yakindu.sct.model.sgraph.Vertex;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
+import org.yakindu.sct.model.stext.stext.BoolLiteral;
+import org.yakindu.sct.model.stext.stext.DefaultTrigger;
 import org.yakindu.sct.model.stext.stext.EventSpec;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.LocalReaction;
-import org.yakindu.sct.model.stext.stext.OnCycleEvent;
+import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;
 import org.yakindu.sct.model.stext.stext.RegularEventSpec;
+import org.yakindu.sct.model.stext.stext.StextFactory;
 import org.yakindu.sct.model.stext.stext.TimeEventSpec;
 
 @SuppressWarnings("all")
@@ -695,16 +698,10 @@ public class BehaviorMapping {
                 public Boolean apply(final EventSpec t) {
                   boolean _or = false;
                   boolean _or_1 = false;
-                  boolean _or_2 = false;
                   if ((t instanceof RegularEventSpec)) {
-                    _or_2 = true;
-                  } else {
-                    _or_2 = ((t instanceof RegularEventSpec) || (t instanceof TimeEventSpec));
-                  }
-                  if (_or_2) {
                     _or_1 = true;
                   } else {
-                    _or_1 = (_or_2 || (t instanceof OnCycleEvent));
+                    _or_1 = ((t instanceof RegularEventSpec) || (t instanceof TimeEventSpec));
                   }
                   if (_or_1) {
                     _or = true;
@@ -762,16 +759,10 @@ public class BehaviorMapping {
                 public Boolean apply(final EventSpec t) {
                   boolean _or = false;
                   boolean _or_1 = false;
-                  boolean _or_2 = false;
                   if ((t instanceof RegularEventSpec)) {
-                    _or_2 = true;
-                  } else {
-                    _or_2 = ((t instanceof RegularEventSpec) || (t instanceof TimeEventSpec));
-                  }
-                  if (_or_2) {
                     _or_1 = true;
                   } else {
-                    _or_1 = (_or_2 || (t instanceof OnCycleEvent));
+                    _or_1 = ((t instanceof RegularEventSpec) || (t instanceof TimeEventSpec));
                   }
                   if (_or_1) {
                     _or = true;
@@ -1195,6 +1186,16 @@ public class BehaviorMapping {
     return null;
   }
   
+  protected Statement _buildCondition(final DefaultTrigger t) {
+    StextFactory _factory = this.stext.factory();
+    final PrimitiveValueExpression r = _factory.createPrimitiveValueExpression();
+    StextFactory _factory_1 = this.stext.factory();
+    final BoolLiteral boolLit = _factory_1.createBoolLiteral();
+    boolLit.setValue(true);
+    r.setValue(boolLit);
+    return r;
+  }
+  
   protected Statement _buildCondition(final ReactionTrigger t) {
     Expression _xblockexpression = null;
     {
@@ -1354,7 +1355,9 @@ public class BehaviorMapping {
   }
   
   public Statement buildCondition(final Trigger t) {
-    if (t instanceof ReactionTrigger) {
+    if (t instanceof DefaultTrigger) {
+      return _buildCondition((DefaultTrigger)t);
+    } else if (t instanceof ReactionTrigger) {
       return _buildCondition((ReactionTrigger)t);
     } else if (t != null) {
       return _buildCondition(t);

+ 0 - 26
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/SexecElementMapping.java

@@ -58,7 +58,6 @@ import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Vertex;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.BoolLiteral;
-import org.yakindu.sct.model.stext.stext.DefaultEvent;
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.EventSpec;
@@ -67,7 +66,6 @@ import org.yakindu.sct.model.stext.stext.FeatureCall;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.InternalScope;
 import org.yakindu.sct.model.stext.stext.LocalReaction;
-import org.yakindu.sct.model.stext.stext.OnCycleEvent;
 import org.yakindu.sct.model.stext.stext.OperationDefinition;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;
@@ -771,16 +769,6 @@ public class SexecElementMapping {
     return r;
   }
   
-  protected Expression _raised(final OnCycleEvent e) {
-    StextFactory _factory = this.stext.factory();
-    final PrimitiveValueExpression r = _factory.createPrimitiveValueExpression();
-    StextFactory _factory_1 = this.stext.factory();
-    final BoolLiteral boolLit = _factory_1.createBoolLiteral();
-    boolLit.setValue(true);
-    r.setValue(boolLit);
-    return r;
-  }
-  
   protected Expression _raised(final AlwaysEvent e) {
     StextFactory _factory = this.stext.factory();
     final PrimitiveValueExpression r = _factory.createPrimitiveValueExpression();
@@ -791,16 +779,6 @@ public class SexecElementMapping {
     return r;
   }
   
-  protected Expression _raised(final DefaultEvent e) {
-    StextFactory _factory = this.stext.factory();
-    final PrimitiveValueExpression r = _factory.createPrimitiveValueExpression();
-    StextFactory _factory_1 = this.stext.factory();
-    final BoolLiteral boolLit = _factory_1.createBoolLiteral();
-    boolLit.setValue(true);
-    r.setValue(boolLit);
-    return r;
-  }
-  
   protected ExecutionNode _mapped(final State s) {
     ExecutionState _create = this.create(s);
     return _create;
@@ -848,10 +826,6 @@ public class SexecElementMapping {
   public Expression raised(final EventSpec e) {
     if (e instanceof AlwaysEvent) {
       return _raised((AlwaysEvent)e);
-    } else if (e instanceof DefaultEvent) {
-      return _raised((DefaultEvent)e);
-    } else if (e instanceof OnCycleEvent) {
-      return _raised((OnCycleEvent)e);
     } else if (e instanceof RegularEventSpec) {
       return _raised((RegularEventSpec)e);
     } else if (e instanceof TimeEventSpec) {

+ 72 - 0
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/StateVectorBuilder.smap

@@ -0,0 +1,72 @@
+SMAP
+StateVectorBuilder.java
+Xtend
+*S Xtend
+*F
++ 0 StateVectorBuilder.xtend
+src/org/yakindu/sct/model/sexec/transformation/StateVectorBuilder.xtend
+*L
+24:45
+25:46,4
+26:50,2
+27:52,2
+28:54
+29:55,3
+30:58,2
+31:60,2
+26:62
+25:63
+34:64,3
+35:67,3
+36:70,2
+37:72,3
+34:75
+42:79
+43:80,2
+44:82,3
+43:85
+48:86,3
+49:89,2
+50:91,2
+55:99,9
+54:108
+60:115,5
+61:120
+62:121,7
+60:128,6
+64:134
+65:135,3
+66:138,2
+67:140,2
+69:142
+73:149
+78:156
+79:157,4
+80:161,2
+81:163,4
+80:167
+79:168
+83:169
+79:170
+85:171
+86:172,3
+87:175,2
+88:177,2
+90:179
+96:186
+97:187,3
+98:190,2
+99:192,2
+101:194
+105:198
+109:202,2
+108:204
+113:208,3
+112:211
+94:215,2
+77:217,2
+73:219,2
+112:228,2
+108:230,2
+104:232,2
+*E

+ 34 - 0
plugins/org.yakindu.sct.model.sexec/xtend-gen/org/yakindu/sct/model/sexec/transformation/TraceExtensions.smap

@@ -0,0 +1,34 @@
+SMAP
+TraceExtensions.java
+Xtend
+*S Xtend
+*F
++ 0 TraceExtensions.xtend
+src/org/yakindu/sct/model/sexec/transformation/TraceExtensions.xtend
+*L
+22:33
+25:37,2
+26:39,2
+27:41
+25:42,3
+31:48,2
+32:50,2
+33:52
+31:53,3
+38:59,2
+39:61,2
+40:63
+38:64,3
+44:70,2
+45:72,2
+46:74
+44:75,3
+51:81,3
+52:84,3
+51:87,2
+50:89
+57:93,3
+58:96,2
+57:98,2
+56:100
+*E

BIN
plugins/org.yakindu.sct.model.stext.edit/icons/full/obj16/DefaultTrigger.gif


+ 1 - 0
plugins/org.yakindu.sct.model.stext.edit/plugin.properties

@@ -226,3 +226,4 @@ _UI_ElementReferenceExpression_operationCall_feature = Operation Call
 _UI_ElementReferenceExpression_args_feature = Args
 _UI_ParenthesizedExpression_type = Parenthesized Expression
 _UI_ParenthesizedExpression_expression_feature = Expression
+_UI_DefaultTrigger_type = Default Trigger

+ 129 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/DefaultTriggerItemProvider.java

@@ -0,0 +1,129 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.yakindu.sct.model.sgraph.provider.TriggerItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.stext.stext.DefaultTrigger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DefaultTriggerItemProvider
+  extends TriggerItemProvider
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public DefaultTriggerItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This returns DefaultTrigger.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/DefaultTrigger"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_DefaultTrigger_type");
+  }
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return STextEditPlugin.INSTANCE;
+  }
+
+}

+ 5 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/LocalReactionItemProvider.java

@@ -172,6 +172,11 @@ public class LocalReactionItemProvider
         (SGraphPackage.Literals.REACTION__TRIGGER,
          StextFactory.eINSTANCE.createReactionTrigger()));
 
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__TRIGGER,
+         StextFactory.eINSTANCE.createDefaultTrigger()));
+
     newChildDescriptors.add
       (createChildParameter
         (SGraphPackage.Literals.REACTION__EFFECT,

+ 0 - 10
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/ReactionTriggerItemProvider.java

@@ -192,21 +192,11 @@ public class ReactionTriggerItemProvider
         (StextPackage.Literals.REACTION_TRIGGER__TRIGGERS,
          StextFactory.eINSTANCE.createExitEvent()));
 
-    newChildDescriptors.add
-      (createChildParameter
-        (StextPackage.Literals.REACTION_TRIGGER__TRIGGERS,
-         StextFactory.eINSTANCE.createOnCycleEvent()));
-
     newChildDescriptors.add
       (createChildParameter
         (StextPackage.Literals.REACTION_TRIGGER__TRIGGERS,
          StextFactory.eINSTANCE.createAlwaysEvent()));
 
-    newChildDescriptors.add
-      (createChildParameter
-        (StextPackage.Literals.REACTION_TRIGGER__TRIGGERS,
-         StextFactory.eINSTANCE.createDefaultEvent()));
-
     newChildDescriptors.add
       (createChildParameter
         (StextPackage.Literals.REACTION_TRIGGER__GUARD_EXPRESSION,

+ 26 - 52
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/StextItemProviderAdapterFactory.java

@@ -623,31 +623,6 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     return exitEventItemProvider;
   }
 
-  /**
-   * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.OnCycleEvent} instances.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  protected OnCycleEventItemProvider onCycleEventItemProvider;
-
-  /**
-   * This creates an adapter for a {@link org.yakindu.sct.model.stext.stext.OnCycleEvent}.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Adapter createOnCycleEventAdapter()
-  {
-    if (onCycleEventItemProvider == null)
-    {
-      onCycleEventItemProvider = new OnCycleEventItemProvider(this);
-    }
-
-    return onCycleEventItemProvider;
-  }
-
   /**
    * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.AlwaysEvent} instances.
    * <!-- begin-user-doc -->
@@ -673,31 +648,6 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     return alwaysEventItemProvider;
   }
 
-  /**
-   * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.DefaultEvent} instances.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  protected DefaultEventItemProvider defaultEventItemProvider;
-
-  /**
-   * This creates an adapter for a {@link org.yakindu.sct.model.stext.stext.DefaultEvent}.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Adapter createDefaultEventAdapter()
-  {
-    if (defaultEventItemProvider == null)
-    {
-      defaultEventItemProvider = new DefaultEventItemProvider(this);
-    }
-
-    return defaultEventItemProvider;
-  }
-
   /**
    * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.Expression} instances.
    * <!-- begin-user-doc -->
@@ -923,6 +873,31 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     return reactionTriggerItemProvider;
   }
 
+  /**
+   * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.DefaultTrigger} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected DefaultTriggerItemProvider defaultTriggerItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.yakindu.sct.model.stext.stext.DefaultTrigger}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createDefaultTriggerAdapter()
+  {
+    if (defaultTriggerItemProvider == null)
+    {
+      defaultTriggerItemProvider = new DefaultTriggerItemProvider(this);
+    }
+
+    return defaultTriggerItemProvider;
+  }
+
   /**
    * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.ReactionEffect} instances.
    * <!-- begin-user-doc -->
@@ -1581,9 +1556,7 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     if (builtinEventSpecItemProvider != null) builtinEventSpecItemProvider.dispose();
     if (entryEventItemProvider != null) entryEventItemProvider.dispose();
     if (exitEventItemProvider != null) exitEventItemProvider.dispose();
-    if (onCycleEventItemProvider != null) onCycleEventItemProvider.dispose();
     if (alwaysEventItemProvider != null) alwaysEventItemProvider.dispose();
-    if (defaultEventItemProvider != null) defaultEventItemProvider.dispose();
     if (expressionItemProvider != null) expressionItemProvider.dispose();
     if (literalItemProvider != null) literalItemProvider.dispose();
     if (boolLiteralItemProvider != null) boolLiteralItemProvider.dispose();
@@ -1593,6 +1566,7 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     if (stringLiteralItemProvider != null) stringLiteralItemProvider.dispose();
     if (simpleScopeItemProvider != null) simpleScopeItemProvider.dispose();
     if (reactionTriggerItemProvider != null) reactionTriggerItemProvider.dispose();
+    if (defaultTriggerItemProvider != null) defaultTriggerItemProvider.dispose();
     if (reactionEffectItemProvider != null) reactionEffectItemProvider.dispose();
     if (eventRaisingExpressionItemProvider != null) eventRaisingExpressionItemProvider.dispose();
     if (assignmentExpressionItemProvider != null) assignmentExpressionItemProvider.dispose();

+ 5 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/TransitionReactionItemProvider.java

@@ -122,6 +122,11 @@ public class TransitionReactionItemProvider
         (SGraphPackage.Literals.REACTION__TRIGGER,
          StextFactory.eINSTANCE.createReactionTrigger()));
 
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__TRIGGER,
+         StextFactory.eINSTANCE.createDefaultTrigger()));
+
     newChildDescriptors.add
       (createChildParameter
         (SGraphPackage.Literals.REACTION__EFFECT,

+ 9 - 6
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java

@@ -324,6 +324,9 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_Parameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_XID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_FQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -336,9 +339,15 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_TransitionReaction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_StextTrigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_ReactionTrigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_DefaultTrigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_ReactionEffect(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -363,15 +372,9 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_ExitEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_OnCycleEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_AlwaysEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_DefaultEvent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_EventRaisingExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}

+ 5 - 3
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java

@@ -43,13 +43,16 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getInterfaceScopeAccess().getDeclarationsAlternatives_4_0(), "rule__InterfaceScope__DeclarationsAlternatives_4_0");
 					put(grammarAccess.getInternalScopeAccess().getDeclarationsAlternatives_3_0(), "rule__InternalScope__DeclarationsAlternatives_3_0");
 					put(grammarAccess.getDeclarationAccess().getAlternatives(), "rule__Declaration__Alternatives");
+					put(grammarAccess.getXIDAccess().getAlternatives(), "rule__XID__Alternatives");
 					put(grammarAccess.getReactionAccess().getAlternatives(), "rule__Reaction__Alternatives");
+					put(grammarAccess.getStextTriggerAccess().getAlternatives(), "rule__StextTrigger__Alternatives");
 					put(grammarAccess.getReactionTriggerAccess().getAlternatives_1(), "rule__ReactionTrigger__Alternatives_1");
+					put(grammarAccess.getDefaultTriggerAccess().getAlternatives_1(), "rule__DefaultTrigger__Alternatives_1");
 					put(grammarAccess.getReactionEffectAccess().getActionsAlternatives_1_0(), "rule__ReactionEffect__ActionsAlternatives_1_0");
 					put(grammarAccess.getReactionEffectAccess().getActionsAlternatives_2_1_0(), "rule__ReactionEffect__ActionsAlternatives_2_1_0");
 					put(grammarAccess.getEventSpecAccess().getAlternatives(), "rule__EventSpec__Alternatives");
 					put(grammarAccess.getBuiltinEventSpecAccess().getAlternatives(), "rule__BuiltinEventSpec__Alternatives");
-					put(grammarAccess.getDefaultEventAccess().getAlternatives_1(), "rule__DefaultEvent__Alternatives_1");
+					put(grammarAccess.getAlwaysEventAccess().getAlternatives_1(), "rule__AlwaysEvent__Alternatives_1");
 					put(grammarAccess.getLogicalNotExpressionAccess().getAlternatives(), "rule__LogicalNotExpression__Alternatives");
 					put(grammarAccess.getNumericalUnaryExpressionAccess().getAlternatives(), "rule__NumericalUnaryExpression__Alternatives");
 					put(grammarAccess.getPrimaryExpressionAccess().getAlternatives(), "rule__PrimaryExpression__Alternatives");
@@ -92,14 +95,13 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getReactionTriggerAccess().getGroup_1_0_1(), "rule__ReactionTrigger__Group_1_0_1__0");
 					put(grammarAccess.getReactionTriggerAccess().getGroup_1_0_2(), "rule__ReactionTrigger__Group_1_0_2__0");
 					put(grammarAccess.getReactionTriggerAccess().getGroup_1_1(), "rule__ReactionTrigger__Group_1_1__0");
+					put(grammarAccess.getDefaultTriggerAccess().getGroup(), "rule__DefaultTrigger__Group__0");
 					put(grammarAccess.getReactionEffectAccess().getGroup(), "rule__ReactionEffect__Group__0");
 					put(grammarAccess.getReactionEffectAccess().getGroup_2(), "rule__ReactionEffect__Group_2__0");
 					put(grammarAccess.getTimeEventSpecAccess().getGroup(), "rule__TimeEventSpec__Group__0");
 					put(grammarAccess.getEntryEventAccess().getGroup(), "rule__EntryEvent__Group__0");
 					put(grammarAccess.getExitEventAccess().getGroup(), "rule__ExitEvent__Group__0");
-					put(grammarAccess.getOnCycleEventAccess().getGroup(), "rule__OnCycleEvent__Group__0");
 					put(grammarAccess.getAlwaysEventAccess().getGroup(), "rule__AlwaysEvent__Group__0");
-					put(grammarAccess.getDefaultEventAccess().getGroup(), "rule__DefaultEvent__Group__0");
 					put(grammarAccess.getEventRaisingExpressionAccess().getGroup(), "rule__EventRaisingExpression__Group__0");
 					put(grammarAccess.getEventRaisingExpressionAccess().getGroup_3(), "rule__EventRaisingExpression__Group_3__0");
 					put(grammarAccess.getAssignmentExpressionAccess().getGroup(), "rule__AssignmentExpression__Group__0");

+ 401 - 228
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g

@@ -603,6 +603,34 @@ finally {
 
 
 
+// Entry rule entryRuleXID
+entryRuleXID 
+:
+{ before(grammarAccess.getXIDRule()); }
+	 ruleXID
+{ after(grammarAccess.getXIDRule()); } 
+	 EOF 
+;
+
+// Rule XID
+ruleXID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXIDAccess().getAlternatives()); }
+(rule__XID__Alternatives)
+{ after(grammarAccess.getXIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
 // Entry rule entryRuleFQN
 entryRuleFQN 
 :
@@ -689,6 +717,34 @@ finally {
 
 
 
+// Entry rule entryRuleStextTrigger
+entryRuleStextTrigger 
+:
+{ before(grammarAccess.getStextTriggerRule()); }
+	 ruleStextTrigger
+{ after(grammarAccess.getStextTriggerRule()); } 
+	 EOF 
+;
+
+// Rule StextTrigger
+ruleStextTrigger
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStextTriggerAccess().getAlternatives()); }
+(rule__StextTrigger__Alternatives)
+{ after(grammarAccess.getStextTriggerAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
 // Entry rule entryRuleReactionTrigger
 entryRuleReactionTrigger 
 :
@@ -717,6 +773,34 @@ finally {
 
 
 
+// Entry rule entryRuleDefaultTrigger
+entryRuleDefaultTrigger 
+:
+{ before(grammarAccess.getDefaultTriggerRule()); }
+	 ruleDefaultTrigger
+{ after(grammarAccess.getDefaultTriggerRule()); } 
+	 EOF 
+;
+
+// Rule DefaultTrigger
+ruleDefaultTrigger
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefaultTriggerAccess().getGroup()); }
+(rule__DefaultTrigger__Group__0)
+{ after(grammarAccess.getDefaultTriggerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
 // Entry rule entryRuleReactionEffect
 entryRuleReactionEffect 
 :
@@ -913,34 +997,6 @@ finally {
 
 
 
-// Entry rule entryRuleOnCycleEvent
-entryRuleOnCycleEvent 
-:
-{ before(grammarAccess.getOnCycleEventRule()); }
-	 ruleOnCycleEvent
-{ after(grammarAccess.getOnCycleEventRule()); } 
-	 EOF 
-;
-
-// Rule OnCycleEvent
-ruleOnCycleEvent
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getOnCycleEventAccess().getGroup()); }
-(rule__OnCycleEvent__Group__0)
-{ after(grammarAccess.getOnCycleEventAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
 // Entry rule entryRuleAlwaysEvent
 entryRuleAlwaysEvent 
 :
@@ -969,34 +1025,6 @@ finally {
 
 
 
-// Entry rule entryRuleDefaultEvent
-entryRuleDefaultEvent 
-:
-{ before(grammarAccess.getDefaultEventRule()); }
-	 ruleDefaultEvent
-{ after(grammarAccess.getDefaultEventRule()); } 
-	 EOF 
-;
-
-// Rule DefaultEvent
-ruleDefaultEvent
-    @init {
-		int stackSize = keepStackSize();
-    }
-	:
-(
-{ before(grammarAccess.getDefaultEventAccess().getGroup()); }
-(rule__DefaultEvent__Group__0)
-{ after(grammarAccess.getDefaultEventAccess().getGroup()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
 // Entry rule entryRuleEventRaisingExpression
 entryRuleEventRaisingExpression 
 :
@@ -2069,6 +2097,204 @@ finally {
 }
 
 
+rule__XID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXIDAccess().getIDTerminalRuleCall_0()); }
+	RULE_ID
+{ after(grammarAccess.getXIDAccess().getIDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getNamespaceKeyword_1()); }
+
+	'namespace' 
+
+{ after(grammarAccess.getXIDAccess().getNamespaceKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getInterfaceKeyword_2()); }
+
+	'interface' 
+
+{ after(grammarAccess.getXIDAccess().getInterfaceKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getInternalKeyword_3()); }
+
+	'internal' 
+
+{ after(grammarAccess.getXIDAccess().getInternalKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getEventKeyword_4()); }
+
+	'event' 
+
+{ after(grammarAccess.getXIDAccess().getEventKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getLocalKeyword_5()); }
+
+	'local' 
+
+{ after(grammarAccess.getXIDAccess().getLocalKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getInKeyword_6()); }
+
+	'in' 
+
+{ after(grammarAccess.getXIDAccess().getInKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getOutKeyword_7()); }
+
+	'out' 
+
+{ after(grammarAccess.getXIDAccess().getOutKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getVarKeyword_8()); }
+
+	'var' 
+
+{ after(grammarAccess.getXIDAccess().getVarKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getReadonlyKeyword_9()); }
+
+	'readonly' 
+
+{ after(grammarAccess.getXIDAccess().getReadonlyKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getExternalKeyword_10()); }
+
+	'external' 
+
+{ after(grammarAccess.getXIDAccess().getExternalKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getOperationKeyword_11()); }
+
+	'operation' 
+
+{ after(grammarAccess.getXIDAccess().getOperationKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getDefaultKeyword_12()); }
+
+	'default' 
+
+{ after(grammarAccess.getXIDAccess().getDefaultKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getElseKeyword_13()); }
+
+	'else' 
+
+{ after(grammarAccess.getXIDAccess().getElseKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getEntryKeyword_14()); }
+
+	'entry' 
+
+{ after(grammarAccess.getXIDAccess().getEntryKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getExitKeyword_15()); }
+
+	'exit' 
+
+{ after(grammarAccess.getXIDAccess().getExitKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getAlwaysKeyword_16()); }
+
+	'always' 
+
+{ after(grammarAccess.getXIDAccess().getAlwaysKeyword_16()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getOncycleKeyword_17()); }
+
+	'oncycle' 
+
+{ after(grammarAccess.getXIDAccess().getOncycleKeyword_17()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getRaiseKeyword_18()); }
+
+	'raise' 
+
+{ after(grammarAccess.getXIDAccess().getRaiseKeyword_18()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getValueofKeyword_19()); }
+
+	'valueof' 
+
+{ after(grammarAccess.getXIDAccess().getValueofKeyword_19()); }
+)
+
+    |(
+{ before(grammarAccess.getXIDAccess().getActiveKeyword_20()); }
+
+	'active' 
+
+{ after(grammarAccess.getXIDAccess().getActiveKeyword_20()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StextTrigger__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0()); }
+	ruleReactionTrigger
+{ after(grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1()); }
+	ruleDefaultTrigger
+{ after(grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
 
 rule__ReactionTrigger__Alternatives_1
     @init {
@@ -2092,6 +2318,32 @@ finally {
 	restoreStackSize(stackSize);
 }
 
+rule__DefaultTrigger__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0()); }
+
+	'default' 
+
+{ after(grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDefaultTriggerAccess().getElseKeyword_1_1()); }
+
+	'else' 
+
+{ after(grammarAccess.getDefaultTriggerAccess().getElseKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__ReactionEffect__ActionsAlternatives_1_0
     @init {
 		int stackSize = keepStackSize();
@@ -2182,21 +2434,9 @@ rule__BuiltinEventSpec__Alternatives
 )
 
     |(
-{ before(grammarAccess.getBuiltinEventSpecAccess().getOnCycleEventParserRuleCall_2()); }
-	ruleOnCycleEvent
-{ after(grammarAccess.getBuiltinEventSpecAccess().getOnCycleEventParserRuleCall_2()); }
-)
-
-    |(
-{ before(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_3()); }
+{ before(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2()); }
 	ruleAlwaysEvent
-{ after(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_3()); }
-)
-
-    |(
-{ before(grammarAccess.getBuiltinEventSpecAccess().getDefaultEventParserRuleCall_4()); }
-	ruleDefaultEvent
-{ after(grammarAccess.getBuiltinEventSpecAccess().getDefaultEventParserRuleCall_4()); }
+{ after(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2()); }
 )
 
 ;
@@ -2204,25 +2444,25 @@ finally {
 	restoreStackSize(stackSize);
 }
 
-rule__DefaultEvent__Alternatives_1
+rule__AlwaysEvent__Alternatives_1
     @init {
 		int stackSize = keepStackSize();
     }
 :
 (
-{ before(grammarAccess.getDefaultEventAccess().getDefaultKeyword_1_0()); }
+{ before(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0()); }
 
-	'default' 
+	'always' 
 
-{ after(grammarAccess.getDefaultEventAccess().getDefaultKeyword_1_0()); }
+{ after(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0()); }
 )
 
     |(
-{ before(grammarAccess.getDefaultEventAccess().getElseKeyword_1_1()); }
+{ before(grammarAccess.getAlwaysEventAccess().getOncycleKeyword_1_1()); }
 
-	'else' 
+	'oncycle' 
 
-{ after(grammarAccess.getDefaultEventAccess().getElseKeyword_1_1()); }
+{ after(grammarAccess.getAlwaysEventAccess().getOncycleKeyword_1_1()); }
 )
 
 ;
@@ -4392,9 +4632,9 @@ rule__FQN__Group__0__Impl
     }
 :
 (
-{ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); }
-	RULE_ID
-{ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); }
+{ before(grammarAccess.getFQNAccess().getXIDParserRuleCall_0()); }
+	ruleXID
+{ after(grammarAccess.getFQNAccess().getXIDParserRuleCall_0()); }
 )
 
 ;
@@ -4483,9 +4723,9 @@ rule__FQN__Group_1__1__Impl
     }
 :
 (
-{ before(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); }
-	RULE_ID
-{ after(grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); }
+{ before(grammarAccess.getFQNAccess().getXIDParserRuleCall_1_1()); }
+	ruleXID
+{ after(grammarAccess.getFQNAccess().getXIDParserRuleCall_1_1()); }
 )
 
 ;
@@ -5219,6 +5459,69 @@ finally {
 
 
 
+rule__DefaultTrigger__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefaultTrigger__Group__0__Impl
+	rule__DefaultTrigger__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefaultTrigger__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefaultTrigger__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefaultTrigger__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefaultTrigger__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefaultTriggerAccess().getAlternatives_1()); }
+(rule__DefaultTrigger__Alternatives_1)
+{ after(grammarAccess.getDefaultTriggerAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
 rule__ReactionEffect__Group__0
     @init {
 		int stackSize = keepStackSize();
@@ -5598,71 +5901,6 @@ finally {
 
 
 
-rule__OnCycleEvent__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__OnCycleEvent__Group__0__Impl
-	rule__OnCycleEvent__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OnCycleEvent__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0()); }
-(
-
-)
-{ after(grammarAccess.getOnCycleEventAccess().getOnCycleEventAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__OnCycleEvent__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__OnCycleEvent__Group__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__OnCycleEvent__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getOnCycleEventAccess().getOncycleKeyword_1()); }
-
-	'oncycle' 
-
-{ after(grammarAccess.getOnCycleEventAccess().getOncycleKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
 rule__AlwaysEvent__Group__0
     @init {
 		int stackSize = keepStackSize();
@@ -5711,74 +5949,9 @@ rule__AlwaysEvent__Group__1__Impl
     }
 :
 (
-{ before(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1()); }
-
-	'always' 
-
-{ after(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-
-
-
-
-rule__DefaultEvent__Group__0
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__DefaultEvent__Group__0__Impl
-	rule__DefaultEvent__Group__1
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__DefaultEvent__Group__0__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getDefaultEventAccess().getDefaultEventAction_0()); }
-(
-
-)
-{ after(grammarAccess.getDefaultEventAccess().getDefaultEventAction_0()); }
-)
-
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-
-rule__DefaultEvent__Group__1
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-	rule__DefaultEvent__Group__1__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__DefaultEvent__Group__1__Impl
-    @init {
-		int stackSize = keepStackSize();
-    }
-:
-(
-{ before(grammarAccess.getDefaultEventAccess().getAlternatives_1()); }
-(rule__DefaultEvent__Alternatives_1)
-{ after(grammarAccess.getDefaultEventAccess().getAlternatives_1()); }
+{ before(grammarAccess.getAlwaysEventAccess().getAlternatives_1()); }
+(rule__AlwaysEvent__Alternatives_1)
+{ after(grammarAccess.getAlwaysEventAccess().getAlternatives_1()); }
 )
 
 ;
@@ -9739,8 +9912,8 @@ rule__InterfaceScope__NameAssignment_2
     }
 :
 (
-{ before(grammarAccess.getInterfaceScopeAccess().getNameIDTerminalRuleCall_2_0()); }
-	RULE_ID{ after(grammarAccess.getInterfaceScopeAccess().getNameIDTerminalRuleCall_2_0()); }
+{ before(grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0()); }
+	ruleXID{ after(grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0()); }
 )
 
 ;
@@ -9801,8 +9974,8 @@ rule__EventDefinition__NameAssignment_2
     }
 :
 (
-{ before(grammarAccess.getEventDefinitionAccess().getNameIDTerminalRuleCall_2_0()); }
-	RULE_ID{ after(grammarAccess.getEventDefinitionAccess().getNameIDTerminalRuleCall_2_0()); }
+{ before(grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
+	ruleXID{ after(grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
 )
 
 ;
@@ -9881,8 +10054,8 @@ rule__VariableDefinition__NameAssignment_3
     }
 :
 (
-{ before(grammarAccess.getVariableDefinitionAccess().getNameIDTerminalRuleCall_3_0()); }
-	RULE_ID{ after(grammarAccess.getVariableDefinitionAccess().getNameIDTerminalRuleCall_3_0()); }
+{ before(grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0()); }
+	ruleXID{ after(grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0()); }
 )
 
 ;
@@ -9930,8 +10103,8 @@ rule__OperationDefinition__NameAssignment_2
     }
 :
 (
-{ before(grammarAccess.getOperationDefinitionAccess().getNameIDTerminalRuleCall_2_0()); }
-	RULE_ID{ after(grammarAccess.getOperationDefinitionAccess().getNameIDTerminalRuleCall_2_0()); }
+{ before(grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
+	ruleXID{ after(grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
 )
 
 ;
@@ -9994,8 +10167,8 @@ rule__Parameter__NameAssignment_0
     }
 :
 (
-{ before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); }
-	RULE_ID{ after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); }
+{ before(grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0()); }
+	ruleXID{ after(grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0()); }
 )
 
 ;
@@ -10058,8 +10231,8 @@ rule__TransitionReaction__TriggerAssignment_1
     }
 :
 (
-{ before(grammarAccess.getTransitionReactionAccess().getTriggerReactionTriggerParserRuleCall_1_0()); }
-	ruleReactionTrigger{ after(grammarAccess.getTransitionReactionAccess().getTriggerReactionTriggerParserRuleCall_1_0()); }
+{ before(grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0()); }
+	ruleStextTrigger{ after(grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0()); }
 )
 
 ;

+ 69 - 69
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.tokens

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

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 471 - 477
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 7275 - 6203
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java


+ 2 - 2
plugins/org.yakindu.sct.model.stext.ui/src/org/yakindu/sct/model/stext/ui/contentassist/STextProposalProvider.java

@@ -94,8 +94,8 @@ public class STextProposalProvider extends AbstractSTextProposalProvider {
 					.getGroup().eContents()));
 			suppressKeywords.addAll(getKeywords(grammarAccess.getAlwaysEventAccess()
 					.getGroup().eContents()));
-			suppressKeywords.addAll(getKeywords(grammarAccess.getOnCycleEventAccess()
-					.getGroup().eContents()));
+//			suppressKeywords.addAll(getKeywords(grammarAccess.getOnCycleEventAccess()
+//					.getGroup().eContents()));
 			suppressKeywords.addAll(getKeywords(grammarAccess.getTimeEventTypeAccess()
 					.getAlternatives().eContents()));
 			suppressKeywords.add(grammarAccess.getDirectionAccess()

+ 14 - 50
test-plugins/org.yakindu.sct.model.sexec.test/src/org/yakindu/sct/model/sexec/transformation/test/ModelSequencerStateReactionTest.java

@@ -2,7 +2,6 @@ package org.yakindu.sct.model.sexec.transformation.test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.yakindu.sct.model.sexec.transformation.test.SCTTestUtil.TYPE_INTEGER;
@@ -11,7 +10,19 @@ import static org.yakindu.sct.model.sgraph.test.util.SgraphTestFactory._createRe
 import static org.yakindu.sct.model.sgraph.test.util.SgraphTestFactory._createState;
 import static org.yakindu.sct.model.sgraph.test.util.SgraphTestFactory._createStatechart;
 import static org.yakindu.sct.model.sgraph.test.util.SgraphTestFactory._createTransition;
-import static org.yakindu.sct.model.stext.test.util.StextTestFactory.*;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createAlwaysEventSpec;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createEntryAction;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createEventDefinition;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createExitAction;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createInterfaceScope;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createLocalReaction;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createReactionTrigger;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createRegularEventSpec;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createTimeEventSpec;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createTimeTriggeredReaction;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createValue;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createVariableAssignment;
+import static org.yakindu.sct.model.stext.test.util.StextTestFactory._createVariableDefinition;
 
 import org.junit.Test;
 import org.yakindu.base.base.NamedElement;
@@ -98,22 +109,6 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 				((LogicalOrExpression) s).getRightOperand());
 	}
 
-	/**
-	 * The 'onclycle' trigger event will be converted to a simple 'true'
-	 * condition.
-	 */
-	@Test
-	public void testOnCycleTriggerCondition() {
-
-		ReactionTrigger tr1 = _createReactionTrigger(null);
-		_createOncycleEventSpec(tr1);
-
-		Statement s = behaviorMapping.buildCondition(tr1);
-
-		assertNotNull(s);
-		assertTrue(s instanceof PrimitiveValueExpression);
-		assertBoolLiteral(true, ((PrimitiveValueExpression) s).getValue());
-	}
 
 	public static void assertBoolLiteral(boolean value, Literal lit) {
 		assertTrue("Literal is no BoolLiteral", lit instanceof BoolLiteral);
@@ -133,7 +128,7 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 	public void testAlwaysTriggerCondition() {
 
 		ReactionTrigger tr1 = _createReactionTrigger(null);
-		_createOncycleEventSpec(tr1);
+		_createAlwaysEventSpec(tr1);
 
 		Statement s = behaviorMapping.buildCondition(tr1);
 
@@ -513,37 +508,6 @@ public class ModelSequencerStateReactionTest extends ModelSequencerTest {
 
 	}
 
-	/**
-	 * Local reactions must be created for behavior with 'oncycle' trigger
-	 */
-	@Test
-	public void testOncycleLocalReaction() {
-
-		Statechart sc = _createStatechart("test");
-		Scope scope = _createInterfaceScope("interface", sc);
-		VariableDefinition v1 = _createVariableDefinition("v1", TYPE_INTEGER,
-				scope);
-		Region r = _createRegion("main", sc);
-		State s = _createState("s", r);
-
-		LocalReaction timeTriggeredReaction = _createLocalReaction(s,
-				StextFactory.eINSTANCE.createOnCycleEvent());
-		AssignmentExpression assign = _createVariableAssignment(v1,
-				AssignmentOperator.ASSIGN, _createValue(42),
-				(ReactionEffect) timeTriggeredReaction.getEffect());
-
-		ExecutionFlow flow = sequencer.transform(sc);
-
-		ExecutionState _s = flow.getStates().get(0);
-
-		// assert that a local reaction is created
-		Reaction reaction = _s.getReactions().get(0);
-		PrimitiveValueExpression pve = (PrimitiveValueExpression) reaction
-				.getCheck().getCondition();
-		assertBoolLiteral(true, pve.getValue());
-
-	}
-
 	/**
 	 * Local reactions must be created for behavior with 'always' trigger
 	 */

+ 6 - 7
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/util/StextTestFactory.java

@@ -32,7 +32,6 @@ import org.yakindu.sct.model.stext.stext.IntLiteral;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.InternalScope;
 import org.yakindu.sct.model.stext.stext.LocalReaction;
-import org.yakindu.sct.model.stext.stext.OnCycleEvent;
 import org.yakindu.sct.model.stext.stext.OperationDefinition;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
@@ -111,12 +110,12 @@ public class StextTestFactory extends StextFactoryImpl {
 		return referenceExpression;
 	}
 
-	public static OnCycleEvent _createOncycleEventSpec(ReactionTrigger rt) {
-		OnCycleEvent oce = StextFactory.eINSTANCE.createOnCycleEvent();
-		if (rt != null)
-			rt.getTriggers().add(oce);
-		return oce;
-	}
+//	public static OnCycleEvent _createOncycleEventSpec(ReactionTrigger rt) {
+//		OnCycleEvent oce = StextFactory.eINSTANCE.createOnCycleEvent();
+//		if (rt != null)
+//			rt.getTriggers().add(oce);
+//		return oce;
+//	}
 
 	public static AlwaysEvent _createAlwaysEventSpec(ReactionTrigger rt) {
 		AlwaysEvent always = StextFactory.eINSTANCE.createAlwaysEvent();