Bläddra i källkod

Completed editing and execution support for bitwise operations, conditionals, operator assignments and hex literals.

terfloth@itemis.de 14 år sedan
förälder
incheckning
e6999cea92
49 ändrade filer med 25531 tillägg och 11815 borttagningar
  1. 48 0
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java
  2. 20 0
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java
  3. 1374 112
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g
  4. 94 61
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.tokens
  5. 1195 657
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java
  6. 12022 8214
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java
  7. 55 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore
  8. 45 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.genmodel
  9. 243 51
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi
  10. 1468 239
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java
  11. 465 23
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.g
  12. 93 60
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.tokens
  13. 1140 602
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java
  14. 2453 983
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java
  15. 466 42
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java
  16. 30 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Assignment.java
  17. 469 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/AssignmentOperator.java
  18. 80 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseAndExpression.java
  19. 80 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseOrExpression.java
  20. 80 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseXorExpression.java
  21. 107 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ConditionalExpression.java
  22. 33 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/LocalReaction.java
  23. 0 111
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Reaction.java
  24. 110 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ShiftExpression.java
  25. 226 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ShiftOperator.java
  26. 45 9
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextFactory.java
  27. 696 162
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java
  28. 33 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/TransitionReaction.java
  29. 72 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AssignmentImpl.java
  30. 267 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseAndExpressionImpl.java
  31. 267 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseOrExpressionImpl.java
  32. 267 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseXorExpressionImpl.java
  33. 338 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ConditionalExpressionImpl.java
  34. 6 7
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java
  35. 0 342
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionImpl.java
  36. 339 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ShiftExpressionImpl.java
  37. 112 12
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java
  38. 341 49
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java
  39. 6 7
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/TransitionReactionImpl.java
  40. 121 20
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java
  41. 142 23
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java
  42. 1 1
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/ExecutionScope.java
  43. 1 1
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/sgraph/ExecutionScopeAdapter.java
  44. 1 1
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/sgraph/RTStatechart.java
  45. 1 1
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/RTScope.java
  46. 4 2
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/Raise.java
  47. 32 3
      plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/builder/STextBuilder.java
  48. 39 4
      test-plugins/org.yakindu.sct.simulation.runtime.test/src/org/yakindu/sct/simulation/runtime/stext/builder/test/STextBuilderTest.java
  49. 4 4
      test-plugins/org.yakindu.sct.simulation.runtime.test/src/org/yakindu/sct/simulation/runtime/stext/test/ExpressionsTest.java

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

@@ -149,6 +149,9 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void completeAssignment_VarRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeAssignment_Operator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeAssignment_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -158,6 +161,12 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void completeEventRaising_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeConditionalExpression_TrueCase(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeConditionalExpression_FalseCase(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeLogicalOrExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -167,12 +176,27 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void completeLogicalNotExpression_Operand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeBitwiseXorExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBitwiseOrExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBitwiseAndExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeLogicalRelationExpression_Operator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeLogicalRelationExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeShiftExpression_Operator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShiftExpression_RightOperand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeNumericalAddSubtractExpression_Operator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -330,12 +354,18 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_Assignment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_AssignmentOperator(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_EventRaising(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_Expression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_ConditionalExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_LogicalOrExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -345,9 +375,24 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_LogicalNotExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_BitwiseXorExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BitwiseOrExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BitwiseAndExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_LogicalRelationExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_ShiftExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ShiftOperator(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_NumericalAddSubtractExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -396,6 +441,9 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_BOOL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_HEX(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_FLOAT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}

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

@@ -53,6 +53,8 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getValueExpressionAccess().getAlternatives(), "rule__ValueExpression__Alternatives");
 					put(grammarAccess.getLiteralAccess().getAlternatives(), "rule__Literal__Alternatives");
 					put(grammarAccess.getDirectionAccess().getAlternatives(), "rule__Direction__Alternatives");
+					put(grammarAccess.getAssignmentOperatorAccess().getAlternatives(), "rule__AssignmentOperator__Alternatives");
+					put(grammarAccess.getShiftOperatorAccess().getAlternatives(), "rule__ShiftOperator__Alternatives");
 					put(grammarAccess.getAdditiveOperatorAccess().getAlternatives(), "rule__AdditiveOperator__Alternatives");
 					put(grammarAccess.getMultiplicativeOperatorAccess().getAlternatives(), "rule__MultiplicativeOperator__Alternatives");
 					put(grammarAccess.getUnaryOperatorAccess().getAlternatives(), "rule__UnaryOperator__Alternatives");
@@ -103,13 +105,23 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getAssignmentAccess().getGroup(), "rule__Assignment__Group__0");
 					put(grammarAccess.getEventRaisingAccess().getGroup(), "rule__EventRaising__Group__0");
 					put(grammarAccess.getEventRaisingAccess().getGroup_2(), "rule__EventRaising__Group_2__0");
+					put(grammarAccess.getConditionalExpressionAccess().getGroup(), "rule__ConditionalExpression__Group__0");
+					put(grammarAccess.getConditionalExpressionAccess().getGroup_1(), "rule__ConditionalExpression__Group_1__0");
 					put(grammarAccess.getLogicalOrExpressionAccess().getGroup(), "rule__LogicalOrExpression__Group__0");
 					put(grammarAccess.getLogicalOrExpressionAccess().getGroup_1(), "rule__LogicalOrExpression__Group_1__0");
 					put(grammarAccess.getLogicalAndExpressionAccess().getGroup(), "rule__LogicalAndExpression__Group__0");
 					put(grammarAccess.getLogicalAndExpressionAccess().getGroup_1(), "rule__LogicalAndExpression__Group_1__0");
 					put(grammarAccess.getLogicalNotExpressionAccess().getGroup_1(), "rule__LogicalNotExpression__Group_1__0");
+					put(grammarAccess.getBitwiseXorExpressionAccess().getGroup(), "rule__BitwiseXorExpression__Group__0");
+					put(grammarAccess.getBitwiseXorExpressionAccess().getGroup_1(), "rule__BitwiseXorExpression__Group_1__0");
+					put(grammarAccess.getBitwiseOrExpressionAccess().getGroup(), "rule__BitwiseOrExpression__Group__0");
+					put(grammarAccess.getBitwiseOrExpressionAccess().getGroup_1(), "rule__BitwiseOrExpression__Group_1__0");
+					put(grammarAccess.getBitwiseAndExpressionAccess().getGroup(), "rule__BitwiseAndExpression__Group__0");
+					put(grammarAccess.getBitwiseAndExpressionAccess().getGroup_1(), "rule__BitwiseAndExpression__Group_1__0");
 					put(grammarAccess.getLogicalRelationExpressionAccess().getGroup(), "rule__LogicalRelationExpression__Group__0");
 					put(grammarAccess.getLogicalRelationExpressionAccess().getGroup_1(), "rule__LogicalRelationExpression__Group_1__0");
+					put(grammarAccess.getShiftExpressionAccess().getGroup(), "rule__ShiftExpression__Group__0");
+					put(grammarAccess.getShiftExpressionAccess().getGroup_1(), "rule__ShiftExpression__Group_1__0");
 					put(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup(), "rule__NumericalAddSubtractExpression__Group__0");
 					put(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup_1(), "rule__NumericalAddSubtractExpression__Group_1__0");
 					put(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getGroup(), "rule__NumericalMultiplyDivideExpression__Group__0");
@@ -168,14 +180,22 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getTimeEventSpecAccess().getValueAssignment_1(), "rule__TimeEventSpec__ValueAssignment_1");
 					put(grammarAccess.getTimeEventSpecAccess().getUnitAssignment_2(), "rule__TimeEventSpec__UnitAssignment_2");
 					put(grammarAccess.getAssignmentAccess().getVarRefAssignment_0(), "rule__Assignment__VarRefAssignment_0");
+					put(grammarAccess.getAssignmentAccess().getOperatorAssignment_1(), "rule__Assignment__OperatorAssignment_1");
 					put(grammarAccess.getAssignmentAccess().getExpressionAssignment_2(), "rule__Assignment__ExpressionAssignment_2");
 					put(grammarAccess.getEventRaisingAccess().getEventAssignment_1(), "rule__EventRaising__EventAssignment_1");
 					put(grammarAccess.getEventRaisingAccess().getValueAssignment_2_1(), "rule__EventRaising__ValueAssignment_2_1");
+					put(grammarAccess.getConditionalExpressionAccess().getTrueCaseAssignment_1_2(), "rule__ConditionalExpression__TrueCaseAssignment_1_2");
+					put(grammarAccess.getConditionalExpressionAccess().getFalseCaseAssignment_1_4(), "rule__ConditionalExpression__FalseCaseAssignment_1_4");
 					put(grammarAccess.getLogicalOrExpressionAccess().getRightOperandAssignment_1_2(), "rule__LogicalOrExpression__RightOperandAssignment_1_2");
 					put(grammarAccess.getLogicalAndExpressionAccess().getRightOperandAssignment_1_2(), "rule__LogicalAndExpression__RightOperandAssignment_1_2");
 					put(grammarAccess.getLogicalNotExpressionAccess().getOperandAssignment_1_2(), "rule__LogicalNotExpression__OperandAssignment_1_2");
+					put(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandAssignment_1_2(), "rule__BitwiseXorExpression__RightOperandAssignment_1_2");
+					put(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandAssignment_1_2(), "rule__BitwiseOrExpression__RightOperandAssignment_1_2");
+					put(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandAssignment_1_2(), "rule__BitwiseAndExpression__RightOperandAssignment_1_2");
 					put(grammarAccess.getLogicalRelationExpressionAccess().getOperatorAssignment_1_1(), "rule__LogicalRelationExpression__OperatorAssignment_1_1");
 					put(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandAssignment_1_2(), "rule__LogicalRelationExpression__RightOperandAssignment_1_2");
+					put(grammarAccess.getShiftExpressionAccess().getOperatorAssignment_1_1(), "rule__ShiftExpression__OperatorAssignment_1_1");
+					put(grammarAccess.getShiftExpressionAccess().getRightOperandAssignment_1_2(), "rule__ShiftExpression__RightOperandAssignment_1_2");
 					put(grammarAccess.getNumericalAddSubtractExpressionAccess().getOperatorAssignment_1_1(), "rule__NumericalAddSubtractExpression__OperatorAssignment_1_1");
 					put(grammarAccess.getNumericalAddSubtractExpressionAccess().getRightOperandAssignment_1_2(), "rule__NumericalAddSubtractExpression__RightOperandAssignment_1_2");
 					put(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getOperatorAssignment_1_1(), "rule__NumericalMultiplyDivideExpression__OperatorAssignment_1_1");

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1374 - 112
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g


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

@@ -2,19 +2,27 @@ T__42=42
 T__28=28
 T__57=57
 T__23=23
+T__80=80
 T__51=51
-T__13=13
-RULE_STRING=6
+RULE_STRING=7
+T__69=69
 T__47=47
+T__73=73
 T__50=50
 T__21=21
-RULE_FLOAT=7
+RULE_FLOAT=8
 T__65=65
 T__19=19
+RULE_HEX=6
+T__72=72
+T__70=70
+T__67=67
+T__74=74
 T__39=39
 T__30=30
 T__46=46
 T__52=52
+T__68=68
 T__17=17
 T__62=62
 RULE_INT=5
@@ -28,22 +36,27 @@ T__48=48
 T__34=34
 T__56=56
 T__15=15
-RULE_ML_COMMENT=9
+RULE_ML_COMMENT=10
 T__35=35
-RULE_ID=8
+RULE_ID=9
+T__78=78
 T__36=36
 T__20=20
 T__58=58
+T__79=79
 T__64=64
 T__44=44
+T__66=66
 T__14=14
 T__33=33
 T__22=22
+T__77=77
 T__55=55
 T__29=29
 T__45=45
-RULE_WS=11
+RULE_WS=12
 T__63=63
+T__75=75
 T__43=43
 T__31=31
 T__40=40
@@ -52,64 +65,84 @@ T__16=16
 T__32=32
 T__38=38
 RULE_BOOL=4
+T__76=76
 T__37=37
-RULE_ANY_OTHER=12
+RULE_ANY_OTHER=13
+T__82=82
 T__26=26
+T__81=81
 T__25=25
-RULE_SL_COMMENT=10
+RULE_SL_COMMENT=11
 T__60=60
 T__41=41
+T__71=71
 T__18=18
-'readonly'=64
-'<'=21
-'interface'=38
-'>'=23
-'boolean'=33
-'@@statechart@@'=35
-'-'=16
-'entrypoint'=49
-'event'=41
-'!='=26
-'integer'=31
-'>='=24
-'external'=65
-'internal'=40
-'ns'=29
-'var'=43
-'<='=22
-'||'=61
-'='=42
-'entry'=56
-'void'=30
-':'=39
-'#'=51
-'*'=17
-'~'=20
-'operation'=45
-'%'=19
-'string'=34
-'real'=32
-';'=54
-']'=53
-','=48
-'&&'=62
-'@@state@@'=36
-'exitpoint'=50
-'ms'=28
-'['=52
-'oncycle'=58
-'/'=18
-'@@transition@@'=37
-'always'=59
-')'=47
-'after'=55
-'=='=25
-'clock'=44
-'s'=27
-'!'=63
-'('=46
-'exit'=57
-'out'=14
-'raise'=60
-'in'=13
-'+'=15
+'readonly'=81
+'<'=35
+'-='=21
+'interface'=52
+'>'=37
+'boolean'=47
+'/='=18
+'@@statechart@@'=49
+'-'=30
+'entrypoint'=62
+'?'=74
+'event'=55
+'!='=40
+'%='=19
+'>='=38
+'integer'=45
+'<<'=27
+'external'=82
+'internal'=54
+'ns'=43
+'var'=56
+'||'=75
+'<='=36
+'='=16
+'*='=17
+'|='=26
+'entry'=69
+'void'=44
+':'=53
+'#'=64
+'*'=31
+'~'=34
+'operation'=58
+'<<='=22
+'%'=33
+'string'=48
+'real'=46
+';'=67
+']'=66
+'&'=80
+','=61
+'&&'=76
+'&='=24
+'@@state@@'=50
+'exitpoint'=63
+'oncycle'=71
+'['=65
+'ms'=42
+'^'=78
+'/'=32
+'@@transition@@'=51
+'always'=72
+'|'=79
+')'=60
+'after'=68
+'>>='=23
+'=='=39
+'clock'=57
+'s'=41
+'!'=77
+'+='=20
+'('=59
+'>>'=28
+'exit'=70
+'raise'=73
+'out'=15
+'^='=25
+'in'=14
+'+'=29

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1195 - 657
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 12022 - 8214
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java


+ 55 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore

@@ -41,16 +41,14 @@
     <eLiterals name="IN" literal="in"/>
     <eLiterals name="OUT" value="1" literal="out"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Reaction">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Effect"
+  <eClassifiers xsi:type="ecore:EClass" name="LocalReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionProperties"
         containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TransitionReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//TransitionStatement platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction">
     <eStructuralFeatures xsi:type="ecore:EReference" name="properties" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionProperties"
         containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="LocalReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction"/>
-  <eClassifiers xsi:type="ecore:EClass" name="TransitionReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//TransitionStatement platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction"/>
   <eClassifiers xsi:type="ecore:EClass" name="ReactionProperties">
     <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
         eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionProperty"
@@ -82,15 +80,33 @@
   <eClassifiers xsi:type="ecore:EClass" name="Statement"/>
   <eClassifiers xsi:type="ecore:EClass" name="Assignment" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Statement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="varRef" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Variable"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" eType="ecore:EEnum platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="AssignmentOperator">
+    <eLiterals name="assign" literal="="/>
+    <eLiterals name="multAssign" value="1" literal="*="/>
+    <eLiterals name="divAssign" value="2" literal="/="/>
+    <eLiterals name="modAssign" value="3" literal="%="/>
+    <eLiterals name="addAssign" value="4" literal="+="/>
+    <eLiterals name="subAssign" value="5" literal="-="/>
+    <eLiterals name="leftShiftAssign" value="6" literal="&lt;&lt;="/>
+    <eLiterals name="rightShiftAssign" value="7" literal=">>="/>
+    <eLiterals name="andAssign" value="8" literal="&amp;="/>
+    <eLiterals name="xorAssign" value="9" literal="^="/>
+    <eLiterals name="orAssign" value="10" literal="|="/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventRaising" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Statement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Event"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Statement"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="ShiftOperator">
+    <eLiterals name="left" literal="&lt;&lt;"/>
+    <eLiterals name="right" value="1" literal=">>"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="AdditiveOperator">
     <eLiterals name="plus" literal="+"/>
     <eLiterals name="minus" value="1" literal="-"/>
@@ -162,6 +178,14 @@
         eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Statement"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConditionalExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="trueCase" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="falseCase" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="LogicalOrExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
     <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
@@ -178,6 +202,24 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="operand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BitwiseXorExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BitwiseOrExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BitwiseAndExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="LogicalRelationExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
     <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
@@ -185,6 +227,13 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ShiftExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" eType="ecore:EEnum platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftOperator"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="NumericalAddSubtractExpression" eSuperTypes="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression">
     <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Expression"
         containment="true"/>

+ 45 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.genmodel

@@ -13,6 +13,23 @@
       <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Direction/IN"/>
       <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Direction/OUT"/>
     </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator">
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/assign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/multAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/divAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/modAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/addAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/subAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/leftShiftAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/rightShiftAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/andAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/xorAssign"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AssignmentOperator/orAssign"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftOperator">
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftOperator/left"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftOperator/right"/>
+    </genEnums>
     <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AdditiveOperator">
       <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AdditiveOperator/plus"/>
       <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//AdditiveOperator/minus"/>
@@ -71,13 +88,12 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//EventDerivation/condition"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//EventDerivation/value"/>
     </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction/trigger"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction/effect"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Reaction/properties"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LocalReaction">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LocalReaction/properties"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//TransitionReaction">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//TransitionReaction/properties"/>
     </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LocalReaction"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//TransitionReaction"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionProperties">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionProperties/properties"/>
     </genClasses>
@@ -107,6 +123,7 @@
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Statement"/>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Assignment">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Assignment/varRef"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Assignment/operator"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//Assignment/expression"/>
     </genClasses>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//EventRaising">
@@ -144,6 +161,11 @@
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionEffect">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ReactionEffect/actions"/>
     </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ConditionalExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ConditionalExpression/condition"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ConditionalExpression/trueCase"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ConditionalExpression/falseCase"/>
+    </genClasses>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalOrExpression">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalOrExpression/leftOperand"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalOrExpression/rightOperand"/>
@@ -155,11 +177,28 @@
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalNotExpression">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalNotExpression/operand"/>
     </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseXorExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseXorExpression/leftOperand"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseXorExpression/rightOperand"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseOrExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseOrExpression/leftOperand"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseOrExpression/rightOperand"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseAndExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseAndExpression/leftOperand"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//BitwiseAndExpression/rightOperand"/>
+    </genClasses>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalRelationExpression">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalRelationExpression/leftOperand"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalRelationExpression/operator"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//LogicalRelationExpression/rightOperand"/>
     </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftExpression/leftOperand"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftExpression/operator"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//ShiftExpression/rightOperand"/>
+    </genClasses>
     <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//NumericalAddSubtractExpression">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//NumericalAddSubtractExpression/leftOperand"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.ecore#//NumericalAddSubtractExpression/operator"/>

+ 243 - 51
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi

@@ -191,7 +191,7 @@
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="type" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
           </elements>
         </elements>
         <elements xsi:type="xtext:Assignment" cardinality="?" feature="derivation" operator="=">
@@ -206,12 +206,12 @@
       <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Keyword" value="="/>
         <elements xsi:type="xtext:Assignment" feature="condition" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
           </elements>
         </elements>
       </alternatives>
@@ -255,12 +255,12 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" feature="type" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value="="/>
           <elements xsi:type="xtext:Assignment" feature="initialValue" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
           </elements>
         </elements>
       </alternatives>
@@ -298,12 +298,12 @@
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
           </elements>
           <elements xsi:type="xtext:Group" cardinality="*">
             <elements xsi:type="xtext:Keyword" value=","/>
             <elements xsi:type="xtext:Assignment" feature="paramTypes" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
             </elements>
           </elements>
         </elements>
@@ -311,7 +311,7 @@
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="type" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
           </elements>
         </elements>
       </alternatives>
@@ -349,8 +349,8 @@
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="Reaction">
-      <type metamodel="/0/@metamodelDeclarations.0">
-        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Reaction"/>
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/2.0.0#//Reaction"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
@@ -430,7 +430,7 @@
             <elements xsi:type="xtext:Group" cardinality="?">
               <elements xsi:type="xtext:Keyword" predicated="true" value="["/>
               <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
               </elements>
               <elements xsi:type="xtext:Keyword" value="]"/>
             </elements>
@@ -438,7 +438,7 @@
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Keyword" value="["/>
             <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
             </elements>
             <elements xsi:type="xtext:Keyword" value="]"/>
           </elements>
@@ -561,7 +561,7 @@
           <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
         </elements>
         <elements xsi:type="xtext:Assignment" cardinality="?" feature="unit" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
         </elements>
       </alternatives>
     </rules>
@@ -634,8 +634,8 @@
       </type>
       <alternatives xsi:type="xtext:Alternatives">
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="Assignment">
@@ -651,9 +651,62 @@
             <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
           </terminal>
         </elements>
-        <elements xsi:type="xtext:Keyword" value="="/>
+        <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
+        </elements>
         <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="AssignmentOperator">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/assign"/>
+          <literal value="="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/multAssign"/>
+          <literal value="*="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/divAssign"/>
+          <literal value="/="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/modAssign"/>
+          <literal value="%="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/addAssign"/>
+          <literal value="+="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/subAssign"/>
+          <literal value="-="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/leftShiftAssign"/>
+          <literal value="&lt;&lt;="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/rightShiftAssign"/>
+          <literal value=">>="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/andAssign"/>
+          <literal value="&amp;="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/xorAssign"/>
+          <literal value="^="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//AssignmentOperator/orAssign"/>
+          <literal value="|="/>
         </elements>
       </alternatives>
     </rules>
@@ -674,7 +727,7 @@
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
           </elements>
         </elements>
       </alternatives>
@@ -683,14 +736,37 @@
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
-      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ConditionalExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Action" feature="condition" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//ConditionalExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="?"/>
+          <elements xsi:type="xtext:Assignment" feature="trueCase" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=":"/>
+          <elements xsi:type="xtext:Assignment" feature="falseCase" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+          </elements>
+        </elements>
+      </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="LogicalOrExpression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -699,7 +775,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="||"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
           </elements>
         </elements>
       </alternatives>
@@ -709,7 +785,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -718,7 +794,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="&amp;&amp;"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
           </elements>
         </elements>
       </alternatives>
@@ -728,7 +804,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -737,7 +813,64 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="!"/>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BitwiseXorExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//BitwiseXorExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="^"/>
+          <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BitwiseOrExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//BitwiseOrExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="|"/>
+          <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BitwiseAndExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//BitwiseAndExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="&amp;"/>
+          <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
           </elements>
         </elements>
       </alternatives>
@@ -747,7 +880,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -755,20 +888,56 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
           </elements>
         </elements>
       </alternatives>
     </rules>
+    <rules xsi:type="xtext:ParserRule" name="ShiftExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//ShiftExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="ShiftOperator">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.yakindu.org/sct/statechart/SText#//ShiftOperator"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//ShiftOperator/left"/>
+          <literal value="&lt;&lt;"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.yakindu.org/sct/statechart/SText#//ShiftOperator/right"/>
+          <literal value=">>"/>
+        </elements>
+      </alternatives>
+    </rules>
     <rules xsi:type="xtext:ParserRule" name="NumericalAddSubtractExpression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -776,10 +945,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
           </elements>
         </elements>
       </alternatives>
@@ -789,7 +958,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -797,10 +966,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
           </elements>
         </elements>
       </alternatives>
@@ -810,7 +979,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -818,10 +987,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
           </elements>
         </elements>
       </alternatives>
@@ -831,13 +1000,13 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Keyword" value="("/>
-          <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+          <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
           <elements xsi:type="xtext:Keyword" value=")"/>
         </elements>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:EnumRule" name="AdditiveOperator">
@@ -975,8 +1144,8 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="PrimitiveValueExpression">
@@ -990,7 +1159,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
         </elements>
       </alternatives>
     </rules>
@@ -1035,12 +1204,12 @@
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
           </elements>
           <elements xsi:type="xtext:Group" cardinality="*">
             <elements xsi:type="xtext:Keyword" value=","/>
             <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
             </elements>
           </elements>
         </elements>
@@ -1052,10 +1221,11 @@
         <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
         <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:TerminalRule" name="BOOL">
@@ -1067,15 +1237,37 @@
         <elements xsi:type="xtext:Keyword" value="false"/>
       </alternatives>
     </rules>
-    <rules xsi:type="xtext:TerminalRule" name="FLOAT">
+    <rules xsi:type="xtext:TerminalRule" name="HEX">
       <type metamodel="/1/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:Alternatives" cardinality="?">
-          <elements xsi:type="xtext:Keyword" value="-"/>
-          <elements xsi:type="xtext:Keyword" value="+"/>
+        <elements xsi:type="xtext:Keyword" value="0"/>
+        <elements xsi:type="xtext:Alternatives">
+          <elements xsi:type="xtext:Keyword" value="x"/>
+          <elements xsi:type="xtext:Keyword" value="X"/>
         </elements>
+        <elements xsi:type="xtext:Alternatives" cardinality="+">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="0"/>
+            <right value="9"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="f"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="F"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="FLOAT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
           <elements xsi:type="xtext:Keyword" value="."/>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1468 - 239
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java


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

@@ -2258,11 +2258,25 @@ ruleAssignment returns [EObject current=null]
 	}
 
 )
-)	otherlv_1='=' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getAssignmentAccess().getEqualsSignKeyword_1());
-    }
+)(
 (
+		{ 
+	        newCompositeNode(grammarAccess.getAssignmentAccess().getOperatorAssignmentOperatorEnumRuleCall_1_0()); 
+	    }
+		lv_operator_1_0=ruleAssignmentOperator		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"operator",
+        		lv_operator_1_0, 
+        		"AssignmentOperator");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
 (
 		{ 
 	        newCompositeNode(grammarAccess.getAssignmentAccess().getExpressionExpressionParserRuleCall_2_0()); 
@@ -2363,14 +2377,94 @@ ruleExpression returns [EObject current=null]
     @after { leaveRule(); }:
 
     { 
-        newCompositeNode(grammarAccess.getExpressionAccess().getLogicalOrExpressionParserRuleCall()); 
+        newCompositeNode(grammarAccess.getExpressionAccess().getConditionalExpressionParserRuleCall()); 
+    }
+    this_ConditionalExpression_0=ruleConditionalExpression
+    { 
+        $current = $this_ConditionalExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleConditionalExpression
+entryRuleConditionalExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConditionalExpressionRule()); }
+	 iv_ruleConditionalExpression=ruleConditionalExpression 
+	 { $current=$iv_ruleConditionalExpression.current; } 
+	 EOF 
+;
+
+// Rule ConditionalExpression
+ruleConditionalExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getConditionalExpressionAccess().getLogicalOrExpressionParserRuleCall_0()); 
     }
     this_LogicalOrExpression_0=ruleLogicalOrExpression
     { 
         $current = $this_LogicalOrExpression_0.current; 
         afterParserOrEnumRuleCall();
     }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getConditionalExpressionAccess().getConditionalExpressionConditionAction_1_0(),
+            $current);
+    }
+)	otherlv_2='?' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getConditionalExpressionAccess().getQuestionMarkKeyword_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConditionalExpressionAccess().getTrueCaseLogicalOrExpressionParserRuleCall_1_2_0()); 
+	    }
+		lv_trueCase_3_0=ruleLogicalOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"trueCase",
+        		lv_trueCase_3_0, 
+        		"LogicalOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
 
+)
+)	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConditionalExpressionAccess().getFalseCaseLogicalOrExpressionParserRuleCall_1_4_0()); 
+	    }
+		lv_falseCase_5_0=ruleLogicalOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"falseCase",
+        		lv_falseCase_5_0, 
+        		"LogicalOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
 ;
 
 
@@ -2509,11 +2603,11 @@ ruleLogicalNotExpression returns [EObject current=null]
     @after { leaveRule(); }:
 (
     { 
-        newCompositeNode(grammarAccess.getLogicalNotExpressionAccess().getLogicalRelationExpressionParserRuleCall_0()); 
+        newCompositeNode(grammarAccess.getLogicalNotExpressionAccess().getBitwiseXorExpressionParserRuleCall_0()); 
     }
-    this_LogicalRelationExpression_0=ruleLogicalRelationExpression
+    this_BitwiseXorExpression_0=ruleBitwiseXorExpression
     { 
-        $current = $this_LogicalRelationExpression_0.current; 
+        $current = $this_BitwiseXorExpression_0.current; 
         afterParserOrEnumRuleCall();
     }
 
@@ -2530,9 +2624,9 @@ ruleLogicalNotExpression returns [EObject current=null]
 (
 (
 		{ 
-	        newCompositeNode(grammarAccess.getLogicalNotExpressionAccess().getOperandLogicalRelationExpressionParserRuleCall_1_2_0()); 
+	        newCompositeNode(grammarAccess.getLogicalNotExpressionAccess().getOperandBitwiseXorExpressionParserRuleCall_1_2_0()); 
 	    }
-		lv_operand_3_0=ruleLogicalRelationExpression		{
+		lv_operand_3_0=ruleBitwiseXorExpression		{
 	        if ($current==null) {
 	            $current = createModelElementForParent(grammarAccess.getLogicalNotExpressionRule());
 	        }
@@ -2540,7 +2634,7 @@ ruleLogicalNotExpression returns [EObject current=null]
        			$current, 
        			"operand",
         		lv_operand_3_0, 
-        		"LogicalRelationExpression");
+        		"BitwiseXorExpression");
 	        afterParserOrEnumRuleCall();
 	    }
 
@@ -2552,6 +2646,180 @@ ruleLogicalNotExpression returns [EObject current=null]
 
 
 
+// Entry rule entryRuleBitwiseXorExpression
+entryRuleBitwiseXorExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBitwiseXorExpressionRule()); }
+	 iv_ruleBitwiseXorExpression=ruleBitwiseXorExpression 
+	 { $current=$iv_ruleBitwiseXorExpression.current; } 
+	 EOF 
+;
+
+// Rule BitwiseXorExpression
+ruleBitwiseXorExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBitwiseXorExpressionAccess().getBitwiseOrExpressionParserRuleCall_0()); 
+    }
+    this_BitwiseOrExpression_0=ruleBitwiseOrExpression
+    { 
+        $current = $this_BitwiseOrExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBitwiseXorExpressionAccess().getBitwiseXorExpressionLeftOperandAction_1_0(),
+            $current);
+    }
+)	otherlv_2='^' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBitwiseXorExpressionAccess().getCircumflexAccentKeyword_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandBitwiseOrExpressionParserRuleCall_1_2_0()); 
+	    }
+		lv_rightOperand_3_0=ruleBitwiseOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBitwiseXorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"BitwiseOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleBitwiseOrExpression
+entryRuleBitwiseOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBitwiseOrExpressionRule()); }
+	 iv_ruleBitwiseOrExpression=ruleBitwiseOrExpression 
+	 { $current=$iv_ruleBitwiseOrExpression.current; } 
+	 EOF 
+;
+
+// Rule BitwiseOrExpression
+ruleBitwiseOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBitwiseOrExpressionAccess().getBitwiseAndExpressionParserRuleCall_0()); 
+    }
+    this_BitwiseAndExpression_0=ruleBitwiseAndExpression
+    { 
+        $current = $this_BitwiseAndExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBitwiseOrExpressionAccess().getBitwiseOrExpressionLeftOperandAction_1_0(),
+            $current);
+    }
+)	otherlv_2='|' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBitwiseOrExpressionAccess().getVerticalLineKeyword_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandBitwiseAndExpressionParserRuleCall_1_2_0()); 
+	    }
+		lv_rightOperand_3_0=ruleBitwiseAndExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBitwiseOrExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"BitwiseAndExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleBitwiseAndExpression
+entryRuleBitwiseAndExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBitwiseAndExpressionRule()); }
+	 iv_ruleBitwiseAndExpression=ruleBitwiseAndExpression 
+	 { $current=$iv_ruleBitwiseAndExpression.current; } 
+	 EOF 
+;
+
+// Rule BitwiseAndExpression
+ruleBitwiseAndExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBitwiseAndExpressionAccess().getLogicalRelationExpressionParserRuleCall_0()); 
+    }
+    this_LogicalRelationExpression_0=ruleLogicalRelationExpression
+    { 
+        $current = $this_LogicalRelationExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBitwiseAndExpressionAccess().getBitwiseAndExpressionLeftOperandAction_1_0(),
+            $current);
+    }
+)	otherlv_2='&' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBitwiseAndExpressionAccess().getAmpersandKeyword_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandLogicalRelationExpressionParserRuleCall_1_2_0()); 
+	    }
+		lv_rightOperand_3_0=ruleLogicalRelationExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBitwiseAndExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"LogicalRelationExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
 // Entry rule entryRuleLogicalRelationExpression
 entryRuleLogicalRelationExpression returns [EObject current=null] 
 	:
@@ -2568,11 +2836,11 @@ ruleLogicalRelationExpression returns [EObject current=null]
     @after { leaveRule(); }:
 (
     { 
-        newCompositeNode(grammarAccess.getLogicalRelationExpressionAccess().getNumericalAddSubtractExpressionParserRuleCall_0()); 
+        newCompositeNode(grammarAccess.getLogicalRelationExpressionAccess().getShiftExpressionParserRuleCall_0()); 
     }
-    this_NumericalAddSubtractExpression_0=ruleNumericalAddSubtractExpression
+    this_ShiftExpression_0=ruleShiftExpression
     { 
-        $current = $this_NumericalAddSubtractExpression_0.current; 
+        $current = $this_ShiftExpression_0.current; 
         afterParserOrEnumRuleCall();
     }
 ((
@@ -2602,12 +2870,84 @@ ruleLogicalRelationExpression returns [EObject current=null]
 )(
 (
 		{ 
-	        newCompositeNode(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0()); 
+	        newCompositeNode(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandShiftExpressionParserRuleCall_1_2_0()); 
 	    }
-		lv_rightOperand_3_0=ruleNumericalAddSubtractExpression		{
+		lv_rightOperand_3_0=ruleShiftExpression		{
 	        if ($current==null) {
 	            $current = createModelElementForParent(grammarAccess.getLogicalRelationExpressionRule());
 	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"ShiftExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleShiftExpression
+entryRuleShiftExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getShiftExpressionRule()); }
+	 iv_ruleShiftExpression=ruleShiftExpression 
+	 { $current=$iv_ruleShiftExpression.current; } 
+	 EOF 
+;
+
+// Rule ShiftExpression
+ruleShiftExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getShiftExpressionAccess().getNumericalAddSubtractExpressionParserRuleCall_0()); 
+    }
+    this_NumericalAddSubtractExpression_0=ruleNumericalAddSubtractExpression
+    { 
+        $current = $this_NumericalAddSubtractExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getShiftExpressionAccess().getShiftExpressionLeftOperandAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getShiftExpressionAccess().getOperatorShiftOperatorEnumRuleCall_1_1_0()); 
+	    }
+		lv_operator_2_0=ruleShiftOperator		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getShiftExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operator",
+        		lv_operator_2_0, 
+        		"ShiftOperator");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getShiftExpressionAccess().getRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0()); 
+	    }
+		lv_rightOperand_3_0=ruleNumericalAddSubtractExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getShiftExpressionRule());
+	        }
        		set(
        			$current, 
        			"rightOperand",
@@ -3142,20 +3482,28 @@ ruleLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()
     newLeafNode(this_INT_1, grammarAccess.getLiteralAccess().getINTTerminalRuleCall_1()); 
     }
 
-    |    this_STRING_2=RULE_STRING    {
-		$current.merge(this_STRING_2);
+    |    this_HEX_2=RULE_HEX    {
+		$current.merge(this_HEX_2);
+    }
+
+    { 
+    newLeafNode(this_HEX_2, grammarAccess.getLiteralAccess().getHEXTerminalRuleCall_2()); 
+    }
+
+    |    this_STRING_3=RULE_STRING    {
+		$current.merge(this_STRING_3);
     }
 
     { 
-    newLeafNode(this_STRING_2, grammarAccess.getLiteralAccess().getSTRINGTerminalRuleCall_2()); 
+    newLeafNode(this_STRING_3, grammarAccess.getLiteralAccess().getSTRINGTerminalRuleCall_3()); 
     }
 
-    |    this_FLOAT_3=RULE_FLOAT    {
-		$current.merge(this_FLOAT_3);
+    |    this_FLOAT_4=RULE_FLOAT    {
+		$current.merge(this_FLOAT_4);
     }
 
     { 
-    newLeafNode(this_FLOAT_3, grammarAccess.getLiteralAccess().getFLOATTerminalRuleCall_3()); 
+    newLeafNode(this_FLOAT_4, grammarAccess.getLiteralAccess().getFLOATTerminalRuleCall_4()); 
     }
 )
     ;
@@ -3183,6 +3531,98 @@ ruleDirection returns [Enumerator current=null]
 
 
 
+// Rule AssignmentOperator
+ruleAssignmentOperator returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getAssignEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getAssignmentOperatorAccess().getAssignEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='*=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getMultAssignEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getAssignmentOperatorAccess().getMultAssignEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='/=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getDivAssignEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getAssignmentOperatorAccess().getDivAssignEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='%=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getModAssignEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getAssignmentOperatorAccess().getModAssignEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='+=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getAddAssignEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getAssignmentOperatorAccess().getAddAssignEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='-=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getSubAssignEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getAssignmentOperatorAccess().getSubAssignEnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='<<=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getLeftShiftAssignEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getAssignmentOperatorAccess().getLeftShiftAssignEnumLiteralDeclaration_6()); 
+    }
+)
+    |(	enumLiteral_7='>>=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getRightShiftAssignEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_7, grammarAccess.getAssignmentOperatorAccess().getRightShiftAssignEnumLiteralDeclaration_7()); 
+    }
+)
+    |(	enumLiteral_8='&=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getAndAssignEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_8, grammarAccess.getAssignmentOperatorAccess().getAndAssignEnumLiteralDeclaration_8()); 
+    }
+)
+    |(	enumLiteral_9='^=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getXorAssignEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_9, grammarAccess.getAssignmentOperatorAccess().getXorAssignEnumLiteralDeclaration_9()); 
+    }
+)
+    |(	enumLiteral_10='|=' 
+	{
+        $current = grammarAccess.getAssignmentOperatorAccess().getOrAssignEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_10, grammarAccess.getAssignmentOperatorAccess().getOrAssignEnumLiteralDeclaration_10()); 
+    }
+));
+
+
+
+// Rule ShiftOperator
+ruleShiftOperator returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='<<' 
+	{
+        $current = grammarAccess.getShiftOperatorAccess().getLeftEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getShiftOperatorAccess().getLeftEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='>>' 
+	{
+        $current = grammarAccess.getShiftOperatorAccess().getRightEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getShiftOperatorAccess().getRightEnumLiteralDeclaration_1()); 
+    }
+));
+
+
+
 // Rule AdditiveOperator
 ruleAdditiveOperator returns [Enumerator current=null] 
     @init { enterRule(); }
@@ -3359,7 +3799,9 @@ ruleType returns [Enumerator current=null]
 
 RULE_BOOL : ('true'|'false');
 
-RULE_FLOAT : ('-'|'+')? RULE_INT '.' RULE_INT ('e' ('-'|'+') RULE_INT)? ('f'|'F'|'d'|'D')?;
+RULE_HEX : '0' ('x'|'X') ('0'..'9'|'a'..'f'|'A'..'F')+;
+
+RULE_FLOAT : RULE_INT '.' RULE_INT ('e' ('-'|'+') RULE_INT)? ('f'|'F'|'d'|'D')?;
 
 RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
 

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

@@ -2,19 +2,27 @@ T__42=42
 T__28=28
 T__57=57
 T__23=23
+T__80=80
 T__51=51
-T__13=13
-RULE_STRING=7
+RULE_STRING=8
+T__69=69
 T__47=47
+T__73=73
 T__50=50
 T__21=21
-RULE_FLOAT=8
+RULE_FLOAT=9
 T__65=65
 T__19=19
+RULE_HEX=7
+T__72=72
+T__70=70
+T__67=67
+T__74=74
 T__39=39
 T__30=30
 T__46=46
 T__52=52
+T__68=68
 T__17=17
 T__62=62
 RULE_INT=5
@@ -28,22 +36,27 @@ T__48=48
 T__34=34
 T__56=56
 T__15=15
-RULE_ML_COMMENT=9
+RULE_ML_COMMENT=10
 T__35=35
 RULE_ID=4
+T__78=78
 T__36=36
 T__20=20
 T__58=58
+T__79=79
 T__64=64
 T__44=44
+T__66=66
 T__14=14
 T__33=33
 T__22=22
+T__77=77
 T__55=55
 T__29=29
 T__45=45
-RULE_WS=11
+RULE_WS=12
 T__63=63
+T__75=75
 T__43=43
 T__31=31
 T__40=40
@@ -52,64 +65,84 @@ T__16=16
 T__32=32
 T__38=38
 RULE_BOOL=6
+T__76=76
 T__37=37
-RULE_ANY_OTHER=12
+RULE_ANY_OTHER=13
+T__82=82
 T__26=26
+T__81=81
 T__25=25
-RULE_SL_COMMENT=10
+RULE_SL_COMMENT=11
 T__60=60
 T__41=41
+T__71=71
 T__18=18
-'readonly'=22
-'<'=53
-'interface'=16
-'>'=36
-'boolean'=64
-'@@statechart@@'=13
-'-'=49
-'entrypoint'=29
-'event'=19
-'!='=57
-'integer'=62
-'>='=55
-'internal'=18
-'external'=23
-'var'=21
-'ns'=60
-'||'=43
-'<='=54
-'='=20
-'entry'=38
-'void'=61
-':'=17
-'#'=32
-'*'=50
-'~'=52
-'operation'=25
-'%'=51
-'string'=65
-'real'=63
-';'=35
-']'=34
-','=27
-'&&'=44
-'@@state@@'=14
-'exitpoint'=30
-'['=33
-'oncycle'=40
-'ms'=59
-'/'=31
-'@@transition@@'=15
-'always'=41
-')'=28
-'after'=37
-'clock'=24
-'=='=56
-'s'=58
-'!'=45
-'('=26
-'exit'=39
-'raise'=42
-'out'=47
-'in'=46
-'+'=48
+'<'=70
+'readonly'=23
+'interface'=17
+'-='=57
+'>'=37
+'boolean'=81
+'/='=54
+'@@statechart@@'=14
+'-'=66
+'entrypoint'=30
+'event'=20
+'?'=44
+'!='=74
+'%='=55
+'integer'=79
+'>='=72
+'<<'=63
+'internal'=19
+'external'=24
+'ns'=77
+'var'=22
+'<='=71
+'||'=45
+'='=21
+'*='=53
+'|='=62
+'entry'=39
+'void'=78
+':'=18
+'#'=33
+'*'=67
+'~'=69
+'operation'=26
+'<<='=58
+'%'=68
+'string'=82
+'real'=80
+';'=36
+']'=35
+','=28
+'&'=50
+'&&'=46
+'&='=60
+'@@state@@'=15
+'exitpoint'=31
+'ms'=76
+'['=34
+'oncycle'=41
+'/'=32
+'^'=48
+'@@transition@@'=16
+'always'=42
+'|'=49
+')'=29
+'after'=38
+'>>='=59
+'=='=73
+'clock'=25
+'s'=75
+'!'=47
+'+='=56
+'('=27
+'>>'=64
+'exit'=40
+'raise'=43
+'out'=52
+'^='=61
+'in'=51
+'+'=65

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1140 - 602
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 2453 - 983
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java


+ 466 - 42
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java

@@ -719,7 +719,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		
 		/// * ---- reaction rules ----
 		//Define the structure of reactions that are central for describing the statecharts behavior. 
-		// * / Reaction:
+		// * / Reaction returns sct::Reaction:
 		//	LocalReaction | TransitionReaction;
 		public ParserRule getRule() { return rule; }
 
@@ -1301,15 +1301,16 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Assignment cVarRefAssignment_0 = (Assignment)cGroup.eContents().get(0);
 		private final CrossReference cVarRefVariableCrossReference_0_0 = (CrossReference)cVarRefAssignment_0.eContents().get(0);
 		private final RuleCall cVarRefVariableIDTerminalRuleCall_0_0_1 = (RuleCall)cVarRefVariableCrossReference_0_0.eContents().get(1);
-		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cOperatorAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cOperatorAssignmentOperatorEnumRuleCall_1_0 = (RuleCall)cOperatorAssignment_1.eContents().get(0);
 		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cExpressionExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
 		
 		//Assignment:
-		//	varRef=[sct::Variable] "=" expression=Expression;
+		//	varRef=[sct::Variable] operator=AssignmentOperator expression=Expression;
 		public ParserRule getRule() { return rule; }
 
-		//varRef=[sct::Variable] "=" expression=Expression
+		//varRef=[sct::Variable] operator=AssignmentOperator expression=Expression
 		public Group getGroup() { return cGroup; }
 
 		//varRef=[sct::Variable]
@@ -1321,8 +1322,11 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//ID
 		public RuleCall getVarRefVariableIDTerminalRuleCall_0_0_1() { return cVarRefVariableIDTerminalRuleCall_0_0_1; }
 
-		//"="
-		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }
+		//operator=AssignmentOperator
+		public Assignment getOperatorAssignment_1() { return cOperatorAssignment_1; }
+
+		//AssignmentOperator
+		public RuleCall getOperatorAssignmentOperatorEnumRuleCall_1_0() { return cOperatorAssignmentOperatorEnumRuleCall_1_0; }
 
 		//expression=Expression
 		public Assignment getExpressionAssignment_2() { return cExpressionAssignment_2; }
@@ -1377,7 +1381,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 
 	public class ExpressionElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
-		private final RuleCall cLogicalOrExpressionParserRuleCall = (RuleCall)rule.eContents().get(1);
+		private final RuleCall cConditionalExpressionParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//// ****************
 		//// Expression Grammar
@@ -1385,11 +1389,61 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		////ExpressionRule:
 		////	expression=(LogicalOrExpression | RaiseEventExpression);
 		//Expression:
-		//	LogicalOrExpression;
+		//	ConditionalExpression;
+		public ParserRule getRule() { return rule; }
+
+		//ConditionalExpression
+		public RuleCall getConditionalExpressionParserRuleCall() { return cConditionalExpressionParserRuleCall; }
+	}
+
+	public class ConditionalExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ConditionalExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cLogicalOrExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cConditionalExpressionConditionAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Keyword cQuestionMarkKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Assignment cTrueCaseAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cTrueCaseLogicalOrExpressionParserRuleCall_1_2_0 = (RuleCall)cTrueCaseAssignment_1_2.eContents().get(0);
+		private final Keyword cColonKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
+		private final Assignment cFalseCaseAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
+		private final RuleCall cFalseCaseLogicalOrExpressionParserRuleCall_1_4_0 = (RuleCall)cFalseCaseAssignment_1_4.eContents().get(0);
+		
+		//ConditionalExpression returns Expression:
+		//	LogicalOrExpression ({ConditionalExpression.condition=current} "?" trueCase=LogicalOrExpression ":"
+		//	falseCase=LogicalOrExpression)?;
 		public ParserRule getRule() { return rule; }
 
+		//LogicalOrExpression ({ConditionalExpression.condition=current} "?" trueCase=LogicalOrExpression ":"
+		//falseCase=LogicalOrExpression)?
+		public Group getGroup() { return cGroup; }
+
+		//LogicalOrExpression
+		public RuleCall getLogicalOrExpressionParserRuleCall_0() { return cLogicalOrExpressionParserRuleCall_0; }
+
+		//({ConditionalExpression.condition=current} "?" trueCase=LogicalOrExpression ":" falseCase=LogicalOrExpression)?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{ConditionalExpression.condition=current}
+		public Action getConditionalExpressionConditionAction_1_0() { return cConditionalExpressionConditionAction_1_0; }
+
+		//"?"
+		public Keyword getQuestionMarkKeyword_1_1() { return cQuestionMarkKeyword_1_1; }
+
+		//trueCase=LogicalOrExpression
+		public Assignment getTrueCaseAssignment_1_2() { return cTrueCaseAssignment_1_2; }
+
 		//LogicalOrExpression
-		public RuleCall getLogicalOrExpressionParserRuleCall() { return cLogicalOrExpressionParserRuleCall; }
+		public RuleCall getTrueCaseLogicalOrExpressionParserRuleCall_1_2_0() { return cTrueCaseLogicalOrExpressionParserRuleCall_1_2_0; }
+
+		//":"
+		public Keyword getColonKeyword_1_3() { return cColonKeyword_1_3; }
+
+		//falseCase=LogicalOrExpression
+		public Assignment getFalseCaseAssignment_1_4() { return cFalseCaseAssignment_1_4; }
+
+		//LogicalOrExpression
+		public RuleCall getFalseCaseLogicalOrExpressionParserRuleCall_1_4_0() { return cFalseCaseLogicalOrExpressionParserRuleCall_1_4_0; }
 	}
 
 	public class LogicalOrExpressionElements extends AbstractParserRuleElementFinder {
@@ -1467,24 +1521,24 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	public class LogicalNotExpressionElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalNotExpression");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final RuleCall cLogicalRelationExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cBitwiseXorExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
 		private final Action cLogicalNotExpressionAction_1_0 = (Action)cGroup_1.eContents().get(0);
 		private final Keyword cExclamationMarkKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
 		private final Assignment cOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
-		private final RuleCall cOperandLogicalRelationExpressionParserRuleCall_1_2_0 = (RuleCall)cOperandAssignment_1_2.eContents().get(0);
+		private final RuleCall cOperandBitwiseXorExpressionParserRuleCall_1_2_0 = (RuleCall)cOperandAssignment_1_2.eContents().get(0);
 		
 		//LogicalNotExpression returns Expression:
-		//	LogicalRelationExpression | {LogicalNotExpression} "!" operand=LogicalRelationExpression;
+		//	BitwiseXorExpression | {LogicalNotExpression} "!" operand=BitwiseXorExpression;
 		public ParserRule getRule() { return rule; }
 
-		//LogicalRelationExpression | {LogicalNotExpression} "!" operand=LogicalRelationExpression
+		//BitwiseXorExpression | {LogicalNotExpression} "!" operand=BitwiseXorExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 
-		//LogicalRelationExpression
-		public RuleCall getLogicalRelationExpressionParserRuleCall_0() { return cLogicalRelationExpressionParserRuleCall_0; }
+		//BitwiseXorExpression
+		public RuleCall getBitwiseXorExpressionParserRuleCall_0() { return cBitwiseXorExpressionParserRuleCall_0; }
 
-		//{LogicalNotExpression} "!" operand=LogicalRelationExpression
+		//{LogicalNotExpression} "!" operand=BitwiseXorExpression
 		public Group getGroup_1() { return cGroup_1; }
 
 		//{LogicalNotExpression}
@@ -1493,38 +1547,145 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//"!"
 		public Keyword getExclamationMarkKeyword_1_1() { return cExclamationMarkKeyword_1_1; }
 
-		//operand=LogicalRelationExpression
+		//operand=BitwiseXorExpression
 		public Assignment getOperandAssignment_1_2() { return cOperandAssignment_1_2; }
 
+		//BitwiseXorExpression
+		public RuleCall getOperandBitwiseXorExpressionParserRuleCall_1_2_0() { return cOperandBitwiseXorExpressionParserRuleCall_1_2_0; }
+	}
+
+	public class BitwiseXorExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BitwiseXorExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cBitwiseOrExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cBitwiseXorExpressionLeftOperandAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Keyword cCircumflexAccentKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Assignment cRightOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightOperandBitwiseOrExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
+		
+		//BitwiseXorExpression returns Expression:
+		//	BitwiseOrExpression ({BitwiseXorExpression.leftOperand=current} "^" rightOperand=BitwiseOrExpression)*;
+		public ParserRule getRule() { return rule; }
+
+		//BitwiseOrExpression ({BitwiseXorExpression.leftOperand=current} "^" rightOperand=BitwiseOrExpression)*
+		public Group getGroup() { return cGroup; }
+
+		//BitwiseOrExpression
+		public RuleCall getBitwiseOrExpressionParserRuleCall_0() { return cBitwiseOrExpressionParserRuleCall_0; }
+
+		//({BitwiseXorExpression.leftOperand=current} "^" rightOperand=BitwiseOrExpression)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{BitwiseXorExpression.leftOperand=current}
+		public Action getBitwiseXorExpressionLeftOperandAction_1_0() { return cBitwiseXorExpressionLeftOperandAction_1_0; }
+
+		//"^"
+		public Keyword getCircumflexAccentKeyword_1_1() { return cCircumflexAccentKeyword_1_1; }
+
+		//rightOperand=BitwiseOrExpression
+		public Assignment getRightOperandAssignment_1_2() { return cRightOperandAssignment_1_2; }
+
+		//BitwiseOrExpression
+		public RuleCall getRightOperandBitwiseOrExpressionParserRuleCall_1_2_0() { return cRightOperandBitwiseOrExpressionParserRuleCall_1_2_0; }
+	}
+
+	public class BitwiseOrExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BitwiseOrExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cBitwiseAndExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cBitwiseOrExpressionLeftOperandAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Keyword cVerticalLineKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Assignment cRightOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightOperandBitwiseAndExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
+		
+		//BitwiseOrExpression returns Expression:
+		//	BitwiseAndExpression ({BitwiseOrExpression.leftOperand=current} "|" rightOperand=BitwiseAndExpression)*;
+		public ParserRule getRule() { return rule; }
+
+		//BitwiseAndExpression ({BitwiseOrExpression.leftOperand=current} "|" rightOperand=BitwiseAndExpression)*
+		public Group getGroup() { return cGroup; }
+
+		//BitwiseAndExpression
+		public RuleCall getBitwiseAndExpressionParserRuleCall_0() { return cBitwiseAndExpressionParserRuleCall_0; }
+
+		//({BitwiseOrExpression.leftOperand=current} "|" rightOperand=BitwiseAndExpression)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{BitwiseOrExpression.leftOperand=current}
+		public Action getBitwiseOrExpressionLeftOperandAction_1_0() { return cBitwiseOrExpressionLeftOperandAction_1_0; }
+
+		//"|"
+		public Keyword getVerticalLineKeyword_1_1() { return cVerticalLineKeyword_1_1; }
+
+		//rightOperand=BitwiseAndExpression
+		public Assignment getRightOperandAssignment_1_2() { return cRightOperandAssignment_1_2; }
+
+		//BitwiseAndExpression
+		public RuleCall getRightOperandBitwiseAndExpressionParserRuleCall_1_2_0() { return cRightOperandBitwiseAndExpressionParserRuleCall_1_2_0; }
+	}
+
+	public class BitwiseAndExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BitwiseAndExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cLogicalRelationExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cBitwiseAndExpressionLeftOperandAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Keyword cAmpersandKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Assignment cRightOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightOperandLogicalRelationExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
+		
+		//BitwiseAndExpression returns Expression:
+		//	LogicalRelationExpression ({BitwiseAndExpression.leftOperand=current} "&" rightOperand=LogicalRelationExpression)*;
+		public ParserRule getRule() { return rule; }
+
+		//LogicalRelationExpression ({BitwiseAndExpression.leftOperand=current} "&" rightOperand=LogicalRelationExpression)*
+		public Group getGroup() { return cGroup; }
+
+		//LogicalRelationExpression
+		public RuleCall getLogicalRelationExpressionParserRuleCall_0() { return cLogicalRelationExpressionParserRuleCall_0; }
+
+		//({BitwiseAndExpression.leftOperand=current} "&" rightOperand=LogicalRelationExpression)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{BitwiseAndExpression.leftOperand=current}
+		public Action getBitwiseAndExpressionLeftOperandAction_1_0() { return cBitwiseAndExpressionLeftOperandAction_1_0; }
+
+		//"&"
+		public Keyword getAmpersandKeyword_1_1() { return cAmpersandKeyword_1_1; }
+
+		//rightOperand=LogicalRelationExpression
+		public Assignment getRightOperandAssignment_1_2() { return cRightOperandAssignment_1_2; }
+
 		//LogicalRelationExpression
-		public RuleCall getOperandLogicalRelationExpressionParserRuleCall_1_2_0() { return cOperandLogicalRelationExpressionParserRuleCall_1_2_0; }
+		public RuleCall getRightOperandLogicalRelationExpressionParserRuleCall_1_2_0() { return cRightOperandLogicalRelationExpressionParserRuleCall_1_2_0; }
 	}
 
 	public class LogicalRelationExpressionElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LogicalRelationExpression");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final RuleCall cNumericalAddSubtractExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final RuleCall cShiftExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
 		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
 		private final Action cLogicalRelationExpressionLeftOperandAction_1_0 = (Action)cGroup_1.eContents().get(0);
 		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
 		private final RuleCall cOperatorRelationalOperatorEnumRuleCall_1_1_0 = (RuleCall)cOperatorAssignment_1_1.eContents().get(0);
 		private final Assignment cRightOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
-		private final RuleCall cRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
+		private final RuleCall cRightOperandShiftExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
 		
 		//LogicalRelationExpression returns Expression:
-		//	NumericalAddSubtractExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
-		//	rightOperand=NumericalAddSubtractExpression)*;
+		//	ShiftExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
+		//	rightOperand=ShiftExpression)*;
 		public ParserRule getRule() { return rule; }
 
-		//NumericalAddSubtractExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
-		//rightOperand=NumericalAddSubtractExpression)*
+		//ShiftExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
+		//rightOperand=ShiftExpression)*
 		public Group getGroup() { return cGroup; }
 
-		//NumericalAddSubtractExpression
-		public RuleCall getNumericalAddSubtractExpressionParserRuleCall_0() { return cNumericalAddSubtractExpressionParserRuleCall_0; }
+		//ShiftExpression
+		public RuleCall getShiftExpressionParserRuleCall_0() { return cShiftExpressionParserRuleCall_0; }
 
-		//({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
-		//rightOperand=NumericalAddSubtractExpression)*
+		//({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator rightOperand=ShiftExpression)*
 		public Group getGroup_1() { return cGroup_1; }
 
 		//{LogicalRelationExpression.leftOperand=current}
@@ -1536,6 +1697,48 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//RelationalOperator
 		public RuleCall getOperatorRelationalOperatorEnumRuleCall_1_1_0() { return cOperatorRelationalOperatorEnumRuleCall_1_1_0; }
 
+		//rightOperand=ShiftExpression
+		public Assignment getRightOperandAssignment_1_2() { return cRightOperandAssignment_1_2; }
+
+		//ShiftExpression
+		public RuleCall getRightOperandShiftExpressionParserRuleCall_1_2_0() { return cRightOperandShiftExpressionParserRuleCall_1_2_0; }
+	}
+
+	public class ShiftExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ShiftExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cNumericalAddSubtractExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cShiftExpressionLeftOperandAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Assignment cOperatorAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cOperatorShiftOperatorEnumRuleCall_1_1_0 = (RuleCall)cOperatorAssignment_1_1.eContents().get(0);
+		private final Assignment cRightOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
+		
+		//ShiftExpression returns Expression:
+		//	NumericalAddSubtractExpression ({ShiftExpression.leftOperand=current} operator=ShiftOperator
+		//	rightOperand=NumericalAddSubtractExpression)*;
+		public ParserRule getRule() { return rule; }
+
+		//NumericalAddSubtractExpression ({ShiftExpression.leftOperand=current} operator=ShiftOperator
+		//rightOperand=NumericalAddSubtractExpression)*
+		public Group getGroup() { return cGroup; }
+
+		//NumericalAddSubtractExpression
+		public RuleCall getNumericalAddSubtractExpressionParserRuleCall_0() { return cNumericalAddSubtractExpressionParserRuleCall_0; }
+
+		//({ShiftExpression.leftOperand=current} operator=ShiftOperator rightOperand=NumericalAddSubtractExpression)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{ShiftExpression.leftOperand=current}
+		public Action getShiftExpressionLeftOperandAction_1_0() { return cShiftExpressionLeftOperandAction_1_0; }
+
+		//operator=ShiftOperator
+		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
+
+		//ShiftOperator
+		public RuleCall getOperatorShiftOperatorEnumRuleCall_1_1_0() { return cOperatorShiftOperatorEnumRuleCall_1_1_0; }
+
 		//rightOperand=NumericalAddSubtractExpression
 		public Assignment getRightOperandAssignment_1_2() { return cRightOperandAssignment_1_2; }
 
@@ -1846,14 +2049,15 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cBOOLTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
-		private final RuleCall cSTRINGTerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
-		private final RuleCall cFLOATTerminalRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cHEXTerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cSTRINGTerminalRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cFLOATTerminalRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		
 		//Literal:
-		//	BOOL | INT | STRING | FLOAT;
+		//	BOOL | INT | HEX | STRING | FLOAT;
 		public ParserRule getRule() { return rule; }
 
-		//BOOL | INT | STRING | FLOAT
+		//BOOL | INT | HEX | STRING | FLOAT
 		public Alternatives getAlternatives() { return cAlternatives; }
 
 		//BOOL
@@ -1862,11 +2066,14 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		//INT
 		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
 
+		//HEX
+		public RuleCall getHEXTerminalRuleCall_2() { return cHEXTerminalRuleCall_2; }
+
 		//STRING
-		public RuleCall getSTRINGTerminalRuleCall_2() { return cSTRINGTerminalRuleCall_2; }
+		public RuleCall getSTRINGTerminalRuleCall_3() { return cSTRINGTerminalRuleCall_3; }
 
 		//FLOAT
-		public RuleCall getFLOATTerminalRuleCall_3() { return cFLOATTerminalRuleCall_3; }
+		public RuleCall getFLOATTerminalRuleCall_4() { return cFLOATTerminalRuleCall_4; }
 	}
 	
 	
@@ -1898,6 +2105,136 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public Keyword getOUTOutKeyword_1_0() { return cOUTOutKeyword_1_0; }
 	}
 
+	public class AssignmentOperatorElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "AssignmentOperator");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cAssignEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cAssignEqualsSignKeyword_0_0 = (Keyword)cAssignEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cMultAssignEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cMultAssignAsteriskEqualsSignKeyword_1_0 = (Keyword)cMultAssignEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDivAssignEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDivAssignSolidusEqualsSignKeyword_2_0 = (Keyword)cDivAssignEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cModAssignEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cModAssignPercentSignEqualsSignKeyword_3_0 = (Keyword)cModAssignEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cAddAssignEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cAddAssignPlusSignEqualsSignKeyword_4_0 = (Keyword)cAddAssignEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cSubAssignEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cSubAssignHyphenMinusEqualsSignKeyword_5_0 = (Keyword)cSubAssignEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cLeftShiftAssignEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cLeftShiftAssignLessThanSignLessThanSignEqualsSignKeyword_6_0 = (Keyword)cLeftShiftAssignEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cRightShiftAssignEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cRightShiftAssignGreaterThanSignGreaterThanSignEqualsSignKeyword_7_0 = (Keyword)cRightShiftAssignEnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cAndAssignEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cAndAssignAmpersandEqualsSignKeyword_8_0 = (Keyword)cAndAssignEnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cXorAssignEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cXorAssignCircumflexAccentEqualsSignKeyword_9_0 = (Keyword)cXorAssignEnumLiteralDeclaration_9.eContents().get(0);
+		private final EnumLiteralDeclaration cOrAssignEnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+		private final Keyword cOrAssignVerticalLineEqualsSignKeyword_10_0 = (Keyword)cOrAssignEnumLiteralDeclaration_10.eContents().get(0);
+		
+		//enum AssignmentOperator:
+		//	assign="=" | multAssign="*=" | divAssign="/=" | modAssign="%=" | addAssign="+=" | subAssign="-=" |
+		//	leftShiftAssign="<<=" | rightShiftAssign=">>=" | andAssign="&=" | xorAssign="^=" | orAssign="|=";
+		public EnumRule getRule() { return rule; }
+
+		//assign="=" | multAssign="*=" | divAssign="/=" | modAssign="%=" | addAssign="+=" | subAssign="-=" | leftShiftAssign="<<="
+		//| rightShiftAssign=">>=" | andAssign="&=" | xorAssign="^=" | orAssign="|="
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//assign="="
+		public EnumLiteralDeclaration getAssignEnumLiteralDeclaration_0() { return cAssignEnumLiteralDeclaration_0; }
+
+		//"="
+		public Keyword getAssignEqualsSignKeyword_0_0() { return cAssignEqualsSignKeyword_0_0; }
+
+		//multAssign="*="
+		public EnumLiteralDeclaration getMultAssignEnumLiteralDeclaration_1() { return cMultAssignEnumLiteralDeclaration_1; }
+
+		//"*="
+		public Keyword getMultAssignAsteriskEqualsSignKeyword_1_0() { return cMultAssignAsteriskEqualsSignKeyword_1_0; }
+
+		//divAssign="/="
+		public EnumLiteralDeclaration getDivAssignEnumLiteralDeclaration_2() { return cDivAssignEnumLiteralDeclaration_2; }
+
+		//"/="
+		public Keyword getDivAssignSolidusEqualsSignKeyword_2_0() { return cDivAssignSolidusEqualsSignKeyword_2_0; }
+
+		//modAssign="%="
+		public EnumLiteralDeclaration getModAssignEnumLiteralDeclaration_3() { return cModAssignEnumLiteralDeclaration_3; }
+
+		//"%="
+		public Keyword getModAssignPercentSignEqualsSignKeyword_3_0() { return cModAssignPercentSignEqualsSignKeyword_3_0; }
+
+		//addAssign="+="
+		public EnumLiteralDeclaration getAddAssignEnumLiteralDeclaration_4() { return cAddAssignEnumLiteralDeclaration_4; }
+
+		//"+="
+		public Keyword getAddAssignPlusSignEqualsSignKeyword_4_0() { return cAddAssignPlusSignEqualsSignKeyword_4_0; }
+
+		//subAssign="-="
+		public EnumLiteralDeclaration getSubAssignEnumLiteralDeclaration_5() { return cSubAssignEnumLiteralDeclaration_5; }
+
+		//"-="
+		public Keyword getSubAssignHyphenMinusEqualsSignKeyword_5_0() { return cSubAssignHyphenMinusEqualsSignKeyword_5_0; }
+
+		//leftShiftAssign="<<="
+		public EnumLiteralDeclaration getLeftShiftAssignEnumLiteralDeclaration_6() { return cLeftShiftAssignEnumLiteralDeclaration_6; }
+
+		//"<<="
+		public Keyword getLeftShiftAssignLessThanSignLessThanSignEqualsSignKeyword_6_0() { return cLeftShiftAssignLessThanSignLessThanSignEqualsSignKeyword_6_0; }
+
+		//rightShiftAssign=">>="
+		public EnumLiteralDeclaration getRightShiftAssignEnumLiteralDeclaration_7() { return cRightShiftAssignEnumLiteralDeclaration_7; }
+
+		//">>="
+		public Keyword getRightShiftAssignGreaterThanSignGreaterThanSignEqualsSignKeyword_7_0() { return cRightShiftAssignGreaterThanSignGreaterThanSignEqualsSignKeyword_7_0; }
+
+		//andAssign="&="
+		public EnumLiteralDeclaration getAndAssignEnumLiteralDeclaration_8() { return cAndAssignEnumLiteralDeclaration_8; }
+
+		//"&="
+		public Keyword getAndAssignAmpersandEqualsSignKeyword_8_0() { return cAndAssignAmpersandEqualsSignKeyword_8_0; }
+
+		//xorAssign="^="
+		public EnumLiteralDeclaration getXorAssignEnumLiteralDeclaration_9() { return cXorAssignEnumLiteralDeclaration_9; }
+
+		//"^="
+		public Keyword getXorAssignCircumflexAccentEqualsSignKeyword_9_0() { return cXorAssignCircumflexAccentEqualsSignKeyword_9_0; }
+
+		//orAssign="|="
+		public EnumLiteralDeclaration getOrAssignEnumLiteralDeclaration_10() { return cOrAssignEnumLiteralDeclaration_10; }
+
+		//"|="
+		public Keyword getOrAssignVerticalLineEqualsSignKeyword_10_0() { return cOrAssignVerticalLineEqualsSignKeyword_10_0; }
+	}
+
+	public class ShiftOperatorElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ShiftOperator");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cLeftEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cLeftLessThanSignLessThanSignKeyword_0_0 = (Keyword)cLeftEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cRightEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cRightGreaterThanSignGreaterThanSignKeyword_1_0 = (Keyword)cRightEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum ShiftOperator:
+		//	left="<<" | right=">>";
+		public EnumRule getRule() { return rule; }
+
+		//left="<<" | right=">>"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//left="<<"
+		public EnumLiteralDeclaration getLeftEnumLiteralDeclaration_0() { return cLeftEnumLiteralDeclaration_0; }
+
+		//"<<"
+		public Keyword getLeftLessThanSignLessThanSignKeyword_0_0() { return cLeftLessThanSignLessThanSignKeyword_0_0; }
+
+		//right=">>"
+		public EnumLiteralDeclaration getRightEnumLiteralDeclaration_1() { return cRightEnumLiteralDeclaration_1; }
+
+		//">>"
+		public Keyword getRightGreaterThanSignGreaterThanSignKeyword_1_0() { return cRightGreaterThanSignGreaterThanSignKeyword_1_0; }
+	}
+
 	public class AdditiveOperatorElements extends AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "AdditiveOperator");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
@@ -2188,12 +2525,19 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	private AlwaysEventElements pAlwaysEvent;
 	private StatementElements pStatement;
 	private AssignmentElements pAssignment;
+	private AssignmentOperatorElements unknownRuleAssignmentOperator;
 	private EventRaisingElements pEventRaising;
 	private ExpressionElements pExpression;
+	private ConditionalExpressionElements pConditionalExpression;
 	private LogicalOrExpressionElements pLogicalOrExpression;
 	private LogicalAndExpressionElements pLogicalAndExpression;
 	private LogicalNotExpressionElements pLogicalNotExpression;
+	private BitwiseXorExpressionElements pBitwiseXorExpression;
+	private BitwiseOrExpressionElements pBitwiseOrExpression;
+	private BitwiseAndExpressionElements pBitwiseAndExpression;
 	private LogicalRelationExpressionElements pLogicalRelationExpression;
+	private ShiftExpressionElements pShiftExpression;
+	private ShiftOperatorElements unknownRuleShiftOperator;
 	private NumericalAddSubtractExpressionElements pNumericalAddSubtractExpression;
 	private NumericalMultiplyDivideExpressionElements pNumericalMultiplyDivideExpression;
 	private NumericalUnaryExpressionElements pNumericalUnaryExpression;
@@ -2210,6 +2554,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	private OperationCallElements pOperationCall;
 	private LiteralElements pLiteral;
 	private TerminalRule tBOOL;
+	private TerminalRule tHEX;
 	private TerminalRule tFLOAT;
 	
 	private final GrammarProvider grammarProvider;
@@ -2467,7 +2812,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 
 	/// * ---- reaction rules ----
 	//Define the structure of reactions that are central for describing the statecharts behavior. 
-	// * / Reaction:
+	// * / Reaction returns sct::Reaction:
 	//	LocalReaction | TransitionReaction;
 	public ReactionElements getReactionAccess() {
 		return (pReaction != null) ? pReaction : (pReaction = new ReactionElements());
@@ -2662,7 +3007,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//Assignment:
-	//	varRef=[sct::Variable] "=" expression=Expression;
+	//	varRef=[sct::Variable] operator=AssignmentOperator expression=Expression;
 	public AssignmentElements getAssignmentAccess() {
 		return (pAssignment != null) ? pAssignment : (pAssignment = new AssignmentElements());
 	}
@@ -2671,6 +3016,17 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getAssignmentAccess().getRule();
 	}
 
+	//enum AssignmentOperator:
+	//	assign="=" | multAssign="*=" | divAssign="/=" | modAssign="%=" | addAssign="+=" | subAssign="-=" |
+	//	leftShiftAssign="<<=" | rightShiftAssign=">>=" | andAssign="&=" | xorAssign="^=" | orAssign="|=";
+	public AssignmentOperatorElements getAssignmentOperatorAccess() {
+		return (unknownRuleAssignmentOperator != null) ? unknownRuleAssignmentOperator : (unknownRuleAssignmentOperator = new AssignmentOperatorElements());
+	}
+	
+	public EnumRule getAssignmentOperatorRule() {
+		return getAssignmentOperatorAccess().getRule();
+	}
+
 	//EventRaising:
 	//	"raise" event=[sct::Event] (":" value=Expression)?;
 	public EventRaisingElements getEventRaisingAccess() {
@@ -2687,7 +3043,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	////ExpressionRule:
 	////	expression=(LogicalOrExpression | RaiseEventExpression);
 	//Expression:
-	//	LogicalOrExpression;
+	//	ConditionalExpression;
 	public ExpressionElements getExpressionAccess() {
 		return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
 	}
@@ -2696,6 +3052,17 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getExpressionAccess().getRule();
 	}
 
+	//ConditionalExpression returns Expression:
+	//	LogicalOrExpression ({ConditionalExpression.condition=current} "?" trueCase=LogicalOrExpression ":"
+	//	falseCase=LogicalOrExpression)?;
+	public ConditionalExpressionElements getConditionalExpressionAccess() {
+		return (pConditionalExpression != null) ? pConditionalExpression : (pConditionalExpression = new ConditionalExpressionElements());
+	}
+	
+	public ParserRule getConditionalExpressionRule() {
+		return getConditionalExpressionAccess().getRule();
+	}
+
 	//LogicalOrExpression returns Expression:
 	//	LogicalAndExpression ({LogicalOrExpression.leftOperand=current} "||" rightOperand=LogicalAndExpression)*;
 	public LogicalOrExpressionElements getLogicalOrExpressionAccess() {
@@ -2717,7 +3084,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//LogicalNotExpression returns Expression:
-	//	LogicalRelationExpression | {LogicalNotExpression} "!" operand=LogicalRelationExpression;
+	//	BitwiseXorExpression | {LogicalNotExpression} "!" operand=BitwiseXorExpression;
 	public LogicalNotExpressionElements getLogicalNotExpressionAccess() {
 		return (pLogicalNotExpression != null) ? pLogicalNotExpression : (pLogicalNotExpression = new LogicalNotExpressionElements());
 	}
@@ -2726,9 +3093,39 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getLogicalNotExpressionAccess().getRule();
 	}
 
+	//BitwiseXorExpression returns Expression:
+	//	BitwiseOrExpression ({BitwiseXorExpression.leftOperand=current} "^" rightOperand=BitwiseOrExpression)*;
+	public BitwiseXorExpressionElements getBitwiseXorExpressionAccess() {
+		return (pBitwiseXorExpression != null) ? pBitwiseXorExpression : (pBitwiseXorExpression = new BitwiseXorExpressionElements());
+	}
+	
+	public ParserRule getBitwiseXorExpressionRule() {
+		return getBitwiseXorExpressionAccess().getRule();
+	}
+
+	//BitwiseOrExpression returns Expression:
+	//	BitwiseAndExpression ({BitwiseOrExpression.leftOperand=current} "|" rightOperand=BitwiseAndExpression)*;
+	public BitwiseOrExpressionElements getBitwiseOrExpressionAccess() {
+		return (pBitwiseOrExpression != null) ? pBitwiseOrExpression : (pBitwiseOrExpression = new BitwiseOrExpressionElements());
+	}
+	
+	public ParserRule getBitwiseOrExpressionRule() {
+		return getBitwiseOrExpressionAccess().getRule();
+	}
+
+	//BitwiseAndExpression returns Expression:
+	//	LogicalRelationExpression ({BitwiseAndExpression.leftOperand=current} "&" rightOperand=LogicalRelationExpression)*;
+	public BitwiseAndExpressionElements getBitwiseAndExpressionAccess() {
+		return (pBitwiseAndExpression != null) ? pBitwiseAndExpression : (pBitwiseAndExpression = new BitwiseAndExpressionElements());
+	}
+	
+	public ParserRule getBitwiseAndExpressionRule() {
+		return getBitwiseAndExpressionAccess().getRule();
+	}
+
 	//LogicalRelationExpression returns Expression:
-	//	NumericalAddSubtractExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
-	//	rightOperand=NumericalAddSubtractExpression)*;
+	//	ShiftExpression ({LogicalRelationExpression.leftOperand=current} operator=RelationalOperator
+	//	rightOperand=ShiftExpression)*;
 	public LogicalRelationExpressionElements getLogicalRelationExpressionAccess() {
 		return (pLogicalRelationExpression != null) ? pLogicalRelationExpression : (pLogicalRelationExpression = new LogicalRelationExpressionElements());
 	}
@@ -2737,6 +3134,27 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getLogicalRelationExpressionAccess().getRule();
 	}
 
+	//ShiftExpression returns Expression:
+	//	NumericalAddSubtractExpression ({ShiftExpression.leftOperand=current} operator=ShiftOperator
+	//	rightOperand=NumericalAddSubtractExpression)*;
+	public ShiftExpressionElements getShiftExpressionAccess() {
+		return (pShiftExpression != null) ? pShiftExpression : (pShiftExpression = new ShiftExpressionElements());
+	}
+	
+	public ParserRule getShiftExpressionRule() {
+		return getShiftExpressionAccess().getRule();
+	}
+
+	//enum ShiftOperator:
+	//	left="<<" | right=">>";
+	public ShiftOperatorElements getShiftOperatorAccess() {
+		return (unknownRuleShiftOperator != null) ? unknownRuleShiftOperator : (unknownRuleShiftOperator = new ShiftOperatorElements());
+	}
+	
+	public EnumRule getShiftOperatorRule() {
+		return getShiftOperatorAccess().getRule();
+	}
+
 	//NumericalAddSubtractExpression returns Expression:
 	//	NumericalMultiplyDivideExpression ({NumericalAddSubtractExpression.leftOperand=current} operator=AdditiveOperator
 	//	rightOperand=NumericalMultiplyDivideExpression)*;
@@ -2880,7 +3298,7 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	}
 
 	//Literal:
-	//	BOOL | INT | STRING | FLOAT;
+	//	BOOL | INT | HEX | STRING | FLOAT;
 	public LiteralElements getLiteralAccess() {
 		return (pLiteral != null) ? pLiteral : (pLiteral = new LiteralElements());
 	}
@@ -2895,8 +3313,14 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return (tBOOL != null) ? tBOOL : (tBOOL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BOOL"));
 	} 
 
+	//terminal HEX:
+	//	"0" ("x" | "X") ("0".."9" | "a".."f" | "A".."F")+;
+	public TerminalRule getHEXRule() {
+		return (tHEX != null) ? tHEX : (tHEX = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "HEX"));
+	} 
+
 	//terminal FLOAT:
-	//	("-" | "+")? (INT "." INT) ("e" ("-" | "+") INT)? ("f" | "F" | "d" | "D")?;
+	//	(INT "." INT) ("e" ("-" | "+") INT)? ("f" | "F" | "d" | "D")?;
 	public TerminalRule getFLOATRule() {
 		return (tFLOAT != null) ? tFLOAT : (tFLOAT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "FLOAT"));
 	} 

+ 30 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Assignment.java

@@ -16,6 +16,7 @@ import org.yakindu.sct.model.sgraph.Variable;
  * The following features are supported:
  * <ul>
  *   <li>{@link org.yakindu.sct.model.stext.stext.Assignment#getVarRef <em>Var Ref</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.Assignment#getOperator <em>Operator</em>}</li>
  *   <li>{@link org.yakindu.sct.model.stext.stext.Assignment#getExpression <em>Expression</em>}</li>
  * </ul>
  * </p>
@@ -52,6 +53,35 @@ public interface Assignment extends Statement
    */
   void setVarRef(Variable value);
 
+  /**
+   * Returns the value of the '<em><b>Operator</b></em>' attribute.
+   * The literals are from the enumeration {@link org.yakindu.sct.model.stext.stext.AssignmentOperator}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Operator</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Operator</em>' attribute.
+   * @see org.yakindu.sct.model.stext.stext.AssignmentOperator
+   * @see #setOperator(AssignmentOperator)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getAssignment_Operator()
+   * @model
+   * @generated
+   */
+  AssignmentOperator getOperator();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.Assignment#getOperator <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Operator</em>' attribute.
+   * @see org.yakindu.sct.model.stext.stext.AssignmentOperator
+   * @see #getOperator()
+   * @generated
+   */
+  void setOperator(AssignmentOperator value);
+
   /**
    * Returns the value of the '<em><b>Expression</b></em>' containment reference.
    * <!-- begin-user-doc -->

+ 469 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/AssignmentOperator.java

@@ -0,0 +1,469 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Assignment Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getAssignmentOperator()
+ * @model
+ * @generated
+ */
+public enum AssignmentOperator implements Enumerator
+{
+  /**
+   * The '<em><b>Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  ASSIGN(0, "assign", "="),
+
+  /**
+   * The '<em><b>Mult Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #MULT_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  MULT_ASSIGN(1, "multAssign", "*="),
+
+  /**
+   * The '<em><b>Div Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #DIV_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  DIV_ASSIGN(2, "divAssign", "/="),
+
+  /**
+   * The '<em><b>Mod Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #MOD_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  MOD_ASSIGN(3, "modAssign", "%="),
+
+  /**
+   * The '<em><b>Add Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #ADD_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  ADD_ASSIGN(4, "addAssign", "+="),
+
+  /**
+   * The '<em><b>Sub Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #SUB_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  SUB_ASSIGN(5, "subAssign", "-="),
+
+  /**
+   * The '<em><b>Left Shift Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #LEFT_SHIFT_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  LEFT_SHIFT_ASSIGN(6, "leftShiftAssign", "<<="),
+
+  /**
+   * The '<em><b>Right Shift Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #RIGHT_SHIFT_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  RIGHT_SHIFT_ASSIGN(7, "rightShiftAssign", ">>="),
+
+  /**
+   * The '<em><b>And Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #AND_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  AND_ASSIGN(8, "andAssign", "&="),
+
+  /**
+   * The '<em><b>Xor Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #XOR_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  XOR_ASSIGN(9, "xorAssign", "^="),
+
+  /**
+   * The '<em><b>Or Assign</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #OR_ASSIGN_VALUE
+   * @generated
+   * @ordered
+   */
+  OR_ASSIGN(10, "orAssign", "|=");
+
+  /**
+   * The '<em><b>Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #ASSIGN
+   * @model name="assign" literal="="
+   * @generated
+   * @ordered
+   */
+  public static final int ASSIGN_VALUE = 0;
+
+  /**
+   * The '<em><b>Mult Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Mult Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #MULT_ASSIGN
+   * @model name="multAssign" literal="*="
+   * @generated
+   * @ordered
+   */
+  public static final int MULT_ASSIGN_VALUE = 1;
+
+  /**
+   * The '<em><b>Div Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Div Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #DIV_ASSIGN
+   * @model name="divAssign" literal="/="
+   * @generated
+   * @ordered
+   */
+  public static final int DIV_ASSIGN_VALUE = 2;
+
+  /**
+   * The '<em><b>Mod Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Mod Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #MOD_ASSIGN
+   * @model name="modAssign" literal="%="
+   * @generated
+   * @ordered
+   */
+  public static final int MOD_ASSIGN_VALUE = 3;
+
+  /**
+   * The '<em><b>Add Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Add Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #ADD_ASSIGN
+   * @model name="addAssign" literal="+="
+   * @generated
+   * @ordered
+   */
+  public static final int ADD_ASSIGN_VALUE = 4;
+
+  /**
+   * The '<em><b>Sub Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Sub Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #SUB_ASSIGN
+   * @model name="subAssign" literal="-="
+   * @generated
+   * @ordered
+   */
+  public static final int SUB_ASSIGN_VALUE = 5;
+
+  /**
+   * The '<em><b>Left Shift Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Left Shift Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #LEFT_SHIFT_ASSIGN
+   * @model name="leftShiftAssign" literal="<<="
+   * @generated
+   * @ordered
+   */
+  public static final int LEFT_SHIFT_ASSIGN_VALUE = 6;
+
+  /**
+   * The '<em><b>Right Shift Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Right Shift Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #RIGHT_SHIFT_ASSIGN
+   * @model name="rightShiftAssign" literal=">>="
+   * @generated
+   * @ordered
+   */
+  public static final int RIGHT_SHIFT_ASSIGN_VALUE = 7;
+
+  /**
+   * The '<em><b>And Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>And Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #AND_ASSIGN
+   * @model name="andAssign" literal="&="
+   * @generated
+   * @ordered
+   */
+  public static final int AND_ASSIGN_VALUE = 8;
+
+  /**
+   * The '<em><b>Xor Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Xor Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #XOR_ASSIGN
+   * @model name="xorAssign" literal="^="
+   * @generated
+   * @ordered
+   */
+  public static final int XOR_ASSIGN_VALUE = 9;
+
+  /**
+   * The '<em><b>Or Assign</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Or Assign</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #OR_ASSIGN
+   * @model name="orAssign" literal="|="
+   * @generated
+   * @ordered
+   */
+  public static final int OR_ASSIGN_VALUE = 10;
+
+  /**
+   * An array of all the '<em><b>Assignment Operator</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final AssignmentOperator[] VALUES_ARRAY =
+    new AssignmentOperator[]
+    {
+      ASSIGN,
+      MULT_ASSIGN,
+      DIV_ASSIGN,
+      MOD_ASSIGN,
+      ADD_ASSIGN,
+      SUB_ASSIGN,
+      LEFT_SHIFT_ASSIGN,
+      RIGHT_SHIFT_ASSIGN,
+      AND_ASSIGN,
+      XOR_ASSIGN,
+      OR_ASSIGN,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>Assignment Operator</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<AssignmentOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>Assignment Operator</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static AssignmentOperator get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      AssignmentOperator result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Assignment Operator</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static AssignmentOperator getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      AssignmentOperator result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Assignment Operator</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static AssignmentOperator get(int value)
+  {
+    switch (value)
+    {
+      case ASSIGN_VALUE: return ASSIGN;
+      case MULT_ASSIGN_VALUE: return MULT_ASSIGN;
+      case DIV_ASSIGN_VALUE: return DIV_ASSIGN;
+      case MOD_ASSIGN_VALUE: return MOD_ASSIGN;
+      case ADD_ASSIGN_VALUE: return ADD_ASSIGN;
+      case SUB_ASSIGN_VALUE: return SUB_ASSIGN;
+      case LEFT_SHIFT_ASSIGN_VALUE: return LEFT_SHIFT_ASSIGN;
+      case RIGHT_SHIFT_ASSIGN_VALUE: return RIGHT_SHIFT_ASSIGN;
+      case AND_ASSIGN_VALUE: return AND_ASSIGN;
+      case XOR_ASSIGN_VALUE: return XOR_ASSIGN;
+      case OR_ASSIGN_VALUE: return OR_ASSIGN;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private AssignmentOperator(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //AssignmentOperator

+ 80 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseAndExpression.java

@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bitwise And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseAndExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseAndExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseAndExpression()
+ * @model
+ * @generated
+ */
+public interface BitwiseAndExpression extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Left Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Left Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Left Operand</em>' containment reference.
+   * @see #setLeftOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseAndExpression_LeftOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getLeftOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseAndExpression#getLeftOperand <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Left Operand</em>' containment reference.
+   * @see #getLeftOperand()
+   * @generated
+   */
+  void setLeftOperand(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Right Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Right Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Right Operand</em>' containment reference.
+   * @see #setRightOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseAndExpression_RightOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getRightOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseAndExpression#getRightOperand <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Right Operand</em>' containment reference.
+   * @see #getRightOperand()
+   * @generated
+   */
+  void setRightOperand(Expression value);
+
+} // BitwiseAndExpression

+ 80 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseOrExpression.java

@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bitwise Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseOrExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseOrExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseOrExpression()
+ * @model
+ * @generated
+ */
+public interface BitwiseOrExpression extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Left Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Left Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Left Operand</em>' containment reference.
+   * @see #setLeftOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseOrExpression_LeftOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getLeftOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseOrExpression#getLeftOperand <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Left Operand</em>' containment reference.
+   * @see #getLeftOperand()
+   * @generated
+   */
+  void setLeftOperand(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Right Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Right Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Right Operand</em>' containment reference.
+   * @see #setRightOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseOrExpression_RightOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getRightOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseOrExpression#getRightOperand <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Right Operand</em>' containment reference.
+   * @see #getRightOperand()
+   * @generated
+   */
+  void setRightOperand(Expression value);
+
+} // BitwiseOrExpression

+ 80 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/BitwiseXorExpression.java

@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bitwise Xor Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseXorExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.BitwiseXorExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseXorExpression()
+ * @model
+ * @generated
+ */
+public interface BitwiseXorExpression extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Left Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Left Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Left Operand</em>' containment reference.
+   * @see #setLeftOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseXorExpression_LeftOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getLeftOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseXorExpression#getLeftOperand <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Left Operand</em>' containment reference.
+   * @see #getLeftOperand()
+   * @generated
+   */
+  void setLeftOperand(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Right Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Right Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Right Operand</em>' containment reference.
+   * @see #setRightOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getBitwiseXorExpression_RightOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getRightOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.BitwiseXorExpression#getRightOperand <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Right Operand</em>' containment reference.
+   * @see #getRightOperand()
+   * @generated
+   */
+  void setRightOperand(Expression value);
+
+} // BitwiseXorExpression

+ 107 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ConditionalExpression.java

@@ -0,0 +1,107 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getCondition <em>Condition</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getTrueCase <em>True Case</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getFalseCase <em>False Case</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getConditionalExpression()
+ * @model
+ * @generated
+ */
+public interface ConditionalExpression extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Condition</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Condition</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Condition</em>' containment reference.
+   * @see #setCondition(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getConditionalExpression_Condition()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getCondition();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getCondition <em>Condition</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Condition</em>' containment reference.
+   * @see #getCondition()
+   * @generated
+   */
+  void setCondition(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>True Case</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>True Case</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>True Case</em>' containment reference.
+   * @see #setTrueCase(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getConditionalExpression_TrueCase()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getTrueCase();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getTrueCase <em>True Case</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>True Case</em>' containment reference.
+   * @see #getTrueCase()
+   * @generated
+   */
+  void setTrueCase(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>False Case</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>False Case</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>False Case</em>' containment reference.
+   * @see #setFalseCase(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getConditionalExpression_FalseCase()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getFalseCase();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ConditionalExpression#getFalseCase <em>False Case</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>False Case</em>' containment reference.
+   * @see #getFalseCase()
+   * @generated
+   */
+  void setFalseCase(Expression value);
+
+} // ConditionalExpression

+ 33 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/LocalReaction.java

@@ -6,12 +6,19 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.yakindu.sct.model.sgraph.Declaration;
+import org.yakindu.sct.model.sgraph.Reaction;
 
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Local Reaction</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.LocalReaction#getProperties <em>Properties</em>}</li>
+ * </ul>
+ * </p>
  *
  * @see org.yakindu.sct.model.stext.stext.StextPackage#getLocalReaction()
  * @model
@@ -19,4 +26,30 @@ import org.yakindu.sct.model.sgraph.Declaration;
  */
 public interface LocalReaction extends Declaration, Reaction
 {
+  /**
+   * Returns the value of the '<em><b>Properties</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Properties</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Properties</em>' containment reference.
+   * @see #setProperties(ReactionProperties)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getLocalReaction_Properties()
+   * @model containment="true"
+   * @generated
+   */
+  ReactionProperties getProperties();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.LocalReaction#getProperties <em>Properties</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Properties</em>' containment reference.
+   * @see #getProperties()
+   * @generated
+   */
+  void setProperties(ReactionProperties value);
+
 } // LocalReaction

+ 0 - 111
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Reaction.java

@@ -1,111 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- */
-package org.yakindu.sct.model.stext.stext;
-
-import org.eclipse.emf.ecore.EObject;
-
-import org.yakindu.sct.model.sgraph.Effect;
-import org.yakindu.sct.model.sgraph.Trigger;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Reaction</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * <ul>
- *   <li>{@link org.yakindu.sct.model.stext.stext.Reaction#getTrigger <em>Trigger</em>}</li>
- *   <li>{@link org.yakindu.sct.model.stext.stext.Reaction#getEffect <em>Effect</em>}</li>
- *   <li>{@link org.yakindu.sct.model.stext.stext.Reaction#getProperties <em>Properties</em>}</li>
- * </ul>
- * </p>
- *
- * @see org.yakindu.sct.model.stext.stext.StextPackage#getReaction()
- * @model
- * @generated
- */
-public interface Reaction extends EObject
-{
-  /**
-   * Returns the value of the '<em><b>Trigger</b></em>' containment reference.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Trigger</em>' containment reference isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Trigger</em>' containment reference.
-   * @see #setTrigger(Trigger)
-   * @see org.yakindu.sct.model.stext.stext.StextPackage#getReaction_Trigger()
-   * @model containment="true"
-   * @generated
-   */
-  Trigger getTrigger();
-
-  /**
-   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.Reaction#getTrigger <em>Trigger</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Trigger</em>' containment reference.
-   * @see #getTrigger()
-   * @generated
-   */
-  void setTrigger(Trigger value);
-
-  /**
-   * Returns the value of the '<em><b>Effect</b></em>' containment reference.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Effect</em>' containment reference isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Effect</em>' containment reference.
-   * @see #setEffect(Effect)
-   * @see org.yakindu.sct.model.stext.stext.StextPackage#getReaction_Effect()
-   * @model containment="true"
-   * @generated
-   */
-  Effect getEffect();
-
-  /**
-   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.Reaction#getEffect <em>Effect</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Effect</em>' containment reference.
-   * @see #getEffect()
-   * @generated
-   */
-  void setEffect(Effect value);
-
-  /**
-   * Returns the value of the '<em><b>Properties</b></em>' containment reference.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Properties</em>' containment reference isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Properties</em>' containment reference.
-   * @see #setProperties(ReactionProperties)
-   * @see org.yakindu.sct.model.stext.stext.StextPackage#getReaction_Properties()
-   * @model containment="true"
-   * @generated
-   */
-  ReactionProperties getProperties();
-
-  /**
-   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.Reaction#getProperties <em>Properties</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Properties</em>' containment reference.
-   * @see #getProperties()
-   * @generated
-   */
-  void setProperties(ReactionProperties value);
-
-} // Reaction

+ 110 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ShiftExpression.java

@@ -0,0 +1,110 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Shift Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getShiftExpression()
+ * @model
+ * @generated
+ */
+public interface ShiftExpression extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Left Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Left Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Left Operand</em>' containment reference.
+   * @see #setLeftOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getShiftExpression_LeftOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getLeftOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getLeftOperand <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Left Operand</em>' containment reference.
+   * @see #getLeftOperand()
+   * @generated
+   */
+  void setLeftOperand(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Operator</b></em>' attribute.
+   * The literals are from the enumeration {@link org.yakindu.sct.model.stext.stext.ShiftOperator}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Operator</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Operator</em>' attribute.
+   * @see org.yakindu.sct.model.stext.stext.ShiftOperator
+   * @see #setOperator(ShiftOperator)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getShiftExpression_Operator()
+   * @model
+   * @generated
+   */
+  ShiftOperator getOperator();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getOperator <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Operator</em>' attribute.
+   * @see org.yakindu.sct.model.stext.stext.ShiftOperator
+   * @see #getOperator()
+   * @generated
+   */
+  void setOperator(ShiftOperator value);
+
+  /**
+   * Returns the value of the '<em><b>Right Operand</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Right Operand</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Right Operand</em>' containment reference.
+   * @see #setRightOperand(Expression)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getShiftExpression_RightOperand()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getRightOperand();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ShiftExpression#getRightOperand <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Right Operand</em>' containment reference.
+   * @see #getRightOperand()
+   * @generated
+   */
+  void setRightOperand(Expression value);
+
+} // ShiftExpression

+ 226 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ShiftOperator.java

@@ -0,0 +1,226 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Shift Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getShiftOperator()
+ * @model
+ * @generated
+ */
+public enum ShiftOperator implements Enumerator
+{
+  /**
+   * The '<em><b>Left</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #LEFT_VALUE
+   * @generated
+   * @ordered
+   */
+  LEFT(0, "left", "<<"),
+
+  /**
+   * The '<em><b>Right</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #RIGHT_VALUE
+   * @generated
+   * @ordered
+   */
+  RIGHT(1, "right", ">>");
+
+  /**
+   * The '<em><b>Left</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Left</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #LEFT
+   * @model name="left" literal="<<"
+   * @generated
+   * @ordered
+   */
+  public static final int LEFT_VALUE = 0;
+
+  /**
+   * The '<em><b>Right</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Right</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #RIGHT
+   * @model name="right" literal=">>"
+   * @generated
+   * @ordered
+   */
+  public static final int RIGHT_VALUE = 1;
+
+  /**
+   * An array of all the '<em><b>Shift Operator</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final ShiftOperator[] VALUES_ARRAY =
+    new ShiftOperator[]
+    {
+      LEFT,
+      RIGHT,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>Shift Operator</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<ShiftOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>Shift Operator</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static ShiftOperator get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      ShiftOperator result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Shift Operator</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static ShiftOperator getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      ShiftOperator result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Shift Operator</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static ShiftOperator get(int value)
+  {
+    switch (value)
+    {
+      case LEFT_VALUE: return LEFT;
+      case RIGHT_VALUE: return RIGHT;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private ShiftOperator(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //ShiftOperator

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

@@ -106,15 +106,6 @@ public interface StextFactory extends EFactory
    */
   EventDerivation createEventDerivation();
 
-  /**
-   * Returns a new object of class '<em>Reaction</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>Reaction</em>'.
-   * @generated
-   */
-  Reaction createReaction();
-
   /**
    * Returns a new object of class '<em>Local Reaction</em>'.
    * <!-- begin-user-doc -->
@@ -385,6 +376,15 @@ public interface StextFactory extends EFactory
    */
   ReactionEffect createReactionEffect();
 
+  /**
+   * Returns a new object of class '<em>Conditional Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Conditional Expression</em>'.
+   * @generated
+   */
+  ConditionalExpression createConditionalExpression();
+
   /**
    * Returns a new object of class '<em>Logical Or Expression</em>'.
    * <!-- begin-user-doc -->
@@ -412,6 +412,33 @@ public interface StextFactory extends EFactory
    */
   LogicalNotExpression createLogicalNotExpression();
 
+  /**
+   * Returns a new object of class '<em>Bitwise Xor Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Bitwise Xor Expression</em>'.
+   * @generated
+   */
+  BitwiseXorExpression createBitwiseXorExpression();
+
+  /**
+   * Returns a new object of class '<em>Bitwise Or Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Bitwise Or Expression</em>'.
+   * @generated
+   */
+  BitwiseOrExpression createBitwiseOrExpression();
+
+  /**
+   * Returns a new object of class '<em>Bitwise And Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Bitwise And Expression</em>'.
+   * @generated
+   */
+  BitwiseAndExpression createBitwiseAndExpression();
+
   /**
    * Returns a new object of class '<em>Logical Relation Expression</em>'.
    * <!-- begin-user-doc -->
@@ -421,6 +448,15 @@ public interface StextFactory extends EFactory
    */
   LogicalRelationExpression createLogicalRelationExpression();
 
+  /**
+   * Returns a new object of class '<em>Shift Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Shift Expression</em>'.
+   * @generated
+   */
+  ShiftExpression createShiftExpression();
+
   /**
    * Returns a new object of class '<em>Numerical Add Subtract Expression</em>'.
    * <!-- begin-user-doc -->

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 696 - 162
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java


+ 33 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/TransitionReaction.java

@@ -5,12 +5,19 @@
  */
 package org.yakindu.sct.model.stext.stext;
 
+import org.yakindu.sct.model.sgraph.Reaction;
 
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Transition Reaction</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.TransitionReaction#getProperties <em>Properties</em>}</li>
+ * </ul>
+ * </p>
  *
  * @see org.yakindu.sct.model.stext.stext.StextPackage#getTransitionReaction()
  * @model
@@ -18,4 +25,30 @@ package org.yakindu.sct.model.stext.stext;
  */
 public interface TransitionReaction extends TransitionStatement, Reaction
 {
+  /**
+   * Returns the value of the '<em><b>Properties</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Properties</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Properties</em>' containment reference.
+   * @see #setProperties(ReactionProperties)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getTransitionReaction_Properties()
+   * @model containment="true"
+   * @generated
+   */
+  ReactionProperties getProperties();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.TransitionReaction#getProperties <em>Properties</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Properties</em>' containment reference.
+   * @see #getProperties()
+   * @generated
+   */
+  void setProperties(ReactionProperties value);
+
 } // TransitionReaction

+ 72 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AssignmentImpl.java

@@ -16,6 +16,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.yakindu.sct.model.sgraph.Variable;
 
 import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentOperator;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 
@@ -27,6 +28,7 @@ import org.yakindu.sct.model.stext.stext.StextPackage;
  * The following features are implemented:
  * <ul>
  *   <li>{@link org.yakindu.sct.model.stext.stext.impl.AssignmentImpl#getVarRef <em>Var Ref</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.AssignmentImpl#getOperator <em>Operator</em>}</li>
  *   <li>{@link org.yakindu.sct.model.stext.stext.impl.AssignmentImpl#getExpression <em>Expression</em>}</li>
  * </ul>
  * </p>
@@ -45,6 +47,26 @@ public class AssignmentImpl extends StatementImpl implements Assignment
    */
   protected Variable varRef;
 
+  /**
+   * The default value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOperator()
+   * @generated
+   * @ordered
+   */
+  protected static final AssignmentOperator OPERATOR_EDEFAULT = AssignmentOperator.ASSIGN;
+
+  /**
+   * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOperator()
+   * @generated
+   * @ordered
+   */
+  protected AssignmentOperator operator = OPERATOR_EDEFAULT;
+
   /**
    * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
    * <!-- begin-user-doc -->
@@ -119,6 +141,29 @@ public class AssignmentImpl extends StatementImpl implements Assignment
       eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.ASSIGNMENT__VAR_REF, oldVarRef, varRef));
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public AssignmentOperator getOperator()
+  {
+    return operator;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setOperator(AssignmentOperator newOperator)
+  {
+    AssignmentOperator oldOperator = operator;
+    operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.ASSIGNMENT__OPERATOR, oldOperator, operator));
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -196,6 +241,8 @@ public class AssignmentImpl extends StatementImpl implements Assignment
       case StextPackage.ASSIGNMENT__VAR_REF:
         if (resolve) return getVarRef();
         return basicGetVarRef();
+      case StextPackage.ASSIGNMENT__OPERATOR:
+        return getOperator();
       case StextPackage.ASSIGNMENT__EXPRESSION:
         return getExpression();
     }
@@ -215,6 +262,9 @@ public class AssignmentImpl extends StatementImpl implements Assignment
       case StextPackage.ASSIGNMENT__VAR_REF:
         setVarRef((Variable)newValue);
         return;
+      case StextPackage.ASSIGNMENT__OPERATOR:
+        setOperator((AssignmentOperator)newValue);
+        return;
       case StextPackage.ASSIGNMENT__EXPRESSION:
         setExpression((Expression)newValue);
         return;
@@ -235,6 +285,9 @@ public class AssignmentImpl extends StatementImpl implements Assignment
       case StextPackage.ASSIGNMENT__VAR_REF:
         setVarRef((Variable)null);
         return;
+      case StextPackage.ASSIGNMENT__OPERATOR:
+        setOperator(OPERATOR_EDEFAULT);
+        return;
       case StextPackage.ASSIGNMENT__EXPRESSION:
         setExpression((Expression)null);
         return;
@@ -254,10 +307,29 @@ public class AssignmentImpl extends StatementImpl implements Assignment
     {
       case StextPackage.ASSIGNMENT__VAR_REF:
         return varRef != null;
+      case StextPackage.ASSIGNMENT__OPERATOR:
+        return operator != OPERATOR_EDEFAULT;
       case StextPackage.ASSIGNMENT__EXPRESSION:
         return expression != null;
     }
     return super.eIsSet(featureID);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (operator: ");
+    result.append(operator);
+    result.append(')');
+    return result.toString();
+  }
+
 } //AssignmentImpl

+ 267 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseAndExpressionImpl.java

@@ -0,0 +1,267 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.stext.stext.BitwiseAndExpression;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bitwise And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseAndExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseAndExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BitwiseAndExpressionImpl extends ExpressionImpl implements BitwiseAndExpression
+{
+  /**
+   * The cached value of the '{@link #getLeftOperand() <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getLeftOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression leftOperand;
+
+  /**
+   * The cached value of the '{@link #getRightOperand() <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getRightOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression rightOperand;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected BitwiseAndExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.BITWISE_AND_EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getLeftOperand()
+  {
+    return leftOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetLeftOperand(Expression newLeftOperand, NotificationChain msgs)
+  {
+    Expression oldLeftOperand = leftOperand;
+    leftOperand = newLeftOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND, oldLeftOperand, newLeftOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setLeftOperand(Expression newLeftOperand)
+  {
+    if (newLeftOperand != leftOperand)
+    {
+      NotificationChain msgs = null;
+      if (leftOperand != null)
+        msgs = ((InternalEObject)leftOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND, null, msgs);
+      if (newLeftOperand != null)
+        msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND, null, msgs);
+      msgs = basicSetLeftOperand(newLeftOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getRightOperand()
+  {
+    return rightOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetRightOperand(Expression newRightOperand, NotificationChain msgs)
+  {
+    Expression oldRightOperand = rightOperand;
+    rightOperand = newRightOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND, oldRightOperand, newRightOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setRightOperand(Expression newRightOperand)
+  {
+    if (newRightOperand != rightOperand)
+    {
+      NotificationChain msgs = null;
+      if (rightOperand != null)
+        msgs = ((InternalEObject)rightOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      if (newRightOperand != null)
+        msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      msgs = basicSetRightOperand(newRightOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND, newRightOperand, newRightOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+        return basicSetLeftOperand(null, msgs);
+      case StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+        return basicSetRightOperand(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+        return getLeftOperand();
+      case StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+        return getRightOperand();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)newValue);
+        return;
+      case StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)null);
+        return;
+      case StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+        return leftOperand != null;
+      case StextPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+        return rightOperand != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //BitwiseAndExpressionImpl

+ 267 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseOrExpressionImpl.java

@@ -0,0 +1,267 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.stext.stext.BitwiseOrExpression;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bitwise Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseOrExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseOrExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BitwiseOrExpressionImpl extends ExpressionImpl implements BitwiseOrExpression
+{
+  /**
+   * The cached value of the '{@link #getLeftOperand() <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getLeftOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression leftOperand;
+
+  /**
+   * The cached value of the '{@link #getRightOperand() <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getRightOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression rightOperand;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected BitwiseOrExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.BITWISE_OR_EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getLeftOperand()
+  {
+    return leftOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetLeftOperand(Expression newLeftOperand, NotificationChain msgs)
+  {
+    Expression oldLeftOperand = leftOperand;
+    leftOperand = newLeftOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND, oldLeftOperand, newLeftOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setLeftOperand(Expression newLeftOperand)
+  {
+    if (newLeftOperand != leftOperand)
+    {
+      NotificationChain msgs = null;
+      if (leftOperand != null)
+        msgs = ((InternalEObject)leftOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND, null, msgs);
+      if (newLeftOperand != null)
+        msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND, null, msgs);
+      msgs = basicSetLeftOperand(newLeftOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getRightOperand()
+  {
+    return rightOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetRightOperand(Expression newRightOperand, NotificationChain msgs)
+  {
+    Expression oldRightOperand = rightOperand;
+    rightOperand = newRightOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND, oldRightOperand, newRightOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setRightOperand(Expression newRightOperand)
+  {
+    if (newRightOperand != rightOperand)
+    {
+      NotificationChain msgs = null;
+      if (rightOperand != null)
+        msgs = ((InternalEObject)rightOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      if (newRightOperand != null)
+        msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      msgs = basicSetRightOperand(newRightOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND, newRightOperand, newRightOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+        return basicSetLeftOperand(null, msgs);
+      case StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+        return basicSetRightOperand(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+        return getLeftOperand();
+      case StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+        return getRightOperand();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)newValue);
+        return;
+      case StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)null);
+        return;
+      case StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+        return leftOperand != null;
+      case StextPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+        return rightOperand != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //BitwiseOrExpressionImpl

+ 267 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseXorExpressionImpl.java

@@ -0,0 +1,267 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.stext.stext.BitwiseXorExpression;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bitwise Xor Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseXorExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.BitwiseXorExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BitwiseXorExpressionImpl extends ExpressionImpl implements BitwiseXorExpression
+{
+  /**
+   * The cached value of the '{@link #getLeftOperand() <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getLeftOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression leftOperand;
+
+  /**
+   * The cached value of the '{@link #getRightOperand() <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getRightOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression rightOperand;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected BitwiseXorExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.BITWISE_XOR_EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getLeftOperand()
+  {
+    return leftOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetLeftOperand(Expression newLeftOperand, NotificationChain msgs)
+  {
+    Expression oldLeftOperand = leftOperand;
+    leftOperand = newLeftOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND, oldLeftOperand, newLeftOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setLeftOperand(Expression newLeftOperand)
+  {
+    if (newLeftOperand != leftOperand)
+    {
+      NotificationChain msgs = null;
+      if (leftOperand != null)
+        msgs = ((InternalEObject)leftOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND, null, msgs);
+      if (newLeftOperand != null)
+        msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND, null, msgs);
+      msgs = basicSetLeftOperand(newLeftOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getRightOperand()
+  {
+    return rightOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetRightOperand(Expression newRightOperand, NotificationChain msgs)
+  {
+    Expression oldRightOperand = rightOperand;
+    rightOperand = newRightOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND, oldRightOperand, newRightOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setRightOperand(Expression newRightOperand)
+  {
+    if (newRightOperand != rightOperand)
+    {
+      NotificationChain msgs = null;
+      if (rightOperand != null)
+        msgs = ((InternalEObject)rightOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      if (newRightOperand != null)
+        msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      msgs = basicSetRightOperand(newRightOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND, newRightOperand, newRightOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+        return basicSetLeftOperand(null, msgs);
+      case StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+        return basicSetRightOperand(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+        return getLeftOperand();
+      case StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+        return getRightOperand();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)newValue);
+        return;
+      case StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)null);
+        return;
+      case StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+        return leftOperand != null;
+      case StextPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+        return rightOperand != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //BitwiseXorExpressionImpl

+ 338 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ConditionalExpressionImpl.java

@@ -0,0 +1,338 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.stext.stext.ConditionalExpression;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ConditionalExpressionImpl#getCondition <em>Condition</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ConditionalExpressionImpl#getTrueCase <em>True Case</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ConditionalExpressionImpl#getFalseCase <em>False Case</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConditionalExpressionImpl extends ExpressionImpl implements ConditionalExpression
+{
+  /**
+   * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getCondition()
+   * @generated
+   * @ordered
+   */
+  protected Expression condition;
+
+  /**
+   * The cached value of the '{@link #getTrueCase() <em>True Case</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTrueCase()
+   * @generated
+   * @ordered
+   */
+  protected Expression trueCase;
+
+  /**
+   * The cached value of the '{@link #getFalseCase() <em>False Case</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getFalseCase()
+   * @generated
+   * @ordered
+   */
+  protected Expression falseCase;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ConditionalExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.CONDITIONAL_EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getCondition()
+  {
+    return condition;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetCondition(Expression newCondition, NotificationChain msgs)
+  {
+    Expression oldCondition = condition;
+    condition = newCondition;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__CONDITION, oldCondition, newCondition);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setCondition(Expression newCondition)
+  {
+    if (newCondition != condition)
+    {
+      NotificationChain msgs = null;
+      if (condition != null)
+        msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__CONDITION, null, msgs);
+      if (newCondition != null)
+        msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__CONDITION, null, msgs);
+      msgs = basicSetCondition(newCondition, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__CONDITION, newCondition, newCondition));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getTrueCase()
+  {
+    return trueCase;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetTrueCase(Expression newTrueCase, NotificationChain msgs)
+  {
+    Expression oldTrueCase = trueCase;
+    trueCase = newTrueCase;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, oldTrueCase, newTrueCase);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setTrueCase(Expression newTrueCase)
+  {
+    if (newTrueCase != trueCase)
+    {
+      NotificationChain msgs = null;
+      if (trueCase != null)
+        msgs = ((InternalEObject)trueCase).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, null, msgs);
+      if (newTrueCase != null)
+        msgs = ((InternalEObject)newTrueCase).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, null, msgs);
+      msgs = basicSetTrueCase(newTrueCase, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, newTrueCase, newTrueCase));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getFalseCase()
+  {
+    return falseCase;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetFalseCase(Expression newFalseCase, NotificationChain msgs)
+  {
+    Expression oldFalseCase = falseCase;
+    falseCase = newFalseCase;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, oldFalseCase, newFalseCase);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setFalseCase(Expression newFalseCase)
+  {
+    if (newFalseCase != falseCase)
+    {
+      NotificationChain msgs = null;
+      if (falseCase != null)
+        msgs = ((InternalEObject)falseCase).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, null, msgs);
+      if (newFalseCase != null)
+        msgs = ((InternalEObject)newFalseCase).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, null, msgs);
+      msgs = basicSetFalseCase(newFalseCase, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, newFalseCase, newFalseCase));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case StextPackage.CONDITIONAL_EXPRESSION__CONDITION:
+        return basicSetCondition(null, msgs);
+      case StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+        return basicSetTrueCase(null, msgs);
+      case StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+        return basicSetFalseCase(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.CONDITIONAL_EXPRESSION__CONDITION:
+        return getCondition();
+      case StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+        return getTrueCase();
+      case StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+        return getFalseCase();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.CONDITIONAL_EXPRESSION__CONDITION:
+        setCondition((Expression)newValue);
+        return;
+      case StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+        setTrueCase((Expression)newValue);
+        return;
+      case StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+        setFalseCase((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.CONDITIONAL_EXPRESSION__CONDITION:
+        setCondition((Expression)null);
+        return;
+      case StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+        setTrueCase((Expression)null);
+        return;
+      case StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+        setFalseCase((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.CONDITIONAL_EXPRESSION__CONDITION:
+        return condition != null;
+      case StextPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+        return trueCase != null;
+      case StextPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+        return falseCase != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //ConditionalExpressionImpl

+ 6 - 7
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java

@@ -14,12 +14,13 @@ import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.yakindu.sct.model.sgraph.Effect;
+import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Trigger;
 
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
 
 import org.yakindu.sct.model.stext.stext.LocalReaction;
-import org.yakindu.sct.model.stext.stext.Reaction;
 import org.yakindu.sct.model.stext.stext.ReactionProperties;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 
@@ -353,9 +354,8 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
     {
       switch (derivedFeatureID)
       {
-        case StextPackage.LOCAL_REACTION__TRIGGER: return StextPackage.REACTION__TRIGGER;
-        case StextPackage.LOCAL_REACTION__EFFECT: return StextPackage.REACTION__EFFECT;
-        case StextPackage.LOCAL_REACTION__PROPERTIES: return StextPackage.REACTION__PROPERTIES;
+        case StextPackage.LOCAL_REACTION__TRIGGER: return SGraphPackage.REACTION__TRIGGER;
+        case StextPackage.LOCAL_REACTION__EFFECT: return SGraphPackage.REACTION__EFFECT;
         default: return -1;
       }
     }
@@ -374,9 +374,8 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
     {
       switch (baseFeatureID)
       {
-        case StextPackage.REACTION__TRIGGER: return StextPackage.LOCAL_REACTION__TRIGGER;
-        case StextPackage.REACTION__EFFECT: return StextPackage.LOCAL_REACTION__EFFECT;
-        case StextPackage.REACTION__PROPERTIES: return StextPackage.LOCAL_REACTION__PROPERTIES;
+        case SGraphPackage.REACTION__TRIGGER: return StextPackage.LOCAL_REACTION__TRIGGER;
+        case SGraphPackage.REACTION__EFFECT: return StextPackage.LOCAL_REACTION__EFFECT;
         default: return -1;
       }
     }

+ 0 - 342
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionImpl.java

@@ -1,342 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- */
-package org.yakindu.sct.model.stext.stext.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import org.yakindu.sct.model.sgraph.Effect;
-import org.yakindu.sct.model.sgraph.Trigger;
-
-import org.yakindu.sct.model.stext.stext.Reaction;
-import org.yakindu.sct.model.stext.stext.ReactionProperties;
-import org.yakindu.sct.model.stext.stext.StextPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Reaction</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * <ul>
- *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ReactionImpl#getTrigger <em>Trigger</em>}</li>
- *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ReactionImpl#getEffect <em>Effect</em>}</li>
- *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ReactionImpl#getProperties <em>Properties</em>}</li>
- * </ul>
- * </p>
- *
- * @generated
- */
-public class ReactionImpl extends MinimalEObjectImpl.Container implements Reaction
-{
-  /**
-   * The cached value of the '{@link #getTrigger() <em>Trigger</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #getTrigger()
-   * @generated
-   * @ordered
-   */
-  protected Trigger trigger;
-
-  /**
-   * The cached value of the '{@link #getEffect() <em>Effect</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #getEffect()
-   * @generated
-   * @ordered
-   */
-  protected Effect effect;
-
-  /**
-   * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #getProperties()
-   * @generated
-   * @ordered
-   */
-  protected ReactionProperties properties;
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  protected ReactionImpl()
-  {
-    super();
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  protected EClass eStaticClass()
-  {
-    return StextPackage.Literals.REACTION;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public Trigger getTrigger()
-  {
-    return trigger;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public NotificationChain basicSetTrigger(Trigger newTrigger, NotificationChain msgs)
-  {
-    Trigger oldTrigger = trigger;
-    trigger = newTrigger;
-    if (eNotificationRequired())
-    {
-      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__TRIGGER, oldTrigger, newTrigger);
-      if (msgs == null) msgs = notification; else msgs.add(notification);
-    }
-    return msgs;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public void setTrigger(Trigger newTrigger)
-  {
-    if (newTrigger != trigger)
-    {
-      NotificationChain msgs = null;
-      if (trigger != null)
-        msgs = ((InternalEObject)trigger).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__TRIGGER, null, msgs);
-      if (newTrigger != null)
-        msgs = ((InternalEObject)newTrigger).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__TRIGGER, null, msgs);
-      msgs = basicSetTrigger(newTrigger, msgs);
-      if (msgs != null) msgs.dispatch();
-    }
-    else if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__TRIGGER, newTrigger, newTrigger));
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public Effect getEffect()
-  {
-    return effect;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public NotificationChain basicSetEffect(Effect newEffect, NotificationChain msgs)
-  {
-    Effect oldEffect = effect;
-    effect = newEffect;
-    if (eNotificationRequired())
-    {
-      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__EFFECT, oldEffect, newEffect);
-      if (msgs == null) msgs = notification; else msgs.add(notification);
-    }
-    return msgs;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public void setEffect(Effect newEffect)
-  {
-    if (newEffect != effect)
-    {
-      NotificationChain msgs = null;
-      if (effect != null)
-        msgs = ((InternalEObject)effect).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__EFFECT, null, msgs);
-      if (newEffect != null)
-        msgs = ((InternalEObject)newEffect).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__EFFECT, null, msgs);
-      msgs = basicSetEffect(newEffect, msgs);
-      if (msgs != null) msgs.dispatch();
-    }
-    else if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__EFFECT, newEffect, newEffect));
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public ReactionProperties getProperties()
-  {
-    return properties;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public NotificationChain basicSetProperties(ReactionProperties newProperties, NotificationChain msgs)
-  {
-    ReactionProperties oldProperties = properties;
-    properties = newProperties;
-    if (eNotificationRequired())
-    {
-      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__PROPERTIES, oldProperties, newProperties);
-      if (msgs == null) msgs = notification; else msgs.add(notification);
-    }
-    return msgs;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public void setProperties(ReactionProperties newProperties)
-  {
-    if (newProperties != properties)
-    {
-      NotificationChain msgs = null;
-      if (properties != null)
-        msgs = ((InternalEObject)properties).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__PROPERTIES, null, msgs);
-      if (newProperties != null)
-        msgs = ((InternalEObject)newProperties).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.REACTION__PROPERTIES, null, msgs);
-      msgs = basicSetProperties(newProperties, msgs);
-      if (msgs != null) msgs.dispatch();
-    }
-    else if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.REACTION__PROPERTIES, newProperties, newProperties));
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
-  {
-    switch (featureID)
-    {
-      case StextPackage.REACTION__TRIGGER:
-        return basicSetTrigger(null, msgs);
-      case StextPackage.REACTION__EFFECT:
-        return basicSetEffect(null, msgs);
-      case StextPackage.REACTION__PROPERTIES:
-        return basicSetProperties(null, msgs);
-    }
-    return super.eInverseRemove(otherEnd, featureID, msgs);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Object eGet(int featureID, boolean resolve, boolean coreType)
-  {
-    switch (featureID)
-    {
-      case StextPackage.REACTION__TRIGGER:
-        return getTrigger();
-      case StextPackage.REACTION__EFFECT:
-        return getEffect();
-      case StextPackage.REACTION__PROPERTIES:
-        return getProperties();
-    }
-    return super.eGet(featureID, resolve, coreType);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public void eSet(int featureID, Object newValue)
-  {
-    switch (featureID)
-    {
-      case StextPackage.REACTION__TRIGGER:
-        setTrigger((Trigger)newValue);
-        return;
-      case StextPackage.REACTION__EFFECT:
-        setEffect((Effect)newValue);
-        return;
-      case StextPackage.REACTION__PROPERTIES:
-        setProperties((ReactionProperties)newValue);
-        return;
-    }
-    super.eSet(featureID, newValue);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public void eUnset(int featureID)
-  {
-    switch (featureID)
-    {
-      case StextPackage.REACTION__TRIGGER:
-        setTrigger((Trigger)null);
-        return;
-      case StextPackage.REACTION__EFFECT:
-        setEffect((Effect)null);
-        return;
-      case StextPackage.REACTION__PROPERTIES:
-        setProperties((ReactionProperties)null);
-        return;
-    }
-    super.eUnset(featureID);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public boolean eIsSet(int featureID)
-  {
-    switch (featureID)
-    {
-      case StextPackage.REACTION__TRIGGER:
-        return trigger != null;
-      case StextPackage.REACTION__EFFECT:
-        return effect != null;
-      case StextPackage.REACTION__PROPERTIES:
-        return properties != null;
-    }
-    return super.eIsSet(featureID);
-  }
-
-} //ReactionImpl

+ 339 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ShiftExpressionImpl.java

@@ -0,0 +1,339 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.ShiftExpression;
+import org.yakindu.sct.model.stext.stext.ShiftOperator;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Shift Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ShiftExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ShiftExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ShiftExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ShiftExpressionImpl extends ExpressionImpl implements ShiftExpression
+{
+  /**
+   * The cached value of the '{@link #getLeftOperand() <em>Left Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getLeftOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression leftOperand;
+
+  /**
+   * The default value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOperator()
+   * @generated
+   * @ordered
+   */
+  protected static final ShiftOperator OPERATOR_EDEFAULT = ShiftOperator.LEFT;
+
+  /**
+   * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOperator()
+   * @generated
+   * @ordered
+   */
+  protected ShiftOperator operator = OPERATOR_EDEFAULT;
+
+  /**
+   * The cached value of the '{@link #getRightOperand() <em>Right Operand</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getRightOperand()
+   * @generated
+   * @ordered
+   */
+  protected Expression rightOperand;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ShiftExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.SHIFT_EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getLeftOperand()
+  {
+    return leftOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetLeftOperand(Expression newLeftOperand, NotificationChain msgs)
+  {
+    Expression oldLeftOperand = leftOperand;
+    leftOperand = newLeftOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND, oldLeftOperand, newLeftOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setLeftOperand(Expression newLeftOperand)
+  {
+    if (newLeftOperand != leftOperand)
+    {
+      NotificationChain msgs = null;
+      if (leftOperand != null)
+        msgs = ((InternalEObject)leftOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND, null, msgs);
+      if (newLeftOperand != null)
+        msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND, null, msgs);
+      msgs = basicSetLeftOperand(newLeftOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShiftOperator getOperator()
+  {
+    return operator;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setOperator(ShiftOperator newOperator)
+  {
+    ShiftOperator oldOperator = operator;
+    operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.SHIFT_EXPRESSION__OPERATOR, oldOperator, operator));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getRightOperand()
+  {
+    return rightOperand;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetRightOperand(Expression newRightOperand, NotificationChain msgs)
+  {
+    Expression oldRightOperand = rightOperand;
+    rightOperand = newRightOperand;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, oldRightOperand, newRightOperand);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setRightOperand(Expression newRightOperand)
+  {
+    if (newRightOperand != rightOperand)
+    {
+      NotificationChain msgs = null;
+      if (rightOperand != null)
+        msgs = ((InternalEObject)rightOperand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      if (newRightOperand != null)
+        msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+      msgs = basicSetRightOperand(newRightOperand, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, newRightOperand, newRightOperand));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+        return basicSetLeftOperand(null, msgs);
+      case StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND:
+        return basicSetRightOperand(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+        return getLeftOperand();
+      case StextPackage.SHIFT_EXPRESSION__OPERATOR:
+        return getOperator();
+      case StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND:
+        return getRightOperand();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)newValue);
+        return;
+      case StextPackage.SHIFT_EXPRESSION__OPERATOR:
+        setOperator((ShiftOperator)newValue);
+        return;
+      case StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+        setLeftOperand((Expression)null);
+        return;
+      case StextPackage.SHIFT_EXPRESSION__OPERATOR:
+        setOperator(OPERATOR_EDEFAULT);
+        return;
+      case StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND:
+        setRightOperand((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+        return leftOperand != null;
+      case StextPackage.SHIFT_EXPRESSION__OPERATOR:
+        return operator != OPERATOR_EDEFAULT;
+      case StextPackage.SHIFT_EXPRESSION__RIGHT_OPERAND:
+        return rightOperand != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (operator: ");
+    result.append(operator);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ShiftExpressionImpl

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

@@ -77,7 +77,6 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
       case StextPackage.STATE_DECLARATION: return createStateDeclaration();
       case StextPackage.TRANSITION_STATEMENT: return createTransitionStatement();
       case StextPackage.EVENT_DERIVATION: return createEventDerivation();
-      case StextPackage.REACTION: return createReaction();
       case StextPackage.LOCAL_REACTION: return createLocalReaction();
       case StextPackage.TRANSITION_REACTION: return createTransitionReaction();
       case StextPackage.REACTION_PROPERTIES: return createReactionProperties();
@@ -108,10 +107,15 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
       case StextPackage.EXITPOINT: return createExitpoint();
       case StextPackage.REACTION_TRIGGER: return createReactionTrigger();
       case StextPackage.REACTION_EFFECT: return createReactionEffect();
+      case StextPackage.CONDITIONAL_EXPRESSION: return createConditionalExpression();
       case StextPackage.LOGICAL_OR_EXPRESSION: return createLogicalOrExpression();
       case StextPackage.LOGICAL_AND_EXPRESSION: return createLogicalAndExpression();
       case StextPackage.LOGICAL_NOT_EXPRESSION: return createLogicalNotExpression();
+      case StextPackage.BITWISE_XOR_EXPRESSION: return createBitwiseXorExpression();
+      case StextPackage.BITWISE_OR_EXPRESSION: return createBitwiseOrExpression();
+      case StextPackage.BITWISE_AND_EXPRESSION: return createBitwiseAndExpression();
       case StextPackage.LOGICAL_RELATION_EXPRESSION: return createLogicalRelationExpression();
+      case StextPackage.SHIFT_EXPRESSION: return createShiftExpression();
       case StextPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION: return createNumericalAddSubtractExpression();
       case StextPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION: return createNumericalMultiplyDivideExpression();
       case StextPackage.NUMERICAL_UNARY_EXPRESSION: return createNumericalUnaryExpression();
@@ -135,6 +139,10 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     {
       case StextPackage.DIRECTION:
         return createDirectionFromString(eDataType, initialValue);
+      case StextPackage.ASSIGNMENT_OPERATOR:
+        return createAssignmentOperatorFromString(eDataType, initialValue);
+      case StextPackage.SHIFT_OPERATOR:
+        return createShiftOperatorFromString(eDataType, initialValue);
       case StextPackage.ADDITIVE_OPERATOR:
         return createAdditiveOperatorFromString(eDataType, initialValue);
       case StextPackage.MULTIPLICATIVE_OPERATOR:
@@ -164,6 +172,10 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     {
       case StextPackage.DIRECTION:
         return convertDirectionToString(eDataType, instanceValue);
+      case StextPackage.ASSIGNMENT_OPERATOR:
+        return convertAssignmentOperatorToString(eDataType, instanceValue);
+      case StextPackage.SHIFT_OPERATOR:
+        return convertShiftOperatorToString(eDataType, instanceValue);
       case StextPackage.ADDITIVE_OPERATOR:
         return convertAdditiveOperatorToString(eDataType, instanceValue);
       case StextPackage.MULTIPLICATIVE_OPERATOR:
@@ -280,17 +292,6 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return eventDerivation;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public Reaction createReaction()
-  {
-    ReactionImpl reaction = new ReactionImpl();
-    return reaction;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -621,6 +622,17 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return reactionEffect;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ConditionalExpression createConditionalExpression()
+  {
+    ConditionalExpressionImpl conditionalExpression = new ConditionalExpressionImpl();
+    return conditionalExpression;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -654,6 +666,39 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return logicalNotExpression;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BitwiseXorExpression createBitwiseXorExpression()
+  {
+    BitwiseXorExpressionImpl bitwiseXorExpression = new BitwiseXorExpressionImpl();
+    return bitwiseXorExpression;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BitwiseOrExpression createBitwiseOrExpression()
+  {
+    BitwiseOrExpressionImpl bitwiseOrExpression = new BitwiseOrExpressionImpl();
+    return bitwiseOrExpression;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BitwiseAndExpression createBitwiseAndExpression()
+  {
+    BitwiseAndExpressionImpl bitwiseAndExpression = new BitwiseAndExpressionImpl();
+    return bitwiseAndExpression;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -665,6 +710,17 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return logicalRelationExpression;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShiftExpression createShiftExpression()
+  {
+    ShiftExpressionImpl shiftExpression = new ShiftExpressionImpl();
+    return shiftExpression;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -753,6 +809,50 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return instanceValue == null ? null : instanceValue.toString();
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public AssignmentOperator createAssignmentOperatorFromString(EDataType eDataType, String initialValue)
+  {
+    AssignmentOperator result = AssignmentOperator.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertAssignmentOperatorToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShiftOperator createShiftOperatorFromString(EDataType eDataType, String initialValue)
+  {
+    ShiftOperator result = ShiftOperator.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertShiftOperatorToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->

+ 341 - 49
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java

@@ -18,8 +18,13 @@ import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.stext.stext.AdditiveOperator;
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentOperator;
+import org.yakindu.sct.model.stext.stext.BitwiseAndExpression;
+import org.yakindu.sct.model.stext.stext.BitwiseOrExpression;
+import org.yakindu.sct.model.stext.stext.BitwiseXorExpression;
 import org.yakindu.sct.model.stext.stext.BuiltinEventSpec;
 import org.yakindu.sct.model.stext.stext.Clock;
+import org.yakindu.sct.model.stext.stext.ConditionalExpression;
 import org.yakindu.sct.model.stext.stext.DefRoot;
 import org.yakindu.sct.model.stext.stext.Direction;
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
@@ -49,7 +54,6 @@ import org.yakindu.sct.model.stext.stext.OnCycleEvent;
 import org.yakindu.sct.model.stext.stext.Operation;
 import org.yakindu.sct.model.stext.stext.OperationCall;
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
-import org.yakindu.sct.model.stext.stext.Reaction;
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.ReactionPriority;
 import org.yakindu.sct.model.stext.stext.ReactionProperties;
@@ -58,6 +62,8 @@ import org.yakindu.sct.model.stext.stext.ReactionTrigger;
 import org.yakindu.sct.model.stext.stext.RegularEventSpec;
 import org.yakindu.sct.model.stext.stext.RelationalOperator;
 import org.yakindu.sct.model.stext.stext.Root;
+import org.yakindu.sct.model.stext.stext.ShiftExpression;
+import org.yakindu.sct.model.stext.stext.ShiftOperator;
 import org.yakindu.sct.model.stext.stext.SimpleScope;
 import org.yakindu.sct.model.stext.stext.StateDeclaration;
 import org.yakindu.sct.model.stext.stext.StateRoot;
@@ -146,13 +152,6 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass eventDerivationEClass = null;
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  private EClass reactionEClass = null;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -363,6 +362,13 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass reactionEffectEClass = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass conditionalExpressionEClass = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -384,6 +390,27 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass logicalNotExpressionEClass = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass bitwiseXorExpressionEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass bitwiseOrExpressionEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass bitwiseAndExpressionEClass = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -391,6 +418,13 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass logicalRelationExpressionEClass = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass shiftExpressionEClass = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -440,6 +474,20 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EEnum directionEEnum = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EEnum assignmentOperatorEEnum = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EEnum shiftOperatorEEnum = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -723,29 +771,9 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    * <!-- end-user-doc -->
    * @generated
    */
-  public EClass getReaction()
-  {
-    return reactionEClass;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public EReference getReaction_Trigger()
-  {
-    return (EReference)reactionEClass.getEStructuralFeatures().get(0);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public EReference getReaction_Effect()
+  public EClass getLocalReaction()
   {
-    return (EReference)reactionEClass.getEStructuralFeatures().get(1);
+    return localReactionEClass;
   }
 
   /**
@@ -753,9 +781,9 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    * <!-- end-user-doc -->
    * @generated
    */
-  public EReference getReaction_Properties()
+  public EReference getLocalReaction_Properties()
   {
-    return (EReference)reactionEClass.getEStructuralFeatures().get(2);
+    return (EReference)localReactionEClass.getEStructuralFeatures().get(0);
   }
 
   /**
@@ -763,9 +791,9 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    * <!-- end-user-doc -->
    * @generated
    */
-  public EClass getLocalReaction()
+  public EClass getTransitionReaction()
   {
-    return localReactionEClass;
+    return transitionReactionEClass;
   }
 
   /**
@@ -773,9 +801,9 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    * <!-- end-user-doc -->
    * @generated
    */
-  public EClass getTransitionReaction()
+  public EReference getTransitionReaction_Properties()
   {
-    return transitionReactionEClass;
+    return (EReference)transitionReactionEClass.getEStructuralFeatures().get(0);
   }
 
   /**
@@ -1008,6 +1036,16 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return (EReference)assignmentEClass.getEStructuralFeatures().get(0);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getAssignment_Operator()
+  {
+    return (EAttribute)assignmentEClass.getEStructuralFeatures().get(1);
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1015,7 +1053,7 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   public EReference getAssignment_Expression()
   {
-    return (EReference)assignmentEClass.getEStructuralFeatures().get(1);
+    return (EReference)assignmentEClass.getEStructuralFeatures().get(2);
   }
 
   /**
@@ -1298,6 +1336,46 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return (EReference)reactionEffectEClass.getEStructuralFeatures().get(0);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getConditionalExpression()
+  {
+    return conditionalExpressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getConditionalExpression_Condition()
+  {
+    return (EReference)conditionalExpressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getConditionalExpression_TrueCase()
+  {
+    return (EReference)conditionalExpressionEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getConditionalExpression_FalseCase()
+  {
+    return (EReference)conditionalExpressionEClass.getEStructuralFeatures().get(2);
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1378,6 +1456,96 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return (EReference)logicalNotExpressionEClass.getEStructuralFeatures().get(0);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getBitwiseXorExpression()
+  {
+    return bitwiseXorExpressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseXorExpression_LeftOperand()
+  {
+    return (EReference)bitwiseXorExpressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseXorExpression_RightOperand()
+  {
+    return (EReference)bitwiseXorExpressionEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getBitwiseOrExpression()
+  {
+    return bitwiseOrExpressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseOrExpression_LeftOperand()
+  {
+    return (EReference)bitwiseOrExpressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseOrExpression_RightOperand()
+  {
+    return (EReference)bitwiseOrExpressionEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getBitwiseAndExpression()
+  {
+    return bitwiseAndExpressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseAndExpression_LeftOperand()
+  {
+    return (EReference)bitwiseAndExpressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getBitwiseAndExpression_RightOperand()
+  {
+    return (EReference)bitwiseAndExpressionEClass.getEStructuralFeatures().get(1);
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1418,6 +1586,46 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return (EReference)logicalRelationExpressionEClass.getEStructuralFeatures().get(2);
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getShiftExpression()
+  {
+    return shiftExpressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getShiftExpression_LeftOperand()
+  {
+    return (EReference)shiftExpressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getShiftExpression_Operator()
+  {
+    return (EAttribute)shiftExpressionEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getShiftExpression_RightOperand()
+  {
+    return (EReference)shiftExpressionEClass.getEStructuralFeatures().get(2);
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1608,6 +1816,26 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return directionEEnum;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EEnum getAssignmentOperator()
+  {
+    return assignmentOperatorEEnum;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EEnum getShiftOperator()
+  {
+    return shiftOperatorEEnum;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1724,14 +1952,11 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     createEReference(eventDerivationEClass, EVENT_DERIVATION__CONDITION);
     createEReference(eventDerivationEClass, EVENT_DERIVATION__VALUE);
 
-    reactionEClass = createEClass(REACTION);
-    createEReference(reactionEClass, REACTION__TRIGGER);
-    createEReference(reactionEClass, REACTION__EFFECT);
-    createEReference(reactionEClass, REACTION__PROPERTIES);
-
     localReactionEClass = createEClass(LOCAL_REACTION);
+    createEReference(localReactionEClass, LOCAL_REACTION__PROPERTIES);
 
     transitionReactionEClass = createEClass(TRANSITION_REACTION);
+    createEReference(transitionReactionEClass, TRANSITION_REACTION__PROPERTIES);
 
     reactionPropertiesEClass = createEClass(REACTION_PROPERTIES);
     createEReference(reactionPropertiesEClass, REACTION_PROPERTIES__PROPERTIES);
@@ -1770,6 +1995,7 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     assignmentEClass = createEClass(ASSIGNMENT);
     createEReference(assignmentEClass, ASSIGNMENT__VAR_REF);
+    createEAttribute(assignmentEClass, ASSIGNMENT__OPERATOR);
     createEReference(assignmentEClass, ASSIGNMENT__EXPRESSION);
 
     eventRaisingEClass = createEClass(EVENT_RAISING);
@@ -1813,6 +2039,11 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     reactionEffectEClass = createEClass(REACTION_EFFECT);
     createEReference(reactionEffectEClass, REACTION_EFFECT__ACTIONS);
 
+    conditionalExpressionEClass = createEClass(CONDITIONAL_EXPRESSION);
+    createEReference(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__CONDITION);
+    createEReference(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__TRUE_CASE);
+    createEReference(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__FALSE_CASE);
+
     logicalOrExpressionEClass = createEClass(LOGICAL_OR_EXPRESSION);
     createEReference(logicalOrExpressionEClass, LOGICAL_OR_EXPRESSION__LEFT_OPERAND);
     createEReference(logicalOrExpressionEClass, LOGICAL_OR_EXPRESSION__RIGHT_OPERAND);
@@ -1824,11 +2055,28 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     logicalNotExpressionEClass = createEClass(LOGICAL_NOT_EXPRESSION);
     createEReference(logicalNotExpressionEClass, LOGICAL_NOT_EXPRESSION__OPERAND);
 
+    bitwiseXorExpressionEClass = createEClass(BITWISE_XOR_EXPRESSION);
+    createEReference(bitwiseXorExpressionEClass, BITWISE_XOR_EXPRESSION__LEFT_OPERAND);
+    createEReference(bitwiseXorExpressionEClass, BITWISE_XOR_EXPRESSION__RIGHT_OPERAND);
+
+    bitwiseOrExpressionEClass = createEClass(BITWISE_OR_EXPRESSION);
+    createEReference(bitwiseOrExpressionEClass, BITWISE_OR_EXPRESSION__LEFT_OPERAND);
+    createEReference(bitwiseOrExpressionEClass, BITWISE_OR_EXPRESSION__RIGHT_OPERAND);
+
+    bitwiseAndExpressionEClass = createEClass(BITWISE_AND_EXPRESSION);
+    createEReference(bitwiseAndExpressionEClass, BITWISE_AND_EXPRESSION__LEFT_OPERAND);
+    createEReference(bitwiseAndExpressionEClass, BITWISE_AND_EXPRESSION__RIGHT_OPERAND);
+
     logicalRelationExpressionEClass = createEClass(LOGICAL_RELATION_EXPRESSION);
     createEReference(logicalRelationExpressionEClass, LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND);
     createEAttribute(logicalRelationExpressionEClass, LOGICAL_RELATION_EXPRESSION__OPERATOR);
     createEReference(logicalRelationExpressionEClass, LOGICAL_RELATION_EXPRESSION__RIGHT_OPERAND);
 
+    shiftExpressionEClass = createEClass(SHIFT_EXPRESSION);
+    createEReference(shiftExpressionEClass, SHIFT_EXPRESSION__LEFT_OPERAND);
+    createEAttribute(shiftExpressionEClass, SHIFT_EXPRESSION__OPERATOR);
+    createEReference(shiftExpressionEClass, SHIFT_EXPRESSION__RIGHT_OPERAND);
+
     numericalAddSubtractExpressionEClass = createEClass(NUMERICAL_ADD_SUBTRACT_EXPRESSION);
     createEReference(numericalAddSubtractExpressionEClass, NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND);
     createEAttribute(numericalAddSubtractExpressionEClass, NUMERICAL_ADD_SUBTRACT_EXPRESSION__OPERATOR);
@@ -1855,6 +2103,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     // Create enums
     directionEEnum = createEEnum(DIRECTION);
+    assignmentOperatorEEnum = createEEnum(ASSIGNMENT_OPERATOR);
+    shiftOperatorEEnum = createEEnum(SHIFT_OPERATOR);
     additiveOperatorEEnum = createEEnum(ADDITIVE_OPERATOR);
     multiplicativeOperatorEEnum = createEEnum(MULTIPLICATIVE_OPERATOR);
     unaryOperatorEEnum = createEEnum(UNARY_OPERATOR);
@@ -1899,9 +2149,9 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     stateRootEClass.getESuperTypes().add(this.getDefRoot());
     transitionRootEClass.getESuperTypes().add(this.getDefRoot());
     localReactionEClass.getESuperTypes().add(theSGraphPackage.getDeclaration());
-    localReactionEClass.getESuperTypes().add(this.getReaction());
+    localReactionEClass.getESuperTypes().add(theSGraphPackage.getReaction());
     transitionReactionEClass.getESuperTypes().add(this.getTransitionStatement());
-    transitionReactionEClass.getESuperTypes().add(this.getReaction());
+    transitionReactionEClass.getESuperTypes().add(theSGraphPackage.getReaction());
     reactionPriorityEClass.getESuperTypes().add(this.getReactionProperty());
     entryPointSpecEClass.getESuperTypes().add(this.getReactionProperty());
     exitPointSpecEClass.getESuperTypes().add(this.getReactionProperty());
@@ -1926,10 +2176,15 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     exitpointEClass.getESuperTypes().add(theSGraphPackage.getDeclaration());
     reactionTriggerEClass.getESuperTypes().add(theSGraphPackage.getTrigger());
     reactionEffectEClass.getESuperTypes().add(theSGraphPackage.getEffect());
+    conditionalExpressionEClass.getESuperTypes().add(this.getExpression());
     logicalOrExpressionEClass.getESuperTypes().add(this.getExpression());
     logicalAndExpressionEClass.getESuperTypes().add(this.getExpression());
     logicalNotExpressionEClass.getESuperTypes().add(this.getExpression());
+    bitwiseXorExpressionEClass.getESuperTypes().add(this.getExpression());
+    bitwiseOrExpressionEClass.getESuperTypes().add(this.getExpression());
+    bitwiseAndExpressionEClass.getESuperTypes().add(this.getExpression());
     logicalRelationExpressionEClass.getESuperTypes().add(this.getExpression());
+    shiftExpressionEClass.getESuperTypes().add(this.getExpression());
     numericalAddSubtractExpressionEClass.getESuperTypes().add(this.getExpression());
     numericalMultiplyDivideExpressionEClass.getESuperTypes().add(this.getExpression());
     numericalUnaryExpressionEClass.getESuperTypes().add(this.getExpression());
@@ -1964,14 +2219,11 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     initEReference(getEventDerivation_Condition(), this.getExpression(), null, "condition", null, 0, 1, EventDerivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getEventDerivation_Value(), this.getExpression(), null, "value", null, 0, 1, EventDerivation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-    initEClass(reactionEClass, Reaction.class, "Reaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-    initEReference(getReaction_Trigger(), theSGraphPackage.getTrigger(), null, "trigger", null, 0, 1, Reaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-    initEReference(getReaction_Effect(), theSGraphPackage.getEffect(), null, "effect", null, 0, 1, Reaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-    initEReference(getReaction_Properties(), this.getReactionProperties(), null, "properties", null, 0, 1, Reaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
     initEClass(localReactionEClass, LocalReaction.class, "LocalReaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getLocalReaction_Properties(), this.getReactionProperties(), null, "properties", null, 0, 1, LocalReaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(transitionReactionEClass, TransitionReaction.class, "TransitionReaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getTransitionReaction_Properties(), this.getReactionProperties(), null, "properties", null, 0, 1, TransitionReaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(reactionPropertiesEClass, ReactionProperties.class, "ReactionProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getReactionProperties_Properties(), this.getReactionProperty(), null, "properties", null, 0, -1, ReactionProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -2010,6 +2262,7 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     initEClass(assignmentEClass, Assignment.class, "Assignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getAssignment_VarRef(), theSGraphPackage.getVariable(), null, "varRef", null, 0, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getAssignment_Operator(), this.getAssignmentOperator(), "operator", null, 0, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getAssignment_Expression(), this.getExpression(), null, "expression", null, 0, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(eventRaisingEClass, EventRaising.class, "EventRaising", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -2053,6 +2306,11 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     initEClass(reactionEffectEClass, ReactionEffect.class, "ReactionEffect", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getReactionEffect_Actions(), this.getStatement(), null, "actions", null, 0, -1, ReactionEffect.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+    initEClass(conditionalExpressionEClass, ConditionalExpression.class, "ConditionalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getConditionalExpression_Condition(), this.getExpression(), null, "condition", null, 0, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getConditionalExpression_TrueCase(), this.getExpression(), null, "trueCase", null, 0, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getConditionalExpression_FalseCase(), this.getExpression(), null, "falseCase", null, 0, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
     initEClass(logicalOrExpressionEClass, LogicalOrExpression.class, "LogicalOrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getLogicalOrExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, LogicalOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getLogicalOrExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, LogicalOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -2064,11 +2322,28 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     initEClass(logicalNotExpressionEClass, LogicalNotExpression.class, "LogicalNotExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getLogicalNotExpression_Operand(), this.getExpression(), null, "operand", null, 0, 1, LogicalNotExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+    initEClass(bitwiseXorExpressionEClass, BitwiseXorExpression.class, "BitwiseXorExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getBitwiseXorExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, BitwiseXorExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getBitwiseXorExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, BitwiseXorExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(bitwiseOrExpressionEClass, BitwiseOrExpression.class, "BitwiseOrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getBitwiseOrExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, BitwiseOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getBitwiseOrExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, BitwiseOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(bitwiseAndExpressionEClass, BitwiseAndExpression.class, "BitwiseAndExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getBitwiseAndExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, BitwiseAndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getBitwiseAndExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, BitwiseAndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
     initEClass(logicalRelationExpressionEClass, LogicalRelationExpression.class, "LogicalRelationExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getLogicalRelationExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, LogicalRelationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEAttribute(getLogicalRelationExpression_Operator(), this.getRelationalOperator(), "operator", null, 0, 1, LogicalRelationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getLogicalRelationExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, LogicalRelationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+    initEClass(shiftExpressionEClass, ShiftExpression.class, "ShiftExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getShiftExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, ShiftExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getShiftExpression_Operator(), this.getShiftOperator(), "operator", null, 0, 1, ShiftExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getShiftExpression_RightOperand(), this.getExpression(), null, "rightOperand", null, 0, 1, ShiftExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
     initEClass(numericalAddSubtractExpressionEClass, NumericalAddSubtractExpression.class, "NumericalAddSubtractExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEReference(getNumericalAddSubtractExpression_LeftOperand(), this.getExpression(), null, "leftOperand", null, 0, 1, NumericalAddSubtractExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEAttribute(getNumericalAddSubtractExpression_Operator(), this.getAdditiveOperator(), "operator", null, 0, 1, NumericalAddSubtractExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -2098,6 +2373,23 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     addEEnumLiteral(directionEEnum, Direction.IN);
     addEEnumLiteral(directionEEnum, Direction.OUT);
 
+    initEEnum(assignmentOperatorEEnum, AssignmentOperator.class, "AssignmentOperator");
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.MULT_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.DIV_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.MOD_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.ADD_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.SUB_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.LEFT_SHIFT_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.RIGHT_SHIFT_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.AND_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.XOR_ASSIGN);
+    addEEnumLiteral(assignmentOperatorEEnum, AssignmentOperator.OR_ASSIGN);
+
+    initEEnum(shiftOperatorEEnum, ShiftOperator.class, "ShiftOperator");
+    addEEnumLiteral(shiftOperatorEEnum, ShiftOperator.LEFT);
+    addEEnumLiteral(shiftOperatorEEnum, ShiftOperator.RIGHT);
+
     initEEnum(additiveOperatorEEnum, AdditiveOperator.class, "AdditiveOperator");
     addEEnumLiteral(additiveOperatorEEnum, AdditiveOperator.PLUS);
     addEEnumLiteral(additiveOperatorEEnum, AdditiveOperator.MINUS);

+ 6 - 7
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/TransitionReactionImpl.java

@@ -14,9 +14,10 @@ import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.yakindu.sct.model.sgraph.Effect;
+import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Trigger;
 
-import org.yakindu.sct.model.stext.stext.Reaction;
 import org.yakindu.sct.model.stext.stext.ReactionProperties;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 import org.yakindu.sct.model.stext.stext.TransitionReaction;
@@ -351,9 +352,8 @@ public class TransitionReactionImpl extends TransitionStatementImpl implements T
     {
       switch (derivedFeatureID)
       {
-        case StextPackage.TRANSITION_REACTION__TRIGGER: return StextPackage.REACTION__TRIGGER;
-        case StextPackage.TRANSITION_REACTION__EFFECT: return StextPackage.REACTION__EFFECT;
-        case StextPackage.TRANSITION_REACTION__PROPERTIES: return StextPackage.REACTION__PROPERTIES;
+        case StextPackage.TRANSITION_REACTION__TRIGGER: return SGraphPackage.REACTION__TRIGGER;
+        case StextPackage.TRANSITION_REACTION__EFFECT: return SGraphPackage.REACTION__EFFECT;
         default: return -1;
       }
     }
@@ -372,9 +372,8 @@ public class TransitionReactionImpl extends TransitionStatementImpl implements T
     {
       switch (baseFeatureID)
       {
-        case StextPackage.REACTION__TRIGGER: return StextPackage.TRANSITION_REACTION__TRIGGER;
-        case StextPackage.REACTION__EFFECT: return StextPackage.TRANSITION_REACTION__EFFECT;
-        case StextPackage.REACTION__PROPERTIES: return StextPackage.TRANSITION_REACTION__PROPERTIES;
+        case SGraphPackage.REACTION__TRIGGER: return StextPackage.TRANSITION_REACTION__TRIGGER;
+        case SGraphPackage.REACTION__EFFECT: return StextPackage.TRANSITION_REACTION__EFFECT;
         default: return -1;
       }
     }

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

@@ -16,6 +16,7 @@ import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Event;
 import org.yakindu.sct.model.sgraph.NamedElement;
+import org.yakindu.sct.model.sgraph.Reaction;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.Trigger;
 import org.yakindu.sct.model.sgraph.Variable;
@@ -131,11 +132,6 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createEventDerivationAdapter();
       }
       @Override
-      public Adapter caseReaction(Reaction object)
-      {
-        return createReactionAdapter();
-      }
-      @Override
       public Adapter caseLocalReaction(LocalReaction object)
       {
         return createLocalReactionAdapter();
@@ -286,6 +282,11 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createReactionEffectAdapter();
       }
       @Override
+      public Adapter caseConditionalExpression(ConditionalExpression object)
+      {
+        return createConditionalExpressionAdapter();
+      }
+      @Override
       public Adapter caseLogicalOrExpression(LogicalOrExpression object)
       {
         return createLogicalOrExpressionAdapter();
@@ -301,11 +302,31 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createLogicalNotExpressionAdapter();
       }
       @Override
+      public Adapter caseBitwiseXorExpression(BitwiseXorExpression object)
+      {
+        return createBitwiseXorExpressionAdapter();
+      }
+      @Override
+      public Adapter caseBitwiseOrExpression(BitwiseOrExpression object)
+      {
+        return createBitwiseOrExpressionAdapter();
+      }
+      @Override
+      public Adapter caseBitwiseAndExpression(BitwiseAndExpression object)
+      {
+        return createBitwiseAndExpressionAdapter();
+      }
+      @Override
       public Adapter caseLogicalRelationExpression(LogicalRelationExpression object)
       {
         return createLogicalRelationExpressionAdapter();
       }
       @Override
+      public Adapter caseShiftExpression(ShiftExpression object)
+      {
+        return createShiftExpressionAdapter();
+      }
+      @Override
       public Adapter caseNumericalAddSubtractExpression(NumericalAddSubtractExpression object)
       {
         return createNumericalAddSubtractExpressionAdapter();
@@ -346,6 +367,11 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createDeclarationAdapter();
       }
       @Override
+      public Adapter caseReaction(Reaction object)
+      {
+        return createReactionAdapter();
+      }
+      @Override
       public Adapter caseScope(Scope object)
       {
         return createScopeAdapter();
@@ -527,21 +553,6 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
-  /**
-   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.Reaction <em>Reaction</em>}'.
-   * <!-- begin-user-doc -->
-   * This default implementation returns null so that we can easily ignore cases;
-   * it's useful to ignore a case when inheritance will catch all the cases anyway.
-   * <!-- end-user-doc -->
-   * @return the new adapter.
-   * @see org.yakindu.sct.model.stext.stext.Reaction
-   * @generated
-   */
-  public Adapter createReactionAdapter()
-  {
-    return null;
-  }
-
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.LocalReaction <em>Local Reaction</em>}'.
    * <!-- begin-user-doc -->
@@ -992,6 +1003,21 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.ConditionalExpression <em>Conditional Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.ConditionalExpression
+   * @generated
+   */
+  public Adapter createConditionalExpressionAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.LogicalOrExpression <em>Logical Or Expression</em>}'.
    * <!-- begin-user-doc -->
@@ -1037,6 +1063,51 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.BitwiseXorExpression <em>Bitwise Xor Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.BitwiseXorExpression
+   * @generated
+   */
+  public Adapter createBitwiseXorExpressionAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.BitwiseOrExpression <em>Bitwise Or Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.BitwiseOrExpression
+   * @generated
+   */
+  public Adapter createBitwiseOrExpressionAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.BitwiseAndExpression <em>Bitwise And Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.BitwiseAndExpression
+   * @generated
+   */
+  public Adapter createBitwiseAndExpressionAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.LogicalRelationExpression <em>Logical Relation Expression</em>}'.
    * <!-- begin-user-doc -->
@@ -1052,6 +1123,21 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.ShiftExpression <em>Shift Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.ShiftExpression
+   * @generated
+   */
+  public Adapter createShiftExpressionAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.NumericalAddSubtractExpression <em>Numerical Add Subtract Expression</em>}'.
    * <!-- begin-user-doc -->
@@ -1172,6 +1258,21 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.Reaction <em>Reaction</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.sgraph.Reaction
+   * @generated
+   */
+  public Adapter createReactionAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.Scope <em>Scope</em>}'.
    * <!-- begin-user-doc -->

+ 142 - 23
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java

@@ -14,6 +14,7 @@ import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Event;
 import org.yakindu.sct.model.sgraph.NamedElement;
+import org.yakindu.sct.model.sgraph.Reaction;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.Trigger;
 import org.yakindu.sct.model.sgraph.Variable;
@@ -149,13 +150,6 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case StextPackage.REACTION:
-      {
-        Reaction reaction = (Reaction)theEObject;
-        T result = caseReaction(reaction);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
       case StextPackage.LOCAL_REACTION:
       {
         LocalReaction localReaction = (LocalReaction)theEObject;
@@ -407,6 +401,15 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case StextPackage.CONDITIONAL_EXPRESSION:
+      {
+        ConditionalExpression conditionalExpression = (ConditionalExpression)theEObject;
+        T result = caseConditionalExpression(conditionalExpression);
+        if (result == null) result = caseExpression(conditionalExpression);
+        if (result == null) result = caseStatement(conditionalExpression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case StextPackage.LOGICAL_OR_EXPRESSION:
       {
         LogicalOrExpression logicalOrExpression = (LogicalOrExpression)theEObject;
@@ -434,6 +437,33 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case StextPackage.BITWISE_XOR_EXPRESSION:
+      {
+        BitwiseXorExpression bitwiseXorExpression = (BitwiseXorExpression)theEObject;
+        T result = caseBitwiseXorExpression(bitwiseXorExpression);
+        if (result == null) result = caseExpression(bitwiseXorExpression);
+        if (result == null) result = caseStatement(bitwiseXorExpression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case StextPackage.BITWISE_OR_EXPRESSION:
+      {
+        BitwiseOrExpression bitwiseOrExpression = (BitwiseOrExpression)theEObject;
+        T result = caseBitwiseOrExpression(bitwiseOrExpression);
+        if (result == null) result = caseExpression(bitwiseOrExpression);
+        if (result == null) result = caseStatement(bitwiseOrExpression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case StextPackage.BITWISE_AND_EXPRESSION:
+      {
+        BitwiseAndExpression bitwiseAndExpression = (BitwiseAndExpression)theEObject;
+        T result = caseBitwiseAndExpression(bitwiseAndExpression);
+        if (result == null) result = caseExpression(bitwiseAndExpression);
+        if (result == null) result = caseStatement(bitwiseAndExpression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case StextPackage.LOGICAL_RELATION_EXPRESSION:
       {
         LogicalRelationExpression logicalRelationExpression = (LogicalRelationExpression)theEObject;
@@ -443,6 +473,15 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case StextPackage.SHIFT_EXPRESSION:
+      {
+        ShiftExpression shiftExpression = (ShiftExpression)theEObject;
+        T result = caseShiftExpression(shiftExpression);
+        if (result == null) result = caseExpression(shiftExpression);
+        if (result == null) result = caseStatement(shiftExpression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case StextPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION:
       {
         NumericalAddSubtractExpression numericalAddSubtractExpression = (NumericalAddSubtractExpression)theEObject;
@@ -645,22 +684,6 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
-  /**
-   * Returns the result of interpreting the object as an instance of '<em>Reaction</em>'.
-   * <!-- begin-user-doc -->
-   * This implementation returns null;
-   * returning a non-null result will terminate the switch.
-   * <!-- end-user-doc -->
-   * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Reaction</em>'.
-   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-   * @generated
-   */
-  public T caseReaction(Reaction object)
-  {
-    return null;
-  }
-
   /**
    * Returns the result of interpreting the object as an instance of '<em>Local Reaction</em>'.
    * <!-- begin-user-doc -->
@@ -1141,6 +1164,22 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Conditional Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Conditional Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseConditionalExpression(ConditionalExpression object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Logical Or Expression</em>'.
    * <!-- begin-user-doc -->
@@ -1189,6 +1228,54 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Bitwise Xor Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Bitwise Xor Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseBitwiseXorExpression(BitwiseXorExpression object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Bitwise Or Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Bitwise Or Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseBitwiseOrExpression(BitwiseOrExpression object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Bitwise And Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Bitwise And Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseBitwiseAndExpression(BitwiseAndExpression object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Logical Relation Expression</em>'.
    * <!-- begin-user-doc -->
@@ -1205,6 +1292,22 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Shift Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Shift Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseShiftExpression(ShiftExpression object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Numerical Add Subtract Expression</em>'.
    * <!-- begin-user-doc -->
@@ -1333,6 +1436,22 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Reaction</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Reaction</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseReaction(Reaction object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Scope</em>'.
    * <!-- begin-user-doc -->

+ 1 - 1
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/ExecutionScope.java

@@ -27,7 +27,7 @@ public interface ExecutionScope {
 
 	void call(String procedureId);
 
-	void raise(String signal);
+	void raise(String signal, Object object);
 
 	void setVariableValue(RTVariable variable, Object object);
 	

+ 1 - 1
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/sgraph/ExecutionScopeAdapter.java

@@ -58,7 +58,7 @@ public class ExecutionScopeAdapter implements ISGraphExecutionScope {
 	}
 
 	public void raise(String signal) {
-		scope.raise(signal);
+		scope.raise(signal, null);
 	}
 
 	public List<ScopeEvent> getEvents() {

+ 1 - 1
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/sgraph/RTStatechart.java

@@ -148,7 +148,7 @@ public class RTStatechart extends AbstractStatechart implements ExecutionScope,
 		return Collections.unmodifiableSet(currentStateConfigurartion);
 	}
 
-	public void raise(String signal) {
+	public void raise(String signal, Object object) {
 		setEvent(eventMap.get(signal));
 	}
 

+ 1 - 1
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/RTScope.java

@@ -63,7 +63,7 @@ public class RTScope implements ExecutionScope {
 	/* (non-Javadoc)
 	 * @see com.yakindu.statechart.model.expressions.runtime.ExecutionScope#raise(java.lang.String)
 	 */
-	public void raise(String signal) {
+	public void raise(String signal, Object object) {
 		// TODO Auto-generated method stub		
 	}
 

+ 4 - 2
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/Raise.java

@@ -15,6 +15,7 @@ import org.yakindu.sct.simulation.runtime.ExecutionScope;
 public class Raise implements RTStatement {
 
 	protected String signal;
+	protected RTExpression valueExpression;
 	
 	
 	public Raise() {
@@ -22,9 +23,10 @@ public class Raise implements RTStatement {
 	}
 	
 
-	public Raise(String signal) {
+	public Raise(String signal, RTExpression valueExp) {
 		this();
 		this.signal = signal;
+		this.valueExpression = valueExp;
 	}
 
 
@@ -39,7 +41,7 @@ public class Raise implements RTStatement {
 
 
 	public void execute(ExecutionScope scope) {
-		scope.raise(signal);
+		scope.raise(signal, valueExpression != null ? valueExpression.execute(scope) : null);
 	}
 
 }

+ 32 - 3
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/builder/STextBuilder.java

@@ -26,6 +26,7 @@ import org.yakindu.sct.model.stext.stext.Type;
 import org.yakindu.sct.model.stext.stext.VariableDefinition;
 import org.yakindu.sct.simulation.runtime.stext.Assign;
 import org.yakindu.sct.simulation.runtime.stext.BinaryOperation;
+import org.yakindu.sct.simulation.runtime.stext.Conditional;
 import org.yakindu.sct.simulation.runtime.stext.Constant;
 import org.yakindu.sct.simulation.runtime.stext.CoreFunction;
 import org.yakindu.sct.simulation.runtime.stext.Function;
@@ -153,7 +154,9 @@ public class STextBuilder extends Function {
 	public RTStatement buildEventRaising(EObject obj) {
 
 		EObject event = getToOne(obj, "event");
-		return new Raise(getString(event, "name"));
+		RTExpression value = buildRefExpression(obj, "value");
+
+		return new Raise(getString(event, "name"), value);
 	}
 
 	@FunctionMethod("build")
@@ -168,8 +171,34 @@ public class STextBuilder extends Function {
 		if (variable == null)
 			throw new IllegalStateException("Unknown variable reference " + obj);
 		RTExpression exp = (RTExpression) build(getToOne(obj, "expression"));
-		return new Assign(new VariableRef(getString(variable, "name")), exp);
+		String operator = getLiteral(obj, "operator");
+		VariableRef var = new VariableRef(getString(variable, "name"));
+		
+		if (! "assign".equals(operator)) {
+			String mappedOperator = assignFunctionMap.get(operator);
+			if (mappedOperator == null) 
+				throw new BuilderException("Assignment operator '" + operator + "' can not be resolved to a function.");
+			
+			exp = new BinaryOperation(mappedOperator, var, exp);
+		}
+
+		return new Assign(var, exp);
 	}
+	
+	
+	@FunctionMethod("build")
+	public RTExpression buildConditionalExpression(EObject obj) {
+		
+		RTExpression condition = buildRefExpression(obj, "condition");
+		RTExpression trueCase = buildRefExpression(obj, "trueCase");
+		RTExpression falseCase = buildRefExpression(obj, "falseCase");
+
+		if (condition != null && trueCase != null && falseCase != null)
+			return new Conditional(condition, trueCase, falseCase);
+		
+		return condition;
+	}
+
 
 	@FunctionMethod("build")
 	public RTExpression buildLogicalOrExpression(EObject obj) {
@@ -278,7 +307,7 @@ public class STextBuilder extends Function {
 	}
 
 	@FunctionMethod("build")
-	public RTExpression buildUnaryExpression(EObject obj) {
+	public RTExpression buildNumericalUnaryExpression(EObject obj) {
 
 		RTExpression operand = buildRefExpression(obj, "operand");
 		String operator = getLiteral(obj, "operator");

+ 39 - 4
test-plugins/org.yakindu.sct.simulation.runtime.test/src/org/yakindu/sct/simulation/runtime/stext/builder/test/STextBuilderTest.java

@@ -81,9 +81,9 @@ public class STextBuilderTest {
 		}
 
 		@Override
-		public void raise(String signal) {
+		public void raise(String signal, Object object) {
 			trace.add("raise:" + signal);
-			super.raise(signal);
+			super.raise(signal, object);
 			raised = signal;
 		}
 
@@ -282,6 +282,16 @@ public class STextBuilderTest {
 		assertEquals(1, scope.getValue("a"));
 	}
 
+	@Test
+	public void testNestedExpression() {
+		RTStatement stmt = parseReactionEffect("a = (1 + 1) * 2;");
+		scope.addVariable(new RTVariable("a"));
+		stmt.execute(scope);
+
+		assertEquals(4, scope.getValue("a"));
+	}
+
+
 	@Test
 	public void testBooleanOr() {
 		RTStatement stmt = parseReactionEffect("a = true || false;");
@@ -454,11 +464,17 @@ public class STextBuilderTest {
 
 	@Test
 	public void testIntPositive() {
-		RTStatement stmt = parseReactionEffect("a = +1;");
+		RTStatement stmt = parseReactionEffect("a = + 1;");
 		scope.addVariable(new RTVariable("a"));
 		stmt.execute(scope);
 
 		assertEquals(1, scope.getValue("a"));
+
+		stmt = parseReactionEffect("a = +2;");
+		stmt.execute(scope);
+
+		assertEquals(2, scope.getValue("a"));
+
 	}
 
 	@Test
@@ -472,13 +488,32 @@ public class STextBuilderTest {
 
 	@Test
 	public void testIntNegative() {
-		RTStatement stmt = parseReactionEffect("a = -1;");
+		RTStatement stmt = parseReactionEffect("a = - 1;");
 		scope.addVariable(new RTVariable("a"));
 		stmt.execute(scope);
 
 		assertEquals(-1, scope.getValue("a"));
+
+		stmt = parseReactionEffect("a = -2;");
+		scope.addVariable(new RTVariable("a"));
+		stmt.execute(scope);
+
+		assertEquals(-2, scope.getValue("a"));
+	
 	}
 
+	@Test
+	public void testIntNegativeVar() {
+		RTVariable a = new RTVariable("a");
+		scope.addVariable(a);
+		scope.setVariableValue(a, 42);
+		RTStatement stmt = parseReactionEffect("a = -a;");
+		stmt.execute(scope);
+
+		assertEquals(-42, scope.getValue("a"));
+	}
+
+	
 	@Test
 	public void testFloatNegative() {
 		RTStatement stmt = parseReactionEffect("a = -1.0f;");

+ 4 - 4
test-plugins/org.yakindu.sct.simulation.runtime.test/src/org/yakindu/sct/simulation/runtime/stext/test/ExpressionsTest.java

@@ -70,9 +70,9 @@ public class ExpressionsTest {
 		}
 
 		@Override
-		public void raise(String signal) {
+		public void raise(String signal, Object object) {
 			trace.add("raise:" + signal);
-			super.raise(signal);
+			super.raise(signal, object);
 			raised = signal;
 		}
 
@@ -126,7 +126,7 @@ public class ExpressionsTest {
 	 */
 	@Test
 	public void testRaise() {
-		RTStatement stmt = new Raise("signal");
+		RTStatement stmt = new Raise("signal", null);
 
 		stmt.execute(scope);
 		assertEquals("signal", scope.raised);
@@ -172,7 +172,7 @@ public class ExpressionsTest {
 		scope.addVariable(new RTVariable("a"));
 
 		StatementSequence seq = new StatementSequence();
-		seq.add(new Raise("signal"));
+		seq.add(new Raise("signal", null));
 		seq.add(new ProcedureCall("proc"));
 		seq.add(new Assign(new VariableRef("a"), new Constant(1)));