Quellcode durchsuchen

Expressions.ecore is not generated by the xtext grammar anymore

Andreas Mülder vor 11 Jahren
Ursprung
Commit
68e23bf387
64 geänderte Dateien mit 14445 neuen und 149 gelöschten Zeilen
  1. 208 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AdditiveOperator.java
  2. 106 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AssignmentExpression.java
  3. 451 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AssignmentOperator.java
  4. 76 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseAndExpression.java
  5. 76 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseOrExpression.java
  6. 76 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseXorExpression.java
  7. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BoolLiteral.java
  8. 103 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ConditionalExpression.java
  9. 96 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ElementReferenceExpression.java
  10. 18 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/Expression.java
  11. 249 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsFactory.java
  12. 2460 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsPackage.java
  13. 123 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/FeatureCall.java
  14. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/HexLiteral.java
  15. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/IntLiteral.java
  16. 18 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/Literal.java
  17. 76 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalAndExpression.java
  18. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalNotExpression.java
  19. 76 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalOrExpression.java
  20. 106 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalRelationExpression.java
  21. 235 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/MultiplicativeOperator.java
  22. 106 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalAddSubtractExpression.java
  23. 106 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalMultiplyDivideExpression.java
  24. 79 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalUnaryExpression.java
  25. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ParenthesizedExpression.java
  26. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/PrimitiveValueExpression.java
  27. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/RealLiteral.java
  28. 316 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/RelationalOperator.java
  29. 106 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ShiftExpression.java
  30. 208 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ShiftOperator.java
  31. 49 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/StringLiteral.java
  32. 235 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/UnaryOperator.java
  33. 310 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/AssignmentExpressionImpl.java
  34. 241 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseAndExpressionImpl.java
  35. 241 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseOrExpressionImpl.java
  36. 241 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseXorExpressionImpl.java
  37. 162 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BoolLiteralImpl.java
  38. 307 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ConditionalExpressionImpl.java
  39. 282 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ElementReferenceExpressionImpl.java
  40. 41 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionImpl.java
  41. 519 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsFactoryImpl.java
  42. 1318 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsPackageImpl.java
  43. 348 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/FeatureCallImpl.java
  44. 162 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/HexLiteralImpl.java
  45. 162 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/IntLiteralImpl.java
  46. 41 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LiteralImpl.java
  47. 241 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalAndExpressionImpl.java
  48. 175 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalNotExpressionImpl.java
  49. 241 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalOrExpressionImpl.java
  50. 310 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalRelationExpressionImpl.java
  51. 310 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalAddSubtractExpressionImpl.java
  52. 310 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalMultiplyDivideExpressionImpl.java
  53. 244 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalUnaryExpressionImpl.java
  54. 175 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ParenthesizedExpressionImpl.java
  55. 175 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/PrimitiveValueExpressionImpl.java
  56. 162 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/RealLiteralImpl.java
  57. 310 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ShiftExpressionImpl.java
  58. 162 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/StringLiteralImpl.java
  59. 534 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsAdapterFactory.java
  60. 615 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsSwitch.java
  61. 0 0
      plugins/org.yakindu.base.expressions/model/Expressions.ecore
  62. 0 141
      plugins/org.yakindu.base.expressions/model/generated/Expressions.genmodel
  63. 1 1
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/Expressions.xtext
  64. 4 7
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/GenerateExpressions.mwe2

+ 208 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AdditiveOperator.java

@@ -0,0 +1,208 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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>Additive Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getAdditiveOperator()
+ * @model
+ * @generated
+ */
+public enum AdditiveOperator implements Enumerator {
+	/**
+	 * The '<em><b>Plus</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PLUS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PLUS(0, "plus", "+"),
+
+	/**
+	 * The '<em><b>Minus</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MINUS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MINUS(1, "minus", "-");
+
+	/**
+	 * The '<em><b>Plus</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Plus</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PLUS
+	 * @model name="plus" literal="+"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PLUS_VALUE = 0;
+
+	/**
+	 * The '<em><b>Minus</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Minus</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MINUS
+	 * @model name="minus" literal="-"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MINUS_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Additive Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final AdditiveOperator[] VALUES_ARRAY =
+		new AdditiveOperator[] {
+			PLUS,
+			MINUS,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Additive Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<AdditiveOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Additive Operator</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AdditiveOperator get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AdditiveOperator result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Additive Operator</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AdditiveOperator getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AdditiveOperator result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Additive Operator</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AdditiveOperator get(int value) {
+		switch (value) {
+			case PLUS_VALUE: return PLUS;
+			case MINUS_VALUE: return MINUS;
+		}
+		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 AdditiveOperator(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;
+	}
+	
+} //AdditiveOperator

+ 106 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AssignmentExpression.java

@@ -0,0 +1,106 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Assignment Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.AssignmentExpression#getVarRef <em>Var Ref</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.AssignmentExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.AssignmentExpression#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getAssignmentExpression()
+ * @model
+ * @generated
+ */
+public interface AssignmentExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Var Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Var Ref</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>Var Ref</em>' containment reference.
+	 * @see #setVarRef(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getAssignmentExpression_VarRef()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getVarRef();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.AssignmentExpression#getVarRef <em>Var Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Var Ref</em>' containment reference.
+	 * @see #getVarRef()
+	 * @generated
+	 */
+	void setVarRef(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Operator</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.AssignmentOperator
+	 * @see #setOperator(AssignmentOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getAssignmentExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	AssignmentOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.AssignmentExpression#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.base.expressions.expressions.AssignmentOperator
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(AssignmentOperator value);
+
+	/**
+	 * Returns the value of the '<em><b>Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Expression</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>Expression</em>' containment reference.
+	 * @see #setExpression(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getAssignmentExpression_Expression()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getExpression();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.AssignmentExpression#getExpression <em>Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Expression</em>' containment reference.
+	 * @see #getExpression()
+	 * @generated
+	 */
+	void setExpression(Expression value);
+
+} // AssignmentExpression

+ 451 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/AssignmentOperator.java

@@ -0,0 +1,451 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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.base.expressions.expressions.ExpressionsPackage#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

+ 76 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseAndExpression.java

@@ -0,0 +1,76 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- 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.base.expressions.expressions.BitwiseAndExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.BitwiseAndExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#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.base.expressions.expressions.ExpressionsPackage#getBitwiseAndExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getBitwiseAndExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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

+ 76 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseOrExpression.java

@@ -0,0 +1,76 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- 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.base.expressions.expressions.BitwiseOrExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.BitwiseOrExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#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.base.expressions.expressions.ExpressionsPackage#getBitwiseOrExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getBitwiseOrExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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

+ 76 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BitwiseXorExpression.java

@@ -0,0 +1,76 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- 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.base.expressions.expressions.BitwiseXorExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.BitwiseXorExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#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.base.expressions.expressions.ExpressionsPackage#getBitwiseXorExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getBitwiseXorExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BoolLiteral.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bool Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.BoolLiteral#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getBoolLiteral()
+ * @model
+ * @generated
+ */
+public interface BoolLiteral extends Literal {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(boolean)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getBoolLiteral_Value()
+	 * @model
+	 * @generated
+	 */
+	boolean isValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.BoolLiteral#isValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #isValue()
+	 * @generated
+	 */
+	void setValue(boolean value);
+
+} // BoolLiteral

+ 103 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ConditionalExpression.java

@@ -0,0 +1,103 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- 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.base.expressions.expressions.ConditionalExpression#getCondition <em>Condition</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ConditionalExpression#getTrueCase <em>True Case</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ConditionalExpression#getFalseCase <em>False Case</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#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.base.expressions.expressions.ExpressionsPackage#getConditionalExpression_Condition()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getCondition();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getConditionalExpression_TrueCase()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getTrueCase();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getConditionalExpression_FalseCase()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getFalseCase();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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

+ 96 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ElementReferenceExpression.java

@@ -0,0 +1,96 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element Reference Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression#getReference <em>Reference</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression#isOperationCall <em>Operation Call</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getElementReferenceExpression()
+ * @model
+ * @generated
+ */
+public interface ElementReferenceExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Reference</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reference</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reference</em>' reference.
+	 * @see #setReference(EObject)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getElementReferenceExpression_Reference()
+	 * @model
+	 * @generated
+	 */
+	EObject getReference();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression#getReference <em>Reference</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reference</em>' reference.
+	 * @see #getReference()
+	 * @generated
+	 */
+	void setReference(EObject value);
+
+	/**
+	 * Returns the value of the '<em><b>Operation Call</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operation Call</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Operation Call</em>' attribute.
+	 * @see #setOperationCall(boolean)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getElementReferenceExpression_OperationCall()
+	 * @model
+	 * @generated
+	 */
+	boolean isOperationCall();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression#isOperationCall <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operation Call</em>' attribute.
+	 * @see #isOperationCall()
+	 * @generated
+	 */
+	void setOperationCall(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Args</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.base.expressions.expressions.Expression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Args</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Args</em>' containment reference list.
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getElementReferenceExpression_Args()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Expression> getArgs();
+
+} // ElementReferenceExpression

+ 18 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/Expression.java

@@ -0,0 +1,18 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getExpression()
+ * @model
+ * @generated
+ */
+public interface Expression extends EObject {
+} // Expression

+ 249 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsFactory.java

@@ -0,0 +1,249 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage
+ * @generated
+ */
+public interface ExpressionsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ExpressionsFactory eINSTANCE = org.yakindu.base.expressions.expressions.impl.ExpressionsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Expression</em>'.
+	 * @generated
+	 */
+	Expression createExpression();
+
+	/**
+	 * Returns a new object of class '<em>Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Literal</em>'.
+	 * @generated
+	 */
+	Literal createLiteral();
+
+	/**
+	 * Returns a new object of class '<em>Bool Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Bool Literal</em>'.
+	 * @generated
+	 */
+	BoolLiteral createBoolLiteral();
+
+	/**
+	 * Returns a new object of class '<em>Int Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Int Literal</em>'.
+	 * @generated
+	 */
+	IntLiteral createIntLiteral();
+
+	/**
+	 * Returns a new object of class '<em>Real Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Real Literal</em>'.
+	 * @generated
+	 */
+	RealLiteral createRealLiteral();
+
+	/**
+	 * Returns a new object of class '<em>Hex Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hex Literal</em>'.
+	 * @generated
+	 */
+	HexLiteral createHexLiteral();
+
+	/**
+	 * Returns a new object of class '<em>String Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>String Literal</em>'.
+	 * @generated
+	 */
+	StringLiteral createStringLiteral();
+
+	/**
+	 * Returns a new object of class '<em>Assignment Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Assignment Expression</em>'.
+	 * @generated
+	 */
+	AssignmentExpression createAssignmentExpression();
+
+	/**
+	 * 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 -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Logical Or Expression</em>'.
+	 * @generated
+	 */
+	LogicalOrExpression createLogicalOrExpression();
+
+	/**
+	 * Returns a new object of class '<em>Logical And Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Logical And Expression</em>'.
+	 * @generated
+	 */
+	LogicalAndExpression createLogicalAndExpression();
+
+	/**
+	 * Returns a new object of class '<em>Logical Not Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Logical Not Expression</em>'.
+	 * @generated
+	 */
+	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 -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Logical Relation Expression</em>'.
+	 * @generated
+	 */
+	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 -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Numerical Add Subtract Expression</em>'.
+	 * @generated
+	 */
+	NumericalAddSubtractExpression createNumericalAddSubtractExpression();
+
+	/**
+	 * Returns a new object of class '<em>Numerical Multiply Divide Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Numerical Multiply Divide Expression</em>'.
+	 * @generated
+	 */
+	NumericalMultiplyDivideExpression createNumericalMultiplyDivideExpression();
+
+	/**
+	 * Returns a new object of class '<em>Numerical Unary Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Numerical Unary Expression</em>'.
+	 * @generated
+	 */
+	NumericalUnaryExpression createNumericalUnaryExpression();
+
+	/**
+	 * Returns a new object of class '<em>Primitive Value Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Primitive Value Expression</em>'.
+	 * @generated
+	 */
+	PrimitiveValueExpression createPrimitiveValueExpression();
+
+	/**
+	 * Returns a new object of class '<em>Feature Call</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Feature Call</em>'.
+	 * @generated
+	 */
+	FeatureCall createFeatureCall();
+
+	/**
+	 * Returns a new object of class '<em>Element Reference Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Element Reference Expression</em>'.
+	 * @generated
+	 */
+	ElementReferenceExpression createElementReferenceExpression();
+
+	/**
+	 * Returns a new object of class '<em>Parenthesized Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Parenthesized Expression</em>'.
+	 * @generated
+	 */
+	ParenthesizedExpression createParenthesizedExpression();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ExpressionsPackage getExpressionsPackage();
+
+} //ExpressionsFactory

Datei-Diff unterdrückt, da er zu groß ist
+ 2460 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsPackage.java


+ 123 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/FeatureCall.java

@@ -0,0 +1,123 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Feature Call</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.FeatureCall#getOwner <em>Owner</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.FeatureCall#getFeature <em>Feature</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.FeatureCall#isOperationCall <em>Operation Call</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.FeatureCall#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getFeatureCall()
+ * @model
+ * @generated
+ */
+public interface FeatureCall extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Owner</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Owner</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>Owner</em>' containment reference.
+	 * @see #setOwner(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getFeatureCall_Owner()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getOwner();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.FeatureCall#getOwner <em>Owner</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Owner</em>' containment reference.
+	 * @see #getOwner()
+	 * @generated
+	 */
+	void setOwner(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Feature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Feature</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Feature</em>' reference.
+	 * @see #setFeature(EObject)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getFeatureCall_Feature()
+	 * @model
+	 * @generated
+	 */
+	EObject getFeature();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.FeatureCall#getFeature <em>Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Feature</em>' reference.
+	 * @see #getFeature()
+	 * @generated
+	 */
+	void setFeature(EObject value);
+
+	/**
+	 * Returns the value of the '<em><b>Operation Call</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operation Call</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Operation Call</em>' attribute.
+	 * @see #setOperationCall(boolean)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getFeatureCall_OperationCall()
+	 * @model
+	 * @generated
+	 */
+	boolean isOperationCall();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.FeatureCall#isOperationCall <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operation Call</em>' attribute.
+	 * @see #isOperationCall()
+	 * @generated
+	 */
+	void setOperationCall(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Args</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.base.expressions.expressions.Expression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Args</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Args</em>' containment reference list.
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getFeatureCall_Args()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Expression> getArgs();
+
+} // FeatureCall

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/HexLiteral.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hex Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.HexLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getHexLiteral()
+ * @model
+ * @generated
+ */
+public interface HexLiteral extends Literal {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getHexLiteral_Value()
+	 * @model
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.HexLiteral#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // HexLiteral

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/IntLiteral.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.IntLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getIntLiteral()
+ * @model
+ * @generated
+ */
+public interface IntLiteral extends Literal {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getIntLiteral_Value()
+	 * @model
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.IntLiteral#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // IntLiteral

+ 18 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/Literal.java

@@ -0,0 +1,18 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLiteral()
+ * @model
+ * @generated
+ */
+public interface Literal extends EObject {
+} // Literal

+ 76 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalAndExpression.java

@@ -0,0 +1,76 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalAndExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalAndExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalAndExpression()
+ * @model
+ * @generated
+ */
+public interface LogicalAndExpression 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.base.expressions.expressions.ExpressionsPackage#getLogicalAndExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalAndExpression#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.base.expressions.expressions.ExpressionsPackage#getLogicalAndExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalAndExpression#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);
+
+} // LogicalAndExpression

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalNotExpression.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical Not Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalNotExpression#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalNotExpression()
+ * @model
+ * @generated
+ */
+public interface LogicalNotExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Operand</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>Operand</em>' containment reference.
+	 * @see #setOperand(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalNotExpression_Operand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalNotExpression#getOperand <em>Operand</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operand</em>' containment reference.
+	 * @see #getOperand()
+	 * @generated
+	 */
+	void setOperand(Expression value);
+
+} // LogicalNotExpression

+ 76 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalOrExpression.java

@@ -0,0 +1,76 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalOrExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalOrExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalOrExpression()
+ * @model
+ * @generated
+ */
+public interface LogicalOrExpression 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.base.expressions.expressions.ExpressionsPackage#getLogicalOrExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalOrExpression#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.base.expressions.expressions.ExpressionsPackage#getLogicalOrExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalOrExpression#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);
+
+} // LogicalOrExpression

+ 106 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/LogicalRelationExpression.java

@@ -0,0 +1,106 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logical Relation Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalRelationExpression()
+ * @model
+ * @generated
+ */
+public interface LogicalRelationExpression 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.base.expressions.expressions.ExpressionsPackage#getLogicalRelationExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#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.base.expressions.expressions.RelationalOperator}.
+	 * <!-- 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.base.expressions.expressions.RelationalOperator
+	 * @see #setOperator(RelationalOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getLogicalRelationExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	RelationalOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#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.base.expressions.expressions.RelationalOperator
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(RelationalOperator 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.base.expressions.expressions.ExpressionsPackage#getLogicalRelationExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression#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);
+
+} // LogicalRelationExpression

+ 235 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/MultiplicativeOperator.java

@@ -0,0 +1,235 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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>Multiplicative Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getMultiplicativeOperator()
+ * @model
+ * @generated
+ */
+public enum MultiplicativeOperator implements Enumerator {
+	/**
+	 * The '<em><b>Mul</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MUL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MUL(0, "mul", "*"),
+
+	/**
+	 * The '<em><b>Div</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIV_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIV(1, "div", "/"),
+
+	/**
+	 * The '<em><b>Mod</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MOD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MOD(2, "mod", "%");
+
+	/**
+	 * The '<em><b>Mul</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Mul</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MUL
+	 * @model name="mul" literal="*"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MUL_VALUE = 0;
+
+	/**
+	 * The '<em><b>Div</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Div</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DIV
+	 * @model name="div" literal="/"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIV_VALUE = 1;
+
+	/**
+	 * The '<em><b>Mod</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Mod</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MOD
+	 * @model name="mod" literal="%"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MOD_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Multiplicative Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final MultiplicativeOperator[] VALUES_ARRAY =
+		new MultiplicativeOperator[] {
+			MUL,
+			DIV,
+			MOD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Multiplicative Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<MultiplicativeOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Multiplicative Operator</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static MultiplicativeOperator get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			MultiplicativeOperator result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Multiplicative Operator</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static MultiplicativeOperator getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			MultiplicativeOperator result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Multiplicative Operator</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static MultiplicativeOperator get(int value) {
+		switch (value) {
+			case MUL_VALUE: return MUL;
+			case DIV_VALUE: return DIV;
+			case MOD_VALUE: return MOD;
+		}
+		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 MultiplicativeOperator(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;
+	}
+	
+} //MultiplicativeOperator

+ 106 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalAddSubtractExpression.java

@@ -0,0 +1,106 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Numerical Add Subtract Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalAddSubtractExpression()
+ * @model
+ * @generated
+ */
+public interface NumericalAddSubtractExpression 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.base.expressions.expressions.ExpressionsPackage#getNumericalAddSubtractExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#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.base.expressions.expressions.AdditiveOperator}.
+	 * <!-- 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.base.expressions.expressions.AdditiveOperator
+	 * @see #setOperator(AdditiveOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalAddSubtractExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	AdditiveOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#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.base.expressions.expressions.AdditiveOperator
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(AdditiveOperator 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.base.expressions.expressions.ExpressionsPackage#getNumericalAddSubtractExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression#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);
+
+} // NumericalAddSubtractExpression

+ 106 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalMultiplyDivideExpression.java

@@ -0,0 +1,106 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Numerical Multiply Divide Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalMultiplyDivideExpression()
+ * @model
+ * @generated
+ */
+public interface NumericalMultiplyDivideExpression 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.base.expressions.expressions.ExpressionsPackage#getNumericalMultiplyDivideExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#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.base.expressions.expressions.MultiplicativeOperator}.
+	 * <!-- 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.base.expressions.expressions.MultiplicativeOperator
+	 * @see #setOperator(MultiplicativeOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalMultiplyDivideExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	MultiplicativeOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#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.base.expressions.expressions.MultiplicativeOperator
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(MultiplicativeOperator 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.base.expressions.expressions.ExpressionsPackage#getNumericalMultiplyDivideExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression#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);
+
+} // NumericalMultiplyDivideExpression

+ 79 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/NumericalUnaryExpression.java

@@ -0,0 +1,79 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Numerical Unary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalUnaryExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.NumericalUnaryExpression#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalUnaryExpression()
+ * @model
+ * @generated
+ */
+public interface NumericalUnaryExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Operator</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.yakindu.base.expressions.expressions.UnaryOperator}.
+	 * <!-- 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.base.expressions.expressions.UnaryOperator
+	 * @see #setOperator(UnaryOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalUnaryExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	UnaryOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalUnaryExpression#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.base.expressions.expressions.UnaryOperator
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(UnaryOperator value);
+
+	/**
+	 * Returns the value of the '<em><b>Operand</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>Operand</em>' containment reference.
+	 * @see #setOperand(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getNumericalUnaryExpression_Operand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.NumericalUnaryExpression#getOperand <em>Operand</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operand</em>' containment reference.
+	 * @see #getOperand()
+	 * @generated
+	 */
+	void setOperand(Expression value);
+
+} // NumericalUnaryExpression

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ParenthesizedExpression.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Parenthesized Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ParenthesizedExpression#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getParenthesizedExpression()
+ * @model
+ * @generated
+ */
+public interface ParenthesizedExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Expression</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>Expression</em>' containment reference.
+	 * @see #setExpression(Expression)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getParenthesizedExpression_Expression()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getExpression();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.ParenthesizedExpression#getExpression <em>Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Expression</em>' containment reference.
+	 * @see #getExpression()
+	 * @generated
+	 */
+	void setExpression(Expression value);
+
+} // ParenthesizedExpression

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/PrimitiveValueExpression.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Primitive Value Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.PrimitiveValueExpression#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getPrimitiveValueExpression()
+ * @model
+ * @generated
+ */
+public interface PrimitiveValueExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</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>Value</em>' containment reference.
+	 * @see #setValue(Literal)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getPrimitiveValueExpression_Value()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Literal getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.PrimitiveValueExpression#getValue <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' containment reference.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(Literal value);
+
+} // PrimitiveValueExpression

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/RealLiteral.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Real Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.RealLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getRealLiteral()
+ * @model
+ * @generated
+ */
+public interface RealLiteral extends Literal {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(float)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getRealLiteral_Value()
+	 * @model
+	 * @generated
+	 */
+	float getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.RealLiteral#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(float value);
+
+} // RealLiteral

+ 316 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/RelationalOperator.java

@@ -0,0 +1,316 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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>Relational Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getRelationalOperator()
+ * @model
+ * @generated
+ */
+public enum RelationalOperator implements Enumerator {
+	/**
+	 * The '<em><b>Smaller</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SMALLER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SMALLER(0, "smaller", "<"),
+
+	/**
+	 * The '<em><b>Smaller Equal</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SMALLER_EQUAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SMALLER_EQUAL(1, "smallerEqual", "<="),
+
+	/**
+	 * The '<em><b>Greater</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATER(2, "greater", ">"),
+
+	/**
+	 * The '<em><b>Greater Equal</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_EQUAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATER_EQUAL(3, "greaterEqual", ">="),
+
+	/**
+	 * The '<em><b>Equals</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EQUALS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EQUALS(4, "equals", "=="),
+
+	/**
+	 * The '<em><b>Not Equals</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NOT_EQUALS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NOT_EQUALS(5, "notEquals", "!=");
+
+	/**
+	 * The '<em><b>Smaller</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Smaller</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SMALLER
+	 * @model name="smaller" literal="<"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SMALLER_VALUE = 0;
+
+	/**
+	 * The '<em><b>Smaller Equal</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Smaller Equal</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SMALLER_EQUAL
+	 * @model name="smallerEqual" literal="<="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SMALLER_EQUAL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Greater</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Greater</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GREATER
+	 * @model name="greater" literal=">"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATER_VALUE = 2;
+
+	/**
+	 * The '<em><b>Greater Equal</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Greater Equal</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_EQUAL
+	 * @model name="greaterEqual" literal=">="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATER_EQUAL_VALUE = 3;
+
+	/**
+	 * The '<em><b>Equals</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Equals</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EQUALS
+	 * @model name="equals" literal="=="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EQUALS_VALUE = 4;
+
+	/**
+	 * The '<em><b>Not Equals</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Not Equals</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NOT_EQUALS
+	 * @model name="notEquals" literal="!="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NOT_EQUALS_VALUE = 5;
+
+	/**
+	 * An array of all the '<em><b>Relational Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RelationalOperator[] VALUES_ARRAY =
+		new RelationalOperator[] {
+			SMALLER,
+			SMALLER_EQUAL,
+			GREATER,
+			GREATER_EQUAL,
+			EQUALS,
+			NOT_EQUALS,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Relational Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RelationalOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Relational Operator</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RelationalOperator get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RelationalOperator result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Relational Operator</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RelationalOperator getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RelationalOperator result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Relational Operator</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RelationalOperator get(int value) {
+		switch (value) {
+			case SMALLER_VALUE: return SMALLER;
+			case SMALLER_EQUAL_VALUE: return SMALLER_EQUAL;
+			case GREATER_VALUE: return GREATER;
+			case GREATER_EQUAL_VALUE: return GREATER_EQUAL;
+			case EQUALS_VALUE: return EQUALS;
+			case NOT_EQUALS_VALUE: return NOT_EQUALS;
+		}
+		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 RelationalOperator(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;
+	}
+	
+} //RelationalOperator

+ 106 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ShiftExpression.java

@@ -0,0 +1,106 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- 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.base.expressions.expressions.ShiftExpression#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ShiftExpression#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.ShiftExpression#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#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.base.expressions.expressions.ExpressionsPackage#getShiftExpression_LeftOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeftOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.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.base.expressions.expressions.ShiftOperator
+	 * @see #setOperator(ShiftOperator)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getShiftExpression_Operator()
+	 * @model
+	 * @generated
+	 */
+	ShiftOperator getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage#getShiftExpression_RightOperand()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRightOperand();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.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

+ 208 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ShiftOperator.java

@@ -0,0 +1,208 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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.base.expressions.expressions.ExpressionsPackage#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

+ 49 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/StringLiteral.java

@@ -0,0 +1,49 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.StringLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getStringLiteral()
+ * @model
+ * @generated
+ */
+public interface StringLiteral extends Literal {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getStringLiteral_Value()
+	 * @model
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.expressions.expressions.StringLiteral#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // StringLiteral

+ 235 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/UnaryOperator.java

@@ -0,0 +1,235 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+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>Unary Operator</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getUnaryOperator()
+ * @model
+ * @generated
+ */
+public enum UnaryOperator implements Enumerator {
+	/**
+	 * The '<em><b>Positive</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #POSITIVE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	POSITIVE(0, "positive", "+"),
+
+	/**
+	 * The '<em><b>Negative</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NEGATIVE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NEGATIVE(1, "negative", "-"),
+
+	/**
+	 * The '<em><b>Complement</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COMPLEMENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COMPLEMENT(2, "complement", "~");
+
+	/**
+	 * The '<em><b>Positive</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Positive</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #POSITIVE
+	 * @model name="positive" literal="+"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int POSITIVE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Negative</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Negative</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NEGATIVE
+	 * @model name="negative" literal="-"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NEGATIVE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Complement</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Complement</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COMPLEMENT
+	 * @model name="complement" literal="~"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPLEMENT_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Unary Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final UnaryOperator[] VALUES_ARRAY =
+		new UnaryOperator[] {
+			POSITIVE,
+			NEGATIVE,
+			COMPLEMENT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Unary Operator</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<UnaryOperator> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Unary Operator</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static UnaryOperator get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			UnaryOperator result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Unary Operator</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static UnaryOperator getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			UnaryOperator result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Unary Operator</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static UnaryOperator get(int value) {
+		switch (value) {
+			case POSITIVE_VALUE: return POSITIVE;
+			case NEGATIVE_VALUE: return NEGATIVE;
+			case COMPLEMENT_VALUE: return COMPLEMENT;
+		}
+		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 UnaryOperator(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;
+	}
+	
+} //UnaryOperator

+ 310 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/AssignmentExpressionImpl.java

@@ -0,0 +1,310 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.AssignmentExpression;
+import org.yakindu.base.expressions.expressions.AssignmentOperator;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Assignment Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.AssignmentExpressionImpl#getVarRef <em>Var Ref</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.AssignmentExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.AssignmentExpressionImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AssignmentExpressionImpl extends ExpressionImpl implements AssignmentExpression {
+	/**
+	 * The cached value of the '{@link #getVarRef() <em>Var Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVarRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression 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 -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression expression;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AssignmentExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getVarRef() {
+		return varRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetVarRef(Expression newVarRef, NotificationChain msgs) {
+		Expression oldVarRef = varRef;
+		varRef = newVarRef;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF, oldVarRef, newVarRef);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVarRef(Expression newVarRef) {
+		if (newVarRef != varRef) {
+			NotificationChain msgs = null;
+			if (varRef != null)
+				msgs = ((InternalEObject)varRef).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF, null, msgs);
+			if (newVarRef != null)
+				msgs = ((InternalEObject)newVarRef).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF, null, msgs);
+			msgs = basicSetVarRef(newVarRef, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF, newVarRef, newVarRef));
+	}
+
+	/**
+	 * <!-- 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, ExpressionsPackage.ASSIGNMENT_EXPRESSION__OPERATOR, oldOperator, operator));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getExpression() {
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetExpression(Expression newExpression, NotificationChain msgs) {
+		Expression oldExpression = expression;
+		expression = newExpression;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION, oldExpression, newExpression);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpression(Expression newExpression) {
+		if (newExpression != expression) {
+			NotificationChain msgs = null;
+			if (expression != null)
+				msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION, null, msgs);
+			if (newExpression != null)
+				msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION, null, msgs);
+			msgs = basicSetExpression(newExpression, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION, newExpression, newExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF:
+				return basicSetVarRef(null, msgs);
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION:
+				return basicSetExpression(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 ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF:
+				return getVarRef();
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION:
+				return getExpression();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF:
+				setVarRef((Expression)newValue);
+				return;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__OPERATOR:
+				setOperator((AssignmentOperator)newValue);
+				return;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION:
+				setExpression((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF:
+				setVarRef((Expression)null);
+				return;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__EXPRESSION:
+				setExpression((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__VAR_REF:
+				return varRef != null;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION__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();
+	}
+
+} //AssignmentExpressionImpl

+ 241 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseAndExpressionImpl.java

@@ -0,0 +1,241 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseAndExpression;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- 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.base.expressions.expressions.impl.BitwiseAndExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.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 ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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 ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_AND_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.BITWISE_AND_EXPRESSION__RIGHT_OPERAND:
+				return rightOperand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //BitwiseAndExpressionImpl

+ 241 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseOrExpressionImpl.java

@@ -0,0 +1,241 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseOrExpression;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- 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.base.expressions.expressions.impl.BitwiseOrExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.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 ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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 ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_OR_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.BITWISE_OR_EXPRESSION__RIGHT_OPERAND:
+				return rightOperand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //BitwiseOrExpressionImpl

+ 241 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BitwiseXorExpressionImpl.java

@@ -0,0 +1,241 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseXorExpression;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- 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.base.expressions.expressions.impl.BitwiseXorExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.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 ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.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, ExpressionsPackage.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 ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.BITWISE_XOR_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.BITWISE_XOR_EXPRESSION__RIGHT_OPERAND:
+				return rightOperand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //BitwiseXorExpressionImpl

+ 162 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BoolLiteralImpl.java

@@ -0,0 +1,162 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.BoolLiteral;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bool Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.BoolLiteralImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
+	/**
+	 * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean VALUE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoolLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.BOOL_LITERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(boolean newValue) {
+		boolean oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.BOOL_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ExpressionsPackage.BOOL_LITERAL__VALUE:
+				return isValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.BOOL_LITERAL__VALUE:
+				setValue((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.BOOL_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.BOOL_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BoolLiteralImpl

+ 307 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ConditionalExpressionImpl.java

@@ -0,0 +1,307 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ConditionalExpression;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- 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.base.expressions.expressions.impl.ConditionalExpressionImpl#getCondition <em>Condition</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ConditionalExpressionImpl#getTrueCase <em>True Case</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.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 ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION, null, msgs);
+			if (newCondition != null)
+				msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION, null, msgs);
+			msgs = basicSetCondition(newCondition, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, null, msgs);
+			if (newTrueCase != null)
+				msgs = ((InternalEObject)newTrueCase).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE, null, msgs);
+			msgs = basicSetTrueCase(newTrueCase, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, null, msgs);
+			if (newFalseCase != null)
+				msgs = ((InternalEObject)newFalseCase).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.CONDITIONAL_EXPRESSION__FALSE_CASE, null, msgs);
+			msgs = basicSetFalseCase(newFalseCase, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.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 ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION:
+				return basicSetCondition(null, msgs);
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+				return basicSetTrueCase(null, msgs);
+			case ExpressionsPackage.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 ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION:
+				return getCondition();
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+				return getTrueCase();
+			case ExpressionsPackage.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 ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION:
+				setCondition((Expression)newValue);
+				return;
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+				setTrueCase((Expression)newValue);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION:
+				setCondition((Expression)null);
+				return;
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+				setTrueCase((Expression)null);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.CONDITIONAL_EXPRESSION__CONDITION:
+				return condition != null;
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__TRUE_CASE:
+				return trueCase != null;
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION__FALSE_CASE:
+				return falseCase != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ConditionalExpressionImpl

+ 282 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ElementReferenceExpressionImpl.java

@@ -0,0 +1,282 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.yakindu.base.expressions.expressions.ElementReferenceExpression;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element Reference Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ElementReferenceExpressionImpl#getReference <em>Reference</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ElementReferenceExpressionImpl#isOperationCall <em>Operation Call</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ElementReferenceExpressionImpl#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ElementReferenceExpressionImpl extends ExpressionImpl implements ElementReferenceExpression {
+	/**
+	 * The cached value of the '{@link #getReference() <em>Reference</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject reference;
+
+	/**
+	 * The default value of the '{@link #isOperationCall() <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOperationCall()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean OPERATION_CALL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isOperationCall() <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOperationCall()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean operationCall = OPERATION_CALL_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getArgs() <em>Args</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getArgs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Expression> args;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ElementReferenceExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getReference() {
+		if (reference != null && reference.eIsProxy()) {
+			InternalEObject oldReference = (InternalEObject)reference;
+			reference = eResolveProxy(oldReference);
+			if (reference != oldReference) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, oldReference, reference));
+			}
+		}
+		return reference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetReference() {
+		return reference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReference(EObject newReference) {
+		EObject oldReference = reference;
+		reference = newReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, oldReference, reference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isOperationCall() {
+		return operationCall;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperationCall(boolean newOperationCall) {
+		boolean oldOperationCall = operationCall;
+		operationCall = newOperationCall;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__OPERATION_CALL, oldOperationCall, operationCall));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Expression> getArgs() {
+		if (args == null) {
+			args = new EObjectContainmentEList<Expression>(Expression.class, this, ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS);
+		}
+		return args;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS:
+				return ((InternalEList<?>)getArgs()).basicRemove(otherEnd, 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 ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE:
+				if (resolve) return getReference();
+				return basicGetReference();
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__OPERATION_CALL:
+				return isOperationCall();
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS:
+				return getArgs();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE:
+				setReference((EObject)newValue);
+				return;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__OPERATION_CALL:
+				setOperationCall((Boolean)newValue);
+				return;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS:
+				getArgs().clear();
+				getArgs().addAll((Collection<? extends Expression>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE:
+				setReference((EObject)null);
+				return;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__OPERATION_CALL:
+				setOperationCall(OPERATION_CALL_EDEFAULT);
+				return;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS:
+				getArgs().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__REFERENCE:
+				return reference != null;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__OPERATION_CALL:
+				return operationCall != OPERATION_CALL_EDEFAULT;
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION__ARGS:
+				return args != null && !args.isEmpty();
+		}
+		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(" (operationCall: ");
+		result.append(operationCall);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ElementReferenceExpressionImpl

+ 41 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionImpl.java

@@ -0,0 +1,41 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpressionImpl extends MinimalEObjectImpl.Container implements Expression {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.EXPRESSION;
+	}
+
+} //ExpressionImpl

+ 519 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsFactoryImpl.java

@@ -0,0 +1,519 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.yakindu.base.expressions.expressions.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionsFactoryImpl extends EFactoryImpl implements ExpressionsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ExpressionsFactory init() {
+		try {
+			ExpressionsFactory theExpressionsFactory = (ExpressionsFactory)EPackage.Registry.INSTANCE.getEFactory(ExpressionsPackage.eNS_URI);
+			if (theExpressionsFactory != null) {
+				return theExpressionsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ExpressionsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ExpressionsPackage.EXPRESSION: return createExpression();
+			case ExpressionsPackage.LITERAL: return createLiteral();
+			case ExpressionsPackage.BOOL_LITERAL: return createBoolLiteral();
+			case ExpressionsPackage.INT_LITERAL: return createIntLiteral();
+			case ExpressionsPackage.REAL_LITERAL: return createRealLiteral();
+			case ExpressionsPackage.HEX_LITERAL: return createHexLiteral();
+			case ExpressionsPackage.STRING_LITERAL: return createStringLiteral();
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION: return createAssignmentExpression();
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION: return createConditionalExpression();
+			case ExpressionsPackage.LOGICAL_OR_EXPRESSION: return createLogicalOrExpression();
+			case ExpressionsPackage.LOGICAL_AND_EXPRESSION: return createLogicalAndExpression();
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION: return createLogicalNotExpression();
+			case ExpressionsPackage.BITWISE_XOR_EXPRESSION: return createBitwiseXorExpression();
+			case ExpressionsPackage.BITWISE_OR_EXPRESSION: return createBitwiseOrExpression();
+			case ExpressionsPackage.BITWISE_AND_EXPRESSION: return createBitwiseAndExpression();
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION: return createLogicalRelationExpression();
+			case ExpressionsPackage.SHIFT_EXPRESSION: return createShiftExpression();
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION: return createNumericalAddSubtractExpression();
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION: return createNumericalMultiplyDivideExpression();
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION: return createNumericalUnaryExpression();
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION: return createPrimitiveValueExpression();
+			case ExpressionsPackage.FEATURE_CALL: return createFeatureCall();
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION: return createElementReferenceExpression();
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION: return createParenthesizedExpression();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case ExpressionsPackage.ASSIGNMENT_OPERATOR:
+				return createAssignmentOperatorFromString(eDataType, initialValue);
+			case ExpressionsPackage.SHIFT_OPERATOR:
+				return createShiftOperatorFromString(eDataType, initialValue);
+			case ExpressionsPackage.ADDITIVE_OPERATOR:
+				return createAdditiveOperatorFromString(eDataType, initialValue);
+			case ExpressionsPackage.MULTIPLICATIVE_OPERATOR:
+				return createMultiplicativeOperatorFromString(eDataType, initialValue);
+			case ExpressionsPackage.UNARY_OPERATOR:
+				return createUnaryOperatorFromString(eDataType, initialValue);
+			case ExpressionsPackage.RELATIONAL_OPERATOR:
+				return createRelationalOperatorFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case ExpressionsPackage.ASSIGNMENT_OPERATOR:
+				return convertAssignmentOperatorToString(eDataType, instanceValue);
+			case ExpressionsPackage.SHIFT_OPERATOR:
+				return convertShiftOperatorToString(eDataType, instanceValue);
+			case ExpressionsPackage.ADDITIVE_OPERATOR:
+				return convertAdditiveOperatorToString(eDataType, instanceValue);
+			case ExpressionsPackage.MULTIPLICATIVE_OPERATOR:
+				return convertMultiplicativeOperatorToString(eDataType, instanceValue);
+			case ExpressionsPackage.UNARY_OPERATOR:
+				return convertUnaryOperatorToString(eDataType, instanceValue);
+			case ExpressionsPackage.RELATIONAL_OPERATOR:
+				return convertRelationalOperatorToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression createExpression() {
+		ExpressionImpl expression = new ExpressionImpl();
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Literal createLiteral() {
+		LiteralImpl literal = new LiteralImpl();
+		return literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoolLiteral createBoolLiteral() {
+		BoolLiteralImpl boolLiteral = new BoolLiteralImpl();
+		return boolLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntLiteral createIntLiteral() {
+		IntLiteralImpl intLiteral = new IntLiteralImpl();
+		return intLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RealLiteral createRealLiteral() {
+		RealLiteralImpl realLiteral = new RealLiteralImpl();
+		return realLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HexLiteral createHexLiteral() {
+		HexLiteralImpl hexLiteral = new HexLiteralImpl();
+		return hexLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StringLiteral createStringLiteral() {
+		StringLiteralImpl stringLiteral = new StringLiteralImpl();
+		return stringLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AssignmentExpression createAssignmentExpression() {
+		AssignmentExpressionImpl assignmentExpression = new AssignmentExpressionImpl();
+		return assignmentExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConditionalExpression createConditionalExpression() {
+		ConditionalExpressionImpl conditionalExpression = new ConditionalExpressionImpl();
+		return conditionalExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalOrExpression createLogicalOrExpression() {
+		LogicalOrExpressionImpl logicalOrExpression = new LogicalOrExpressionImpl();
+		return logicalOrExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalAndExpression createLogicalAndExpression() {
+		LogicalAndExpressionImpl logicalAndExpression = new LogicalAndExpressionImpl();
+		return logicalAndExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalNotExpression createLogicalNotExpression() {
+		LogicalNotExpressionImpl logicalNotExpression = new LogicalNotExpressionImpl();
+		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 -->
+	 * @generated
+	 */
+	public LogicalRelationExpression createLogicalRelationExpression() {
+		LogicalRelationExpressionImpl logicalRelationExpression = new LogicalRelationExpressionImpl();
+		return logicalRelationExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ShiftExpression createShiftExpression() {
+		ShiftExpressionImpl shiftExpression = new ShiftExpressionImpl();
+		return shiftExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NumericalAddSubtractExpression createNumericalAddSubtractExpression() {
+		NumericalAddSubtractExpressionImpl numericalAddSubtractExpression = new NumericalAddSubtractExpressionImpl();
+		return numericalAddSubtractExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NumericalMultiplyDivideExpression createNumericalMultiplyDivideExpression() {
+		NumericalMultiplyDivideExpressionImpl numericalMultiplyDivideExpression = new NumericalMultiplyDivideExpressionImpl();
+		return numericalMultiplyDivideExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NumericalUnaryExpression createNumericalUnaryExpression() {
+		NumericalUnaryExpressionImpl numericalUnaryExpression = new NumericalUnaryExpressionImpl();
+		return numericalUnaryExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PrimitiveValueExpression createPrimitiveValueExpression() {
+		PrimitiveValueExpressionImpl primitiveValueExpression = new PrimitiveValueExpressionImpl();
+		return primitiveValueExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureCall createFeatureCall() {
+		FeatureCallImpl featureCall = new FeatureCallImpl();
+		return featureCall;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElementReferenceExpression createElementReferenceExpression() {
+		ElementReferenceExpressionImpl elementReferenceExpression = new ElementReferenceExpressionImpl();
+		return elementReferenceExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParenthesizedExpression createParenthesizedExpression() {
+		ParenthesizedExpressionImpl parenthesizedExpression = new ParenthesizedExpressionImpl();
+		return parenthesizedExpression;
+	}
+
+	/**
+	 * <!-- 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 -->
+	 * @generated
+	 */
+	public AdditiveOperator createAdditiveOperatorFromString(EDataType eDataType, String initialValue) {
+		AdditiveOperator result = AdditiveOperator.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 convertAdditiveOperatorToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MultiplicativeOperator createMultiplicativeOperatorFromString(EDataType eDataType, String initialValue) {
+		MultiplicativeOperator result = MultiplicativeOperator.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 convertMultiplicativeOperatorToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryOperator createUnaryOperatorFromString(EDataType eDataType, String initialValue) {
+		UnaryOperator result = UnaryOperator.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 convertUnaryOperatorToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RelationalOperator createRelationalOperatorFromString(EDataType eDataType, String initialValue) {
+		RelationalOperator result = RelationalOperator.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 convertRelationalOperatorToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionsPackage getExpressionsPackage() {
+		return (ExpressionsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ExpressionsPackage getPackage() {
+		return ExpressionsPackage.eINSTANCE;
+	}
+
+} //ExpressionsFactoryImpl

Datei-Diff unterdrückt, da er zu groß ist
+ 1318 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsPackageImpl.java


+ 348 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/FeatureCallImpl.java

@@ -0,0 +1,348 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.FeatureCall;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Call</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.FeatureCallImpl#getOwner <em>Owner</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.FeatureCallImpl#getFeature <em>Feature</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.FeatureCallImpl#isOperationCall <em>Operation Call</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.FeatureCallImpl#getArgs <em>Args</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FeatureCallImpl extends ExpressionImpl implements FeatureCall {
+	/**
+	 * The cached value of the '{@link #getOwner() <em>Owner</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOwner()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression owner;
+
+	/**
+	 * The cached value of the '{@link #getFeature() <em>Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFeature()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject feature;
+
+	/**
+	 * The default value of the '{@link #isOperationCall() <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOperationCall()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean OPERATION_CALL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isOperationCall() <em>Operation Call</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOperationCall()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean operationCall = OPERATION_CALL_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getArgs() <em>Args</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getArgs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Expression> args;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureCallImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.FEATURE_CALL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getOwner() {
+		return owner;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOwner(Expression newOwner, NotificationChain msgs) {
+		Expression oldOwner = owner;
+		owner = newOwner;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.FEATURE_CALL__OWNER, oldOwner, newOwner);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOwner(Expression newOwner) {
+		if (newOwner != owner) {
+			NotificationChain msgs = null;
+			if (owner != null)
+				msgs = ((InternalEObject)owner).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.FEATURE_CALL__OWNER, null, msgs);
+			if (newOwner != null)
+				msgs = ((InternalEObject)newOwner).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.FEATURE_CALL__OWNER, null, msgs);
+			msgs = basicSetOwner(newOwner, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.FEATURE_CALL__OWNER, newOwner, newOwner));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getFeature() {
+		if (feature != null && feature.eIsProxy()) {
+			InternalEObject oldFeature = (InternalEObject)feature;
+			feature = eResolveProxy(oldFeature);
+			if (feature != oldFeature) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ExpressionsPackage.FEATURE_CALL__FEATURE, oldFeature, feature));
+			}
+		}
+		return feature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetFeature() {
+		return feature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFeature(EObject newFeature) {
+		EObject oldFeature = feature;
+		feature = newFeature;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.FEATURE_CALL__FEATURE, oldFeature, feature));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isOperationCall() {
+		return operationCall;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperationCall(boolean newOperationCall) {
+		boolean oldOperationCall = operationCall;
+		operationCall = newOperationCall;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.FEATURE_CALL__OPERATION_CALL, oldOperationCall, operationCall));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Expression> getArgs() {
+		if (args == null) {
+			args = new EObjectContainmentEList<Expression>(Expression.class, this, ExpressionsPackage.FEATURE_CALL__ARGS);
+		}
+		return args;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.FEATURE_CALL__OWNER:
+				return basicSetOwner(null, msgs);
+			case ExpressionsPackage.FEATURE_CALL__ARGS:
+				return ((InternalEList<?>)getArgs()).basicRemove(otherEnd, 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 ExpressionsPackage.FEATURE_CALL__OWNER:
+				return getOwner();
+			case ExpressionsPackage.FEATURE_CALL__FEATURE:
+				if (resolve) return getFeature();
+				return basicGetFeature();
+			case ExpressionsPackage.FEATURE_CALL__OPERATION_CALL:
+				return isOperationCall();
+			case ExpressionsPackage.FEATURE_CALL__ARGS:
+				return getArgs();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.FEATURE_CALL__OWNER:
+				setOwner((Expression)newValue);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__FEATURE:
+				setFeature((EObject)newValue);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__OPERATION_CALL:
+				setOperationCall((Boolean)newValue);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__ARGS:
+				getArgs().clear();
+				getArgs().addAll((Collection<? extends Expression>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.FEATURE_CALL__OWNER:
+				setOwner((Expression)null);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__FEATURE:
+				setFeature((EObject)null);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__OPERATION_CALL:
+				setOperationCall(OPERATION_CALL_EDEFAULT);
+				return;
+			case ExpressionsPackage.FEATURE_CALL__ARGS:
+				getArgs().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.FEATURE_CALL__OWNER:
+				return owner != null;
+			case ExpressionsPackage.FEATURE_CALL__FEATURE:
+				return feature != null;
+			case ExpressionsPackage.FEATURE_CALL__OPERATION_CALL:
+				return operationCall != OPERATION_CALL_EDEFAULT;
+			case ExpressionsPackage.FEATURE_CALL__ARGS:
+				return args != null && !args.isEmpty();
+		}
+		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(" (operationCall: ");
+		result.append(operationCall);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FeatureCallImpl

+ 162 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/HexLiteralImpl.java

@@ -0,0 +1,162 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.HexLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hex Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.HexLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class HexLiteralImpl extends LiteralImpl implements HexLiteral {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HexLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.HEX_LITERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.HEX_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ExpressionsPackage.HEX_LITERAL__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.HEX_LITERAL__VALUE:
+				setValue((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.HEX_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.HEX_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HexLiteralImpl

+ 162 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/IntLiteralImpl.java

@@ -0,0 +1,162 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.IntLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.IntLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.INT_LITERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.INT_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ExpressionsPackage.INT_LITERAL__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.INT_LITERAL__VALUE:
+				setValue((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.INT_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.INT_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //IntLiteralImpl

+ 41 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LiteralImpl.java

@@ -0,0 +1,41 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.Literal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LiteralImpl extends MinimalEObjectImpl.Container implements Literal {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.LITERAL;
+	}
+
+} //LiteralImpl

+ 241 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalAndExpressionImpl.java

@@ -0,0 +1,241 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.LogicalAndExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical And Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalAndExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalAndExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalAndExpressionImpl extends ExpressionImpl implements LogicalAndExpression {
+	/**
+	 * 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 LogicalAndExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.LOGICAL_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, ExpressionsPackage.LOGICAL_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 - ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_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, ExpressionsPackage.LOGICAL_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 - ExpressionsPackage.LOGICAL_AND_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_AND_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_AND_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.LOGICAL_AND_EXPRESSION__RIGHT_OPERAND:
+				return rightOperand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LogicalAndExpressionImpl

+ 175 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalNotExpressionImpl.java

@@ -0,0 +1,175 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.LogicalNotExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical Not Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalNotExpressionImpl#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalNotExpressionImpl extends ExpressionImpl implements LogicalNotExpression {
+	/**
+	 * The cached value of the '{@link #getOperand() <em>Operand</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperand()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression operand;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LogicalNotExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.LOGICAL_NOT_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getOperand() {
+		return operand;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOperand(Expression newOperand, NotificationChain msgs) {
+		Expression oldOperand = operand;
+		operand = newOperand;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND, oldOperand, newOperand);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperand(Expression newOperand) {
+		if (newOperand != operand) {
+			NotificationChain msgs = null;
+			if (operand != null)
+				msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND, null, msgs);
+			if (newOperand != null)
+				msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND, null, msgs);
+			msgs = basicSetOperand(newOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND, newOperand, newOperand));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND:
+				return basicSetOperand(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 ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND:
+				return getOperand();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND:
+				setOperand((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND:
+				setOperand((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION__OPERAND:
+				return operand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LogicalNotExpressionImpl

+ 241 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalOrExpressionImpl.java

@@ -0,0 +1,241 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.LogicalOrExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical Or Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalOrExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalOrExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalOrExpressionImpl extends ExpressionImpl implements LogicalOrExpression {
+	/**
+	 * 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 LogicalOrExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.LOGICAL_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, ExpressionsPackage.LOGICAL_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 - ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_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, ExpressionsPackage.LOGICAL_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 - ExpressionsPackage.LOGICAL_OR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_OR_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.LOGICAL_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 ExpressionsPackage.LOGICAL_OR_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.LOGICAL_OR_EXPRESSION__RIGHT_OPERAND:
+				return rightOperand != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LogicalOrExpressionImpl

+ 310 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/LogicalRelationExpressionImpl.java

@@ -0,0 +1,310 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.LogicalRelationExpression;
+import org.yakindu.base.expressions.expressions.RelationalOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logical Relation Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalRelationExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalRelationExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.LogicalRelationExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LogicalRelationExpressionImpl extends ExpressionImpl implements LogicalRelationExpression {
+	/**
+	 * 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 RelationalOperator OPERATOR_EDEFAULT = RelationalOperator.SMALLER;
+
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected RelationalOperator 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 LogicalRelationExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.LOGICAL_RELATION_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, ExpressionsPackage.LOGICAL_RELATION_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 - ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RelationalOperator getOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperator(RelationalOperator newOperator) {
+		RelationalOperator oldOperator = operator;
+		operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_RELATION_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, ExpressionsPackage.LOGICAL_RELATION_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 - ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.LOGICAL_RELATION_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 ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.LOGICAL_RELATION_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 ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.LOGICAL_RELATION_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 ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__OPERATOR:
+				setOperator((RelationalOperator)newValue);
+				return;
+			case ExpressionsPackage.LOGICAL_RELATION_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 ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.LOGICAL_RELATION_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 ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.LOGICAL_RELATION_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();
+	}
+
+} //LogicalRelationExpressionImpl

+ 310 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalAddSubtractExpressionImpl.java

@@ -0,0 +1,310 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.AdditiveOperator;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Numerical Add Subtract Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalAddSubtractExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalAddSubtractExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalAddSubtractExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NumericalAddSubtractExpressionImpl extends ExpressionImpl implements NumericalAddSubtractExpression {
+	/**
+	 * 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 AdditiveOperator OPERATOR_EDEFAULT = AdditiveOperator.PLUS;
+
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected AdditiveOperator 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 NumericalAddSubtractExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.NUMERICAL_ADD_SUBTRACT_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, ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 - ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdditiveOperator getOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperator(AdditiveOperator newOperator) {
+		AdditiveOperator oldOperator = operator;
+		operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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, ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 - ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__OPERATOR:
+				setOperator((AdditiveOperator)newValue);
+				return;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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 ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_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();
+	}
+
+} //NumericalAddSubtractExpressionImpl

+ 310 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalMultiplyDivideExpressionImpl.java

@@ -0,0 +1,310 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.MultiplicativeOperator;
+import org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Numerical Multiply Divide Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalMultiplyDivideExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalMultiplyDivideExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalMultiplyDivideExpressionImpl#getRightOperand <em>Right Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NumericalMultiplyDivideExpressionImpl extends ExpressionImpl implements NumericalMultiplyDivideExpression {
+	/**
+	 * 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 MultiplicativeOperator OPERATOR_EDEFAULT = MultiplicativeOperator.MUL;
+
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected MultiplicativeOperator 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 NumericalMultiplyDivideExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.NUMERICAL_MULTIPLY_DIVIDE_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, ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 - ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND, newLeftOperand, newLeftOperand));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MultiplicativeOperator getOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperator(MultiplicativeOperator newOperator) {
+		MultiplicativeOperator oldOperator = operator;
+		operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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, ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 - ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__OPERATOR:
+				setOperator((MultiplicativeOperator)newValue);
+				return;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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 ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_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();
+	}
+
+} //NumericalMultiplyDivideExpressionImpl

+ 244 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/NumericalUnaryExpressionImpl.java

@@ -0,0 +1,244 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.NumericalUnaryExpression;
+import org.yakindu.base.expressions.expressions.UnaryOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Numerical Unary Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalUnaryExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.NumericalUnaryExpressionImpl#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NumericalUnaryExpressionImpl extends ExpressionImpl implements NumericalUnaryExpression {
+	/**
+	 * The default value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final UnaryOperator OPERATOR_EDEFAULT = UnaryOperator.POSITIVE;
+
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected UnaryOperator operator = OPERATOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getOperand() <em>Operand</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperand()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression operand;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NumericalUnaryExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.NUMERICAL_UNARY_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryOperator getOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperator(UnaryOperator newOperator) {
+		UnaryOperator oldOperator = operator;
+		operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERATOR, oldOperator, operator));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getOperand() {
+		return operand;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOperand(Expression newOperand, NotificationChain msgs) {
+		Expression oldOperand = operand;
+		operand = newOperand;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND, oldOperand, newOperand);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperand(Expression newOperand) {
+		if (newOperand != operand) {
+			NotificationChain msgs = null;
+			if (operand != null)
+				msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND, null, msgs);
+			if (newOperand != null)
+				msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND, null, msgs);
+			msgs = basicSetOperand(newOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND, newOperand, newOperand));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND:
+				return basicSetOperand(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 ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND:
+				return getOperand();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERATOR:
+				setOperator((UnaryOperator)newValue);
+				return;
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND:
+				setOperand((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND:
+				setOperand((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION__OPERAND:
+				return operand != 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();
+	}
+
+} //NumericalUnaryExpressionImpl

+ 175 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ParenthesizedExpressionImpl.java

@@ -0,0 +1,175 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.ParenthesizedExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Parenthesized Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ParenthesizedExpressionImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ParenthesizedExpressionImpl extends ExpressionImpl implements ParenthesizedExpression {
+	/**
+	 * The cached value of the '{@link #getExpression() <em>Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression expression;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParenthesizedExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.PARENTHESIZED_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getExpression() {
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetExpression(Expression newExpression, NotificationChain msgs) {
+		Expression oldExpression = expression;
+		expression = newExpression;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION, oldExpression, newExpression);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpression(Expression newExpression) {
+		if (newExpression != expression) {
+			NotificationChain msgs = null;
+			if (expression != null)
+				msgs = ((InternalEObject)expression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION, null, msgs);
+			if (newExpression != null)
+				msgs = ((InternalEObject)newExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION, null, msgs);
+			msgs = basicSetExpression(newExpression, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION, newExpression, newExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION:
+				return basicSetExpression(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 ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION:
+				return getExpression();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION:
+				setExpression((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION:
+				setExpression((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION__EXPRESSION:
+				return expression != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ParenthesizedExpressionImpl

+ 175 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/PrimitiveValueExpressionImpl.java

@@ -0,0 +1,175 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.Literal;
+import org.yakindu.base.expressions.expressions.PrimitiveValueExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Primitive Value Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.PrimitiveValueExpressionImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PrimitiveValueExpressionImpl extends ExpressionImpl implements PrimitiveValueExpression {
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Literal value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PrimitiveValueExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.PRIMITIVE_VALUE_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Literal getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetValue(Literal newValue, NotificationChain msgs) {
+		Literal oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE, oldValue, newValue);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(Literal newValue) {
+		if (newValue != value) {
+			NotificationChain msgs = null;
+			if (value != null)
+				msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE, null, msgs);
+			if (newValue != null)
+				msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE, null, msgs);
+			msgs = basicSetValue(newValue, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE, newValue, newValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE:
+				return basicSetValue(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 ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE:
+				setValue((Literal)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE:
+				setValue((Literal)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION__VALUE:
+				return value != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PrimitiveValueExpressionImpl

+ 162 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/RealLiteralImpl.java

@@ -0,0 +1,162 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.RealLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Real Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.RealLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RealLiteralImpl extends LiteralImpl implements RealLiteral {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float VALUE_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected float value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RealLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.REAL_LITERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(float newValue) {
+		float oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.REAL_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ExpressionsPackage.REAL_LITERAL__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.REAL_LITERAL__VALUE:
+				setValue((Float)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.REAL_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.REAL_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RealLiteralImpl

+ 310 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ShiftExpressionImpl.java

@@ -0,0 +1,310 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.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.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.ShiftExpression;
+import org.yakindu.base.expressions.expressions.ShiftOperator;
+
+/**
+ * <!-- 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.base.expressions.expressions.impl.ShiftExpressionImpl#getLeftOperand <em>Left Operand</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.ShiftExpressionImpl#getOperator <em>Operator</em>}</li>
+ *   <li>{@link org.yakindu.base.expressions.expressions.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 ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND, null, msgs);
+			if (newLeftOperand != null)
+				msgs = ((InternalEObject)newLeftOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND, null, msgs);
+			msgs = basicSetLeftOperand(newLeftOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.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, ExpressionsPackage.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, ExpressionsPackage.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 - ExpressionsPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			if (newRightOperand != null)
+				msgs = ((InternalEObject)newRightOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExpressionsPackage.SHIFT_EXPRESSION__RIGHT_OPERAND, null, msgs);
+			msgs = basicSetRightOperand(newRightOperand, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.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 ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+				return basicSetLeftOperand(null, msgs);
+			case ExpressionsPackage.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 ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+				return getLeftOperand();
+			case ExpressionsPackage.SHIFT_EXPRESSION__OPERATOR:
+				return getOperator();
+			case ExpressionsPackage.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 ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)newValue);
+				return;
+			case ExpressionsPackage.SHIFT_EXPRESSION__OPERATOR:
+				setOperator((ShiftOperator)newValue);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+				setLeftOperand((Expression)null);
+				return;
+			case ExpressionsPackage.SHIFT_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+			case ExpressionsPackage.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 ExpressionsPackage.SHIFT_EXPRESSION__LEFT_OPERAND:
+				return leftOperand != null;
+			case ExpressionsPackage.SHIFT_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_EDEFAULT;
+			case ExpressionsPackage.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

+ 162 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/StringLiteralImpl.java

@@ -0,0 +1,162 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.expressions.expressions.StringLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.expressions.expressions.impl.StringLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringLiteralImpl extends LiteralImpl implements StringLiteral {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ExpressionsPackage.Literals.STRING_LITERAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ExpressionsPackage.STRING_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ExpressionsPackage.STRING_LITERAL__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ExpressionsPackage.STRING_LITERAL__VALUE:
+				setValue((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.STRING_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ExpressionsPackage.STRING_LITERAL__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //StringLiteralImpl

+ 534 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsAdapterFactory.java

@@ -0,0 +1,534 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.yakindu.base.expressions.expressions.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage
+ * @generated
+ */
+public class ExpressionsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ExpressionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ExpressionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExpressionsSwitch<Adapter> modelSwitch =
+		new ExpressionsSwitch<Adapter>() {
+			@Override
+			public Adapter caseExpression(Expression object) {
+				return createExpressionAdapter();
+			}
+			@Override
+			public Adapter caseLiteral(Literal object) {
+				return createLiteralAdapter();
+			}
+			@Override
+			public Adapter caseBoolLiteral(BoolLiteral object) {
+				return createBoolLiteralAdapter();
+			}
+			@Override
+			public Adapter caseIntLiteral(IntLiteral object) {
+				return createIntLiteralAdapter();
+			}
+			@Override
+			public Adapter caseRealLiteral(RealLiteral object) {
+				return createRealLiteralAdapter();
+			}
+			@Override
+			public Adapter caseHexLiteral(HexLiteral object) {
+				return createHexLiteralAdapter();
+			}
+			@Override
+			public Adapter caseStringLiteral(StringLiteral object) {
+				return createStringLiteralAdapter();
+			}
+			@Override
+			public Adapter caseAssignmentExpression(AssignmentExpression object) {
+				return createAssignmentExpressionAdapter();
+			}
+			@Override
+			public Adapter caseConditionalExpression(ConditionalExpression object) {
+				return createConditionalExpressionAdapter();
+			}
+			@Override
+			public Adapter caseLogicalOrExpression(LogicalOrExpression object) {
+				return createLogicalOrExpressionAdapter();
+			}
+			@Override
+			public Adapter caseLogicalAndExpression(LogicalAndExpression object) {
+				return createLogicalAndExpressionAdapter();
+			}
+			@Override
+			public Adapter caseLogicalNotExpression(LogicalNotExpression object) {
+				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();
+			}
+			@Override
+			public Adapter caseNumericalMultiplyDivideExpression(NumericalMultiplyDivideExpression object) {
+				return createNumericalMultiplyDivideExpressionAdapter();
+			}
+			@Override
+			public Adapter caseNumericalUnaryExpression(NumericalUnaryExpression object) {
+				return createNumericalUnaryExpressionAdapter();
+			}
+			@Override
+			public Adapter casePrimitiveValueExpression(PrimitiveValueExpression object) {
+				return createPrimitiveValueExpressionAdapter();
+			}
+			@Override
+			public Adapter caseFeatureCall(FeatureCall object) {
+				return createFeatureCallAdapter();
+			}
+			@Override
+			public Adapter caseElementReferenceExpression(ElementReferenceExpression object) {
+				return createElementReferenceExpressionAdapter();
+			}
+			@Override
+			public Adapter caseParenthesizedExpression(ParenthesizedExpression object) {
+				return createParenthesizedExpressionAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.Expression <em>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.base.expressions.expressions.Expression
+	 * @generated
+	 */
+	public Adapter createExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.Literal <em>Literal</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.base.expressions.expressions.Literal
+	 * @generated
+	 */
+	public Adapter createLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.BoolLiteral <em>Bool Literal</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.base.expressions.expressions.BoolLiteral
+	 * @generated
+	 */
+	public Adapter createBoolLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.IntLiteral <em>Int Literal</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.base.expressions.expressions.IntLiteral
+	 * @generated
+	 */
+	public Adapter createIntLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.RealLiteral <em>Real Literal</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.base.expressions.expressions.RealLiteral
+	 * @generated
+	 */
+	public Adapter createRealLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.HexLiteral <em>Hex Literal</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.base.expressions.expressions.HexLiteral
+	 * @generated
+	 */
+	public Adapter createHexLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.StringLiteral <em>String Literal</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.base.expressions.expressions.StringLiteral
+	 * @generated
+	 */
+	public Adapter createStringLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.AssignmentExpression <em>Assignment 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.base.expressions.expressions.AssignmentExpression
+	 * @generated
+	 */
+	public Adapter createAssignmentExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ConditionalExpression
+	 * @generated
+	 */
+	public Adapter createConditionalExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.LogicalOrExpression <em>Logical 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.base.expressions.expressions.LogicalOrExpression
+	 * @generated
+	 */
+	public Adapter createLogicalOrExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.LogicalAndExpression <em>Logical 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.base.expressions.expressions.LogicalAndExpression
+	 * @generated
+	 */
+	public Adapter createLogicalAndExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.LogicalNotExpression <em>Logical Not 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.base.expressions.expressions.LogicalNotExpression
+	 * @generated
+	 */
+	public Adapter createLogicalNotExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseXorExpression
+	 * @generated
+	 */
+	public Adapter createBitwiseXorExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseOrExpression
+	 * @generated
+	 */
+	public Adapter createBitwiseOrExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.BitwiseAndExpression
+	 * @generated
+	 */
+	public Adapter createBitwiseAndExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.LogicalRelationExpression <em>Logical Relation 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.base.expressions.expressions.LogicalRelationExpression
+	 * @generated
+	 */
+	public Adapter createLogicalRelationExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.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.base.expressions.expressions.ShiftExpression
+	 * @generated
+	 */
+	public Adapter createShiftExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression <em>Numerical Add Subtract 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.base.expressions.expressions.NumericalAddSubtractExpression
+	 * @generated
+	 */
+	public Adapter createNumericalAddSubtractExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression <em>Numerical Multiply Divide 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.base.expressions.expressions.NumericalMultiplyDivideExpression
+	 * @generated
+	 */
+	public Adapter createNumericalMultiplyDivideExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.NumericalUnaryExpression <em>Numerical Unary 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.base.expressions.expressions.NumericalUnaryExpression
+	 * @generated
+	 */
+	public Adapter createNumericalUnaryExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.PrimitiveValueExpression <em>Primitive Value 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.base.expressions.expressions.PrimitiveValueExpression
+	 * @generated
+	 */
+	public Adapter createPrimitiveValueExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.FeatureCall <em>Feature Call</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.base.expressions.expressions.FeatureCall
+	 * @generated
+	 */
+	public Adapter createFeatureCallAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.ElementReferenceExpression <em>Element Reference 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.base.expressions.expressions.ElementReferenceExpression
+	 * @generated
+	 */
+	public Adapter createElementReferenceExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.ParenthesizedExpression <em>Parenthesized 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.base.expressions.expressions.ParenthesizedExpression
+	 * @generated
+	 */
+	public Adapter createParenthesizedExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ExpressionsAdapterFactory

+ 615 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsSwitch.java

@@ -0,0 +1,615 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.yakindu.base.expressions.expressions.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage
+ * @generated
+ */
+public class ExpressionsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ExpressionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ExpressionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ExpressionsPackage.EXPRESSION: {
+				Expression expression = (Expression)theEObject;
+				T result = caseExpression(expression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.LITERAL: {
+				Literal literal = (Literal)theEObject;
+				T result = caseLiteral(literal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.BOOL_LITERAL: {
+				BoolLiteral boolLiteral = (BoolLiteral)theEObject;
+				T result = caseBoolLiteral(boolLiteral);
+				if (result == null) result = caseLiteral(boolLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.INT_LITERAL: {
+				IntLiteral intLiteral = (IntLiteral)theEObject;
+				T result = caseIntLiteral(intLiteral);
+				if (result == null) result = caseLiteral(intLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.REAL_LITERAL: {
+				RealLiteral realLiteral = (RealLiteral)theEObject;
+				T result = caseRealLiteral(realLiteral);
+				if (result == null) result = caseLiteral(realLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.HEX_LITERAL: {
+				HexLiteral hexLiteral = (HexLiteral)theEObject;
+				T result = caseHexLiteral(hexLiteral);
+				if (result == null) result = caseLiteral(hexLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.STRING_LITERAL: {
+				StringLiteral stringLiteral = (StringLiteral)theEObject;
+				T result = caseStringLiteral(stringLiteral);
+				if (result == null) result = caseLiteral(stringLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.ASSIGNMENT_EXPRESSION: {
+				AssignmentExpression assignmentExpression = (AssignmentExpression)theEObject;
+				T result = caseAssignmentExpression(assignmentExpression);
+				if (result == null) result = caseExpression(assignmentExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.CONDITIONAL_EXPRESSION: {
+				ConditionalExpression conditionalExpression = (ConditionalExpression)theEObject;
+				T result = caseConditionalExpression(conditionalExpression);
+				if (result == null) result = caseExpression(conditionalExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.LOGICAL_OR_EXPRESSION: {
+				LogicalOrExpression logicalOrExpression = (LogicalOrExpression)theEObject;
+				T result = caseLogicalOrExpression(logicalOrExpression);
+				if (result == null) result = caseExpression(logicalOrExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.LOGICAL_AND_EXPRESSION: {
+				LogicalAndExpression logicalAndExpression = (LogicalAndExpression)theEObject;
+				T result = caseLogicalAndExpression(logicalAndExpression);
+				if (result == null) result = caseExpression(logicalAndExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.LOGICAL_NOT_EXPRESSION: {
+				LogicalNotExpression logicalNotExpression = (LogicalNotExpression)theEObject;
+				T result = caseLogicalNotExpression(logicalNotExpression);
+				if (result == null) result = caseExpression(logicalNotExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.BITWISE_XOR_EXPRESSION: {
+				BitwiseXorExpression bitwiseXorExpression = (BitwiseXorExpression)theEObject;
+				T result = caseBitwiseXorExpression(bitwiseXorExpression);
+				if (result == null) result = caseExpression(bitwiseXorExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.BITWISE_OR_EXPRESSION: {
+				BitwiseOrExpression bitwiseOrExpression = (BitwiseOrExpression)theEObject;
+				T result = caseBitwiseOrExpression(bitwiseOrExpression);
+				if (result == null) result = caseExpression(bitwiseOrExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.BITWISE_AND_EXPRESSION: {
+				BitwiseAndExpression bitwiseAndExpression = (BitwiseAndExpression)theEObject;
+				T result = caseBitwiseAndExpression(bitwiseAndExpression);
+				if (result == null) result = caseExpression(bitwiseAndExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.LOGICAL_RELATION_EXPRESSION: {
+				LogicalRelationExpression logicalRelationExpression = (LogicalRelationExpression)theEObject;
+				T result = caseLogicalRelationExpression(logicalRelationExpression);
+				if (result == null) result = caseExpression(logicalRelationExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.SHIFT_EXPRESSION: {
+				ShiftExpression shiftExpression = (ShiftExpression)theEObject;
+				T result = caseShiftExpression(shiftExpression);
+				if (result == null) result = caseExpression(shiftExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.NUMERICAL_ADD_SUBTRACT_EXPRESSION: {
+				NumericalAddSubtractExpression numericalAddSubtractExpression = (NumericalAddSubtractExpression)theEObject;
+				T result = caseNumericalAddSubtractExpression(numericalAddSubtractExpression);
+				if (result == null) result = caseExpression(numericalAddSubtractExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION: {
+				NumericalMultiplyDivideExpression numericalMultiplyDivideExpression = (NumericalMultiplyDivideExpression)theEObject;
+				T result = caseNumericalMultiplyDivideExpression(numericalMultiplyDivideExpression);
+				if (result == null) result = caseExpression(numericalMultiplyDivideExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.NUMERICAL_UNARY_EXPRESSION: {
+				NumericalUnaryExpression numericalUnaryExpression = (NumericalUnaryExpression)theEObject;
+				T result = caseNumericalUnaryExpression(numericalUnaryExpression);
+				if (result == null) result = caseExpression(numericalUnaryExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.PRIMITIVE_VALUE_EXPRESSION: {
+				PrimitiveValueExpression primitiveValueExpression = (PrimitiveValueExpression)theEObject;
+				T result = casePrimitiveValueExpression(primitiveValueExpression);
+				if (result == null) result = caseExpression(primitiveValueExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.FEATURE_CALL: {
+				FeatureCall featureCall = (FeatureCall)theEObject;
+				T result = caseFeatureCall(featureCall);
+				if (result == null) result = caseExpression(featureCall);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.ELEMENT_REFERENCE_EXPRESSION: {
+				ElementReferenceExpression elementReferenceExpression = (ElementReferenceExpression)theEObject;
+				T result = caseElementReferenceExpression(elementReferenceExpression);
+				if (result == null) result = caseExpression(elementReferenceExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ExpressionsPackage.PARENTHESIZED_EXPRESSION: {
+				ParenthesizedExpression parenthesizedExpression = (ParenthesizedExpression)theEObject;
+				T result = caseParenthesizedExpression(parenthesizedExpression);
+				if (result == null) result = caseExpression(parenthesizedExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>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>Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExpression(Expression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Literal</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>Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLiteral(Literal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Bool Literal</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>Bool Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBoolLiteral(BoolLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Int Literal</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>Int Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntLiteral(IntLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Real Literal</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>Real Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRealLiteral(RealLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hex Literal</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>Hex Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHexLiteral(HexLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String Literal</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>String Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringLiteral(StringLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Assignment 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>Assignment Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAssignmentExpression(AssignmentExpression object) {
+		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 -->
+	 * 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>Logical Or Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogicalOrExpression(LogicalOrExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Logical 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>Logical And Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogicalAndExpression(LogicalAndExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Logical Not 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>Logical Not Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogicalNotExpression(LogicalNotExpression object) {
+		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 -->
+	 * 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>Logical Relation Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogicalRelationExpression(LogicalRelationExpression object) {
+		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 -->
+	 * 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>Numerical Add Subtract Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNumericalAddSubtractExpression(NumericalAddSubtractExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Numerical Multiply Divide 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>Numerical Multiply Divide Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNumericalMultiplyDivideExpression(NumericalMultiplyDivideExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Numerical Unary 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>Numerical Unary Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNumericalUnaryExpression(NumericalUnaryExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Primitive Value 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>Primitive Value Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePrimitiveValueExpression(PrimitiveValueExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Feature Call</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>Feature Call</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFeatureCall(FeatureCall object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Element Reference 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>Element Reference Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseElementReferenceExpression(ElementReferenceExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Parenthesized 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>Parenthesized Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseParenthesizedExpression(ParenthesizedExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ExpressionsSwitch

plugins/org.yakindu.base.expressions/model/generated/Expressions.ecore → plugins/org.yakindu.base.expressions/model/Expressions.ecore


+ 0 - 141
plugins/org.yakindu.base.expressions/model/generated/Expressions.genmodel

@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.yakindu.base.expressions/src-gen" editDirectory="/org.yakindu.base.expressions.edit/src"
-    editorDirectory="/org.yakindu.base.expressions.editor/src" modelPluginID="org.yakindu.base.expressions"
-    forceOverwrite="true" modelName="Expressions" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    complianceLevel="5.0" copyrightFields="false" editPluginID="org.yakindu.base.expressions.edit"
-    editorPluginID="org.yakindu.base.expressions.editor" runtimeVersion="2.9">
-  <genPackages prefix="Expressions" basePackage="org.yakindu.base.expressions" disposableProviderFactory="true"
-      fileExtensions="exp" ecorePackage="Expressions.ecore#/">
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//AssignmentOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/assign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/multAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/divAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/modAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/addAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/subAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/leftShiftAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/rightShiftAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/andAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/xorAssign"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AssignmentOperator/orAssign"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//ShiftOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//ShiftOperator/left"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//ShiftOperator/right"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//AdditiveOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AdditiveOperator/plus"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//AdditiveOperator/minus"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//MultiplicativeOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//MultiplicativeOperator/mul"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//MultiplicativeOperator/div"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//MultiplicativeOperator/mod"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//UnaryOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//UnaryOperator/positive"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//UnaryOperator/negative"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//UnaryOperator/complement"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Expressions.ecore#//RelationalOperator">
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/smaller"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/smallerEqual"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/greater"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/greaterEqual"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/equals"/>
-      <genEnumLiterals ecoreEnumLiteral="Expressions.ecore#//RelationalOperator/notEquals"/>
-    </genEnums>
-    <genClasses ecoreClass="Expressions.ecore#//Expression"/>
-    <genClasses ecoreClass="Expressions.ecore#//Literal"/>
-    <genClasses ecoreClass="Expressions.ecore#//BoolLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//BoolLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//IntLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//IntLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//RealLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//RealLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//HexLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//HexLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//StringLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//StringLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//AssignmentExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//AssignmentExpression/varRef"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//AssignmentExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//AssignmentExpression/expression"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//ConditionalExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ConditionalExpression/condition"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ConditionalExpression/trueCase"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ConditionalExpression/falseCase"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//LogicalOrExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalOrExpression/leftOperand"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalOrExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//LogicalAndExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalAndExpression/leftOperand"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalAndExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//LogicalNotExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalNotExpression/operand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//BitwiseXorExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseXorExpression/leftOperand"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseXorExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//BitwiseOrExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseOrExpression/leftOperand"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseOrExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//BitwiseAndExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseAndExpression/leftOperand"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//BitwiseAndExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//LogicalRelationExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalRelationExpression/leftOperand"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//LogicalRelationExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//LogicalRelationExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//ShiftExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ShiftExpression/leftOperand"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//ShiftExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ShiftExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//NumericalAddSubtractExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//NumericalAddSubtractExpression/leftOperand"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//NumericalAddSubtractExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//NumericalAddSubtractExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//NumericalMultiplyDivideExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//NumericalMultiplyDivideExpression/leftOperand"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//NumericalMultiplyDivideExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//NumericalMultiplyDivideExpression/rightOperand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//NumericalUnaryExpression">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//NumericalUnaryExpression/operator"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//NumericalUnaryExpression/operand"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//PrimitiveValueExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//PrimitiveValueExpression/value"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//FeatureCall">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//FeatureCall/owner"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Expressions.ecore#//FeatureCall/feature"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//FeatureCall/operationCall"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//FeatureCall/args"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//ElementReferenceExpression">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Expressions.ecore#//ElementReferenceExpression/reference"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Expressions.ecore#//ElementReferenceExpression/operationCall"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ElementReferenceExpression/args"/>
-    </genClasses>
-    <genClasses ecoreClass="Expressions.ecore#//ParenthesizedExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Expressions.ecore#//ParenthesizedExpression/expression"/>
-    </genClasses>
-  </genPackages>
-</genmodel:GenModel>

+ 1 - 1
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/Expressions.xtext

@@ -10,8 +10,8 @@
  */
 grammar org.yakindu.base.expressions.Expressions with org.eclipse.xtext.common.Terminals
 
-generate expressions "http://www.yakindu.org/base/expressions/Expressions"
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+import "http://www.yakindu.org/base/expressions/Expressions"  
 
 Expression:
 	AssignmentExpression;

+ 4 - 7
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/GenerateExpressions.mwe2

@@ -17,17 +17,14 @@ Workflow {
     	platformUri = "${runtimeProject}/.."
     	// The following two lines can be removed, if Xbase is not used.
     	registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
-    	registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+		registerGenModelFile = "platform:/resource/org.yakindu.base.expressions/model/Expressions.genmodel"
+		registerGeneratedEPackage = "org.yakindu.base.expressions.expressions.ExpressionsPackage"
     }
     
     component = DirectoryCleaner {
     	directory = "${runtimeProject}/src-gen"
     }
     
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}/model"
-    }
-    
     component = DirectoryCleaner {
     	directory = "${runtimeProject}.ui/src-gen"
     }
@@ -48,8 +45,8 @@ Workflow {
     		// Java API to access grammar elements (required by several other fragments)
     		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
     
-    		// generates Java API for the generated EPackages
-    		fragment = ecore.EMFGeneratorFragment auto-inject {}
+//    		// generates Java API for the generated EPackages
+//    		fragment = ecore.EMFGeneratorFragment auto-inject {}
     
     		// the old serialization component
     		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}