Kaynağa Gözat

Expressions.ecore is not generated by the xtext grammar anymore

Andreas Mülder 11 yıl önce
ebeveyn
işleme
68e23bf387
64 değiştirilmiş dosya ile 14445 ekleme ve 149 silme
  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

Dosya farkı çok büyük olduğundan ihmal edildi
+ 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

Dosya farkı çok büyük olduğundan ihmal edildi
+ 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 {}