Browse Source

Issue 1385 (#1387)

* #1385 Support for Binary LiteralsHexLiteral

* #1385 Support for Binary LiteralsHexLiteral

* Ignore Binary Literals

* Ignore Binary Literals

* changed type from int to long
Andreas Mülder 8 years ago
parent
commit
ef8202c93f
30 changed files with 444 additions and 252 deletions
  1. BIN
      plugins/org.yakindu.base.expressions.edit/icons/full/ctool16/CreatePrimitiveValueExpression_value_BinaryLiteral.gif
  2. BIN
      plugins/org.yakindu.base.expressions.edit/icons/full/obj16/BinaryLiteral.gif
  3. 1 0
      plugins/org.yakindu.base.expressions.edit/plugin.properties
  4. 97 0
      plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/BinaryLiteralItemProvider.java
  5. 24 0
      plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/ExpressionsItemProviderAdapterFactory.java
  6. 1 34
      plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/HexLiteralItemProvider.java
  7. 5 0
      plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/PrimitiveValueExpressionItemProvider.java
  8. 17 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BinaryLiteral.java
  9. 9 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsFactory.java
  10. 67 38
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsPackage.java
  11. 1 32
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/HexLiteral.java
  12. 37 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BinaryLiteralImpl.java
  13. 12 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsFactoryImpl.java
  14. 16 5
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsPackageImpl.java
  15. 1 124
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/HexLiteralImpl.java
  16. 19 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsAdapterFactory.java
  17. 26 0
      plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/util/ExpressionsSwitch.java
  18. 2 3
      plugins/org.yakindu.base.expressions/model/Expressions.ecore
  19. 7 1
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/Expressions.xtext
  20. 51 0
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/terminals/BinaryValueConverter.java
  21. 6 1
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/terminals/ExpressionsValueConverterService.java
  22. 3 0
      plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend
  23. 3 0
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/ExpressionCode.xtend
  24. 0 4
      plugins/org.yakindu.sct.generator.csharp/src/org/yakindu/sct/generator/csharp/ExpressionCode.xtend
  25. 0 4
      plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ExpressionCode.xtend
  26. 0 5
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/StextStatementInterpreter.xtend
  27. 1 1
      test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/SCTUnitClassifierTest.java
  28. 7 0
      test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/StextParserRuleTest.java
  29. 18 0
      test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/TypeInferrerTest.java
  30. 13 0
      test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/STextInterpreterTest.java

BIN
plugins/org.yakindu.base.expressions.edit/icons/full/ctool16/CreatePrimitiveValueExpression_value_BinaryLiteral.gif


BIN
plugins/org.yakindu.base.expressions.edit/icons/full/obj16/BinaryLiteral.gif


+ 1 - 0
plugins/org.yakindu.base.expressions.edit/plugin.properties

@@ -148,3 +148,4 @@ _UI_Argument_type = Argument
 _UI_ArgumentExpression_arguments_feature = Arguments
 _UI_Argument_parameter_feature = Parameter
 _UI_Argument_value_feature = Value
+_UI_BinaryLiteral_type = Binary Literal

+ 97 - 0
plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/BinaryLiteralItemProvider.java

@@ -0,0 +1,97 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.yakindu.base.expressions.expressions.BinaryLiteral;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.base.expressions.expressions.BinaryLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BinaryLiteralItemProvider extends HexLiteralItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryLiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns BinaryLiteral.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BinaryLiteral"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BinaryLiteral binaryLiteral = (BinaryLiteral)object;
+		return getString("_UI_BinaryLiteral_type") + " " + binaryLiteral.getValue();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}

+ 24 - 0
plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/ExpressionsItemProviderAdapterFactory.java

@@ -192,6 +192,29 @@ public class ExpressionsItemProviderAdapterFactory extends ExpressionsAdapterFac
 		return hexLiteralItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.base.expressions.expressions.BinaryLiteral} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BinaryLiteralItemProvider binaryLiteralItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.base.expressions.expressions.BinaryLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBinaryLiteralAdapter() {
+		if (binaryLiteralItemProvider == null) {
+			binaryLiteralItemProvider = new BinaryLiteralItemProvider(this);
+		}
+
+		return binaryLiteralItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.base.expressions.expressions.StringLiteral} instances.
 	 * <!-- begin-user-doc -->
@@ -779,6 +802,7 @@ public class ExpressionsItemProviderAdapterFactory extends ExpressionsAdapterFac
 		if (doubleLiteralItemProvider != null) doubleLiteralItemProvider.dispose();
 		if (floatLiteralItemProvider != null) floatLiteralItemProvider.dispose();
 		if (hexLiteralItemProvider != null) hexLiteralItemProvider.dispose();
+		if (binaryLiteralItemProvider != null) binaryLiteralItemProvider.dispose();
 		if (stringLiteralItemProvider != null) stringLiteralItemProvider.dispose();
 		if (nullLiteralItemProvider != null) nullLiteralItemProvider.dispose();
 		if (assignmentExpressionItemProvider != null) assignmentExpressionItemProvider.dispose();

+ 1 - 34
plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/HexLiteralItemProvider.java

@@ -16,11 +16,7 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-import org.yakindu.base.expressions.expressions.ExpressionsPackage;
 import org.yakindu.base.expressions.expressions.HexLiteral;
 
 /**
@@ -30,7 +26,7 @@ import org.yakindu.base.expressions.expressions.HexLiteral;
  * @generated
  */
 public class HexLiteralItemProvider
-	extends LiteralItemProvider {
+	extends IntLiteralItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -52,33 +48,10 @@ public class HexLiteralItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addValuePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
-	/**
-	 * This adds a property descriptor for the Value feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addValuePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_HexLiteral_value_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_HexLiteral_value_feature", "_UI_HexLiteral_type"),
-				 ExpressionsPackage.Literals.HEX_LITERAL__VALUE,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
 	/**
 	 * This returns HexLiteral.gif.
 	 * <!-- begin-user-doc -->
@@ -112,12 +85,6 @@ public class HexLiteralItemProvider
 	@Override
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
-
-		switch (notification.getFeatureID(HexLiteral.class)) {
-			case ExpressionsPackage.HEX_LITERAL__VALUE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
 		super.notifyChanged(notification);
 	}
 

+ 5 - 0
plugins/org.yakindu.base.expressions.edit/src/org/yakindu/base/expressions/expressions/provider/PrimitiveValueExpressionItemProvider.java

@@ -163,6 +163,11 @@ public class PrimitiveValueExpressionItemProvider
 				(ExpressionsPackage.Literals.PRIMITIVE_VALUE_EXPRESSION__VALUE,
 				 ExpressionsFactory.eINSTANCE.createHexLiteral()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(ExpressionsPackage.Literals.PRIMITIVE_VALUE_EXPRESSION__VALUE,
+				 ExpressionsFactory.eINSTANCE.createBinaryLiteral()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(ExpressionsPackage.Literals.PRIMITIVE_VALUE_EXPRESSION__VALUE,

+ 17 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/BinaryLiteral.java

@@ -0,0 +1,17 @@
+/**
+ */
+package org.yakindu.base.expressions.expressions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binary Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.base.expressions.expressions.ExpressionsPackage#getBinaryLiteral()
+ * @model
+ * @generated
+ */
+public interface BinaryLiteral extends HexLiteral {
+} // BinaryLiteral

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

@@ -66,6 +66,15 @@ public interface ExpressionsFactory extends EFactory {
 	 */
 	HexLiteral createHexLiteral();
 
+	/**
+	 * Returns a new object of class '<em>Binary Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Binary Literal</em>'.
+	 * @generated
+	 */
+	BinaryLiteral createBinaryLiteral();
+
 	/**
 	 * Returns a new object of class '<em>String Literal</em>'.
 	 * <!-- begin-user-doc -->

+ 67 - 38
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/ExpressionsPackage.java

@@ -143,7 +143,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getStringLiteral()
 	 * @generated
 	 */
-	int STRING_LITERAL = 10;
+	int STRING_LITERAL = 11;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.NullLiteralImpl <em>Null Literal</em>}' class.
@@ -153,7 +153,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getNullLiteral()
 	 * @generated
 	 */
-	int NULL_LITERAL = 11;
+	int NULL_LITERAL = 12;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.AssignmentExpressionImpl <em>Assignment Expression</em>}' class.
@@ -163,7 +163,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getAssignmentExpression()
 	 * @generated
 	 */
-	int ASSIGNMENT_EXPRESSION = 12;
+	int ASSIGNMENT_EXPRESSION = 13;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.ConditionalExpressionImpl <em>Conditional Expression</em>}' class.
@@ -173,7 +173,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getConditionalExpression()
 	 * @generated
 	 */
-	int CONDITIONAL_EXPRESSION = 13;
+	int CONDITIONAL_EXPRESSION = 14;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.BinaryExpressionImpl <em>Binary Expression</em>}' class.
@@ -248,7 +248,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getLogicalOrExpression()
 	 * @generated
 	 */
-	int LOGICAL_OR_EXPRESSION = 14;
+	int LOGICAL_OR_EXPRESSION = 15;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.LogicalAndExpressionImpl <em>Logical And Expression</em>}' class.
@@ -258,7 +258,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getLogicalAndExpression()
 	 * @generated
 	 */
-	int LOGICAL_AND_EXPRESSION = 15;
+	int LOGICAL_AND_EXPRESSION = 16;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.LogicalNotExpressionImpl <em>Logical Not Expression</em>}' class.
@@ -268,7 +268,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getLogicalNotExpression()
 	 * @generated
 	 */
-	int LOGICAL_NOT_EXPRESSION = 16;
+	int LOGICAL_NOT_EXPRESSION = 17;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.BitwiseXorExpressionImpl <em>Bitwise Xor Expression</em>}' class.
@@ -278,7 +278,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBitwiseXorExpression()
 	 * @generated
 	 */
-	int BITWISE_XOR_EXPRESSION = 17;
+	int BITWISE_XOR_EXPRESSION = 18;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.BitwiseOrExpressionImpl <em>Bitwise Or Expression</em>}' class.
@@ -288,7 +288,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBitwiseOrExpression()
 	 * @generated
 	 */
-	int BITWISE_OR_EXPRESSION = 18;
+	int BITWISE_OR_EXPRESSION = 19;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.BitwiseAndExpressionImpl <em>Bitwise And Expression</em>}' class.
@@ -298,7 +298,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBitwiseAndExpression()
 	 * @generated
 	 */
-	int BITWISE_AND_EXPRESSION = 19;
+	int BITWISE_AND_EXPRESSION = 20;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.LogicalRelationExpressionImpl <em>Logical Relation Expression</em>}' class.
@@ -308,7 +308,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getLogicalRelationExpression()
 	 * @generated
 	 */
-	int LOGICAL_RELATION_EXPRESSION = 20;
+	int LOGICAL_RELATION_EXPRESSION = 21;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.ShiftExpressionImpl <em>Shift Expression</em>}' class.
@@ -318,7 +318,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getShiftExpression()
 	 * @generated
 	 */
-	int SHIFT_EXPRESSION = 21;
+	int SHIFT_EXPRESSION = 22;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.NumericalAddSubtractExpressionImpl <em>Numerical Add Subtract Expression</em>}' class.
@@ -328,7 +328,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getNumericalAddSubtractExpression()
 	 * @generated
 	 */
-	int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 22;
+	int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 23;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.NumericalMultiplyDivideExpressionImpl <em>Numerical Multiply Divide Expression</em>}' class.
@@ -338,7 +338,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getNumericalMultiplyDivideExpression()
 	 * @generated
 	 */
-	int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 23;
+	int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 24;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.NumericalUnaryExpressionImpl <em>Numerical Unary Expression</em>}' class.
@@ -348,7 +348,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getNumericalUnaryExpression()
 	 * @generated
 	 */
-	int NUMERICAL_UNARY_EXPRESSION = 24;
+	int NUMERICAL_UNARY_EXPRESSION = 25;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.PrimitiveValueExpressionImpl <em>Primitive Value Expression</em>}' class.
@@ -358,7 +358,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getPrimitiveValueExpression()
 	 * @generated
 	 */
-	int PRIMITIVE_VALUE_EXPRESSION = 25;
+	int PRIMITIVE_VALUE_EXPRESSION = 26;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.ArgumentExpressionImpl <em>Argument Expression</em>}' class.
@@ -476,7 +476,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int HEX_LITERAL__VALUE = LITERAL_FEATURE_COUNT + 0;
+	int HEX_LITERAL__VALUE = INT_LITERAL__VALUE;
 
 	/**
 	 * The number of structural features of the '<em>Hex Literal</em>' class.
@@ -485,7 +485,35 @@ public interface ExpressionsPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int HEX_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
+	int HEX_LITERAL_FEATURE_COUNT = INT_LITERAL_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.impl.BinaryLiteralImpl <em>Binary Literal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.expressions.expressions.impl.BinaryLiteralImpl
+	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBinaryLiteral()
+	 * @generated
+	 */
+	int BINARY_LITERAL = 10;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BINARY_LITERAL__VALUE = HEX_LITERAL__VALUE;
+
+	/**
+	 * The number of structural features of the '<em>Binary Literal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BINARY_LITERAL_FEATURE_COUNT = HEX_LITERAL_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -936,7 +964,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getFeatureCall()
 	 * @generated
 	 */
-	int FEATURE_CALL = 26;
+	int FEATURE_CALL = 27;
 
 	/**
 	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
@@ -1009,7 +1037,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getElementReferenceExpression()
 	 * @generated
 	 */
-	int ELEMENT_REFERENCE_EXPRESSION = 27;
+	int ELEMENT_REFERENCE_EXPRESSION = 28;
 
 	/**
 	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
@@ -1073,7 +1101,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getParenthesizedExpression()
 	 * @generated
 	 */
-	int PARENTHESIZED_EXPRESSION = 28;
+	int PARENTHESIZED_EXPRESSION = 29;
 
 	/**
 	 * The feature id for the '<em><b>Expression</b></em>' containment reference.
@@ -1101,7 +1129,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getTypeCastExpression()
 	 * @generated
 	 */
-	int TYPE_CAST_EXPRESSION = 29;
+	int TYPE_CAST_EXPRESSION = 30;
 
 	/**
 	 * The feature id for the '<em><b>Operand</b></em>' containment reference.
@@ -1138,7 +1166,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getArgument()
 	 * @generated
 	 */
-	int ARGUMENT = 30;
+	int ARGUMENT = 31;
 
 	/**
 	 * The feature id for the '<em><b>Parameter</b></em>' reference.
@@ -1175,7 +1203,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getAssignmentOperator()
 	 * @generated
 	 */
-	int ASSIGNMENT_OPERATOR = 31;
+	int ASSIGNMENT_OPERATOR = 32;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.ShiftOperator <em>Shift Operator</em>}' enum.
@@ -1185,7 +1213,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getShiftOperator()
 	 * @generated
 	 */
-	int SHIFT_OPERATOR = 32;
+	int SHIFT_OPERATOR = 33;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.AdditiveOperator <em>Additive Operator</em>}' enum.
@@ -1195,7 +1223,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getAdditiveOperator()
 	 * @generated
 	 */
-	int ADDITIVE_OPERATOR = 33;
+	int ADDITIVE_OPERATOR = 34;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.MultiplicativeOperator <em>Multiplicative Operator</em>}' enum.
@@ -1205,7 +1233,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getMultiplicativeOperator()
 	 * @generated
 	 */
-	int MULTIPLICATIVE_OPERATOR = 34;
+	int MULTIPLICATIVE_OPERATOR = 35;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.UnaryOperator <em>Unary Operator</em>}' enum.
@@ -1215,7 +1243,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getUnaryOperator()
 	 * @generated
 	 */
-	int UNARY_OPERATOR = 35;
+	int UNARY_OPERATOR = 36;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.RelationalOperator <em>Relational Operator</em>}' enum.
@@ -1225,7 +1253,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getRelationalOperator()
 	 * @generated
 	 */
-	int RELATIONAL_OPERATOR = 36;
+	int RELATIONAL_OPERATOR = 37;
 
 
 	/**
@@ -1236,7 +1264,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getLogicalOperator()
 	 * @generated
 	 */
-	int LOGICAL_OPERATOR = 37;
+	int LOGICAL_OPERATOR = 38;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.expressions.expressions.BitwiseOperator <em>Bitwise Operator</em>}' enum.
@@ -1246,7 +1274,7 @@ public interface ExpressionsPackage extends EPackage {
 	 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBitwiseOperator()
 	 * @generated
 	 */
-	int BITWISE_OPERATOR = 38;
+	int BITWISE_OPERATOR = 39;
 
 
 	/**
@@ -1364,15 +1392,14 @@ public interface ExpressionsPackage extends EPackage {
 	EClass getHexLiteral();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.base.expressions.expressions.HexLiteral#getValue <em>Value</em>}'.
+	 * Returns the meta object for class '{@link org.yakindu.base.expressions.expressions.BinaryLiteral <em>Binary Literal</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Value</em>'.
-	 * @see org.yakindu.base.expressions.expressions.HexLiteral#getValue()
-	 * @see #getHexLiteral()
+	 * @return the meta object for class '<em>Binary Literal</em>'.
+	 * @see org.yakindu.base.expressions.expressions.BinaryLiteral
 	 * @generated
 	 */
-	EAttribute getHexLiteral_Value();
+	EClass getBinaryLiteral();
 
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.expressions.expressions.StringLiteral <em>String Literal</em>}'.
@@ -2160,12 +2187,14 @@ public interface ExpressionsPackage extends EPackage {
 		EClass HEX_LITERAL = eINSTANCE.getHexLiteral();
 
 		/**
-		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * The meta object literal for the '{@link org.yakindu.base.expressions.expressions.impl.BinaryLiteralImpl <em>Binary Literal</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.expressions.expressions.impl.BinaryLiteralImpl
+		 * @see org.yakindu.base.expressions.expressions.impl.ExpressionsPackageImpl#getBinaryLiteral()
 		 * @generated
 		 */
-		EAttribute HEX_LITERAL__VALUE = eINSTANCE.getHexLiteral_Value();
+		EClass BINARY_LITERAL = eINSTANCE.getBinaryLiteral();
 
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.expressions.expressions.impl.StringLiteralImpl <em>String Literal</em>}' class.

+ 1 - 32
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/HexLiteral.java

@@ -8,42 +8,11 @@ package org.yakindu.base.expressions.expressions;
  * A representation of the model object '<em><b>Hex Literal</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.base.expressions.expressions.HexLiteral#getValue <em>Value</em>}</li>
- * </ul>
  *
  * @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);
+public interface HexLiteral extends IntLiteral {
 
 } // HexLiteral

+ 37 - 0
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/BinaryLiteralImpl.java

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

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

@@ -8,6 +8,7 @@ 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.*;
 import org.yakindu.base.expressions.expressions.AdditiveOperator;
 import org.yakindu.base.expressions.expressions.Argument;
 import org.yakindu.base.expressions.expressions.AssignmentExpression;
@@ -94,6 +95,7 @@ public class ExpressionsFactoryImpl extends EFactoryImpl implements ExpressionsF
 			case ExpressionsPackage.DOUBLE_LITERAL: return createDoubleLiteral();
 			case ExpressionsPackage.FLOAT_LITERAL: return createFloatLiteral();
 			case ExpressionsPackage.HEX_LITERAL: return createHexLiteral();
+			case ExpressionsPackage.BINARY_LITERAL: return createBinaryLiteral();
 			case ExpressionsPackage.STRING_LITERAL: return createStringLiteral();
 			case ExpressionsPackage.NULL_LITERAL: return createNullLiteral();
 			case ExpressionsPackage.ASSIGNMENT_EXPRESSION: return createAssignmentExpression();
@@ -228,6 +230,16 @@ public class ExpressionsFactoryImpl extends EFactoryImpl implements ExpressionsF
 		return hexLiteral;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryLiteral createBinaryLiteral() {
+		BinaryLiteralImpl binaryLiteral = new BinaryLiteralImpl();
+		return binaryLiteral;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 16 - 5
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/ExpressionsPackageImpl.java

@@ -14,6 +14,7 @@ import org.yakindu.base.expressions.expressions.ArgumentExpression;
 import org.yakindu.base.expressions.expressions.AssignmentExpression;
 import org.yakindu.base.expressions.expressions.AssignmentOperator;
 import org.yakindu.base.expressions.expressions.BinaryExpression;
+import org.yakindu.base.expressions.expressions.BinaryLiteral;
 import org.yakindu.base.expressions.expressions.BitwiseAndExpression;
 import org.yakindu.base.expressions.expressions.BitwiseOperator;
 import org.yakindu.base.expressions.expressions.BitwiseOrExpression;
@@ -107,6 +108,13 @@ public class ExpressionsPackageImpl extends EPackageImpl implements ExpressionsP
 	 */
 	private EClass hexLiteralEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass binaryLiteralEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -499,8 +507,8 @@ public class ExpressionsPackageImpl extends EPackageImpl implements ExpressionsP
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getHexLiteral_Value() {
-		return (EAttribute)hexLiteralEClass.getEStructuralFeatures().get(0);
+	public EClass getBinaryLiteral() {
+		return binaryLiteralEClass;
 	}
 
 	/**
@@ -1125,7 +1133,8 @@ public class ExpressionsPackageImpl extends EPackageImpl implements ExpressionsP
 		createEAttribute(floatLiteralEClass, FLOAT_LITERAL__VALUE);
 
 		hexLiteralEClass = createEClass(HEX_LITERAL);
-		createEAttribute(hexLiteralEClass, HEX_LITERAL__VALUE);
+
+		binaryLiteralEClass = createEClass(BINARY_LITERAL);
 
 		stringLiteralEClass = createEClass(STRING_LITERAL);
 		createEAttribute(stringLiteralEClass, STRING_LITERAL__VALUE);
@@ -1245,7 +1254,8 @@ public class ExpressionsPackageImpl extends EPackageImpl implements ExpressionsP
 		intLiteralEClass.getESuperTypes().add(this.getLiteral());
 		doubleLiteralEClass.getESuperTypes().add(this.getLiteral());
 		floatLiteralEClass.getESuperTypes().add(this.getLiteral());
-		hexLiteralEClass.getESuperTypes().add(this.getLiteral());
+		hexLiteralEClass.getESuperTypes().add(this.getIntLiteral());
+		binaryLiteralEClass.getESuperTypes().add(this.getHexLiteral());
 		stringLiteralEClass.getESuperTypes().add(this.getLiteral());
 		nullLiteralEClass.getESuperTypes().add(this.getLiteral());
 		assignmentExpressionEClass.getESuperTypes().add(this.getExpression());
@@ -1303,7 +1313,8 @@ public class ExpressionsPackageImpl extends EPackageImpl implements ExpressionsP
 		initEAttribute(getFloatLiteral_Value(), ecorePackage.getEFloat(), "value", null, 0, 1, FloatLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(hexLiteralEClass, HexLiteral.class, "HexLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getHexLiteral_Value(), ecorePackage.getEInt(), "value", null, 0, 1, HexLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(binaryLiteralEClass, BinaryLiteral.class, "BinaryLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(stringLiteralEClass, StringLiteral.class, "StringLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getStringLiteral_Value(), ecorePackage.getEString(), "value", null, 0, 1, StringLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+ 1 - 124
plugins/org.yakindu.base.expressions/emf-gen/org/yakindu/base/expressions/expressions/impl/HexLiteralImpl.java

@@ -2,9 +2,7 @@
  */
 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;
 
@@ -12,36 +10,10 @@ 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:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.base.expressions.expressions.impl.HexLiteralImpl#getValue <em>Value</em>}</li>
- * </ul>
  *
  * @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;
-
+public class HexLiteralImpl extends IntLiteralImpl implements HexLiteral {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -61,99 +33,4 @@ public class HexLiteralImpl extends LiteralImpl implements HexLiteral {
 		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

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

@@ -6,6 +6,7 @@ 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.*;
 import org.yakindu.base.expressions.expressions.Argument;
 import org.yakindu.base.expressions.expressions.ArgumentExpression;
 import org.yakindu.base.expressions.expressions.AssignmentExpression;
@@ -136,6 +137,10 @@ public class ExpressionsAdapterFactory extends AdapterFactoryImpl {
 				return createHexLiteralAdapter();
 			}
 			@Override
+			public Adapter caseBinaryLiteral(BinaryLiteral object) {
+				return createBinaryLiteralAdapter();
+			}
+			@Override
 			public Adapter caseStringLiteral(StringLiteral object) {
 				return createStringLiteralAdapter();
 			}
@@ -337,6 +342,20 @@ public class ExpressionsAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.expressions.expressions.BinaryLiteral <em>Binary 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.BinaryLiteral
+	 * @generated
+	 */
+	public Adapter createBinaryLiteralAdapter() {
+		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 -->

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

@@ -5,6 +5,7 @@ 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.*;
 import org.yakindu.base.expressions.expressions.Argument;
 import org.yakindu.base.expressions.expressions.ArgumentExpression;
 import org.yakindu.base.expressions.expressions.AssignmentExpression;
@@ -159,10 +160,20 @@ public class ExpressionsSwitch<T> extends Switch<T> {
 			case ExpressionsPackage.HEX_LITERAL: {
 				HexLiteral hexLiteral = (HexLiteral)theEObject;
 				T result = caseHexLiteral(hexLiteral);
+				if (result == null) result = caseIntLiteral(hexLiteral);
 				if (result == null) result = caseLiteral(hexLiteral);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case ExpressionsPackage.BINARY_LITERAL: {
+				BinaryLiteral binaryLiteral = (BinaryLiteral)theEObject;
+				T result = caseBinaryLiteral(binaryLiteral);
+				if (result == null) result = caseHexLiteral(binaryLiteral);
+				if (result == null) result = caseIntLiteral(binaryLiteral);
+				if (result == null) result = caseLiteral(binaryLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case ExpressionsPackage.STRING_LITERAL: {
 				StringLiteral stringLiteral = (StringLiteral)theEObject;
 				T result = caseStringLiteral(stringLiteral);
@@ -431,6 +442,21 @@ public class ExpressionsSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Binary 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>Binary Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBinaryLiteral(BinaryLiteral object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>String Literal</em>'.
 	 * <!-- begin-user-doc -->

+ 2 - 3
plugins/org.yakindu.base.expressions/model/Expressions.ecore

@@ -35,9 +35,8 @@
   <eClassifiers xsi:type="ecore:EClass" name="FloatLiteral" eSuperTypes="#//Literal">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="HexLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="HexLiteral" eSuperTypes="#//IntLiteral"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BinaryLiteral" eSuperTypes="#//HexLiteral"/>
   <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>

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

@@ -109,7 +109,7 @@ ParenthesizedExpression returns Expression:
 	{ParenthesizedExpression} '(' expression=Expression ')';
 
 Literal:
-	BoolLiteral | IntLiteral | HexLiteral | DoubleLiteral | FloatLiteral | StringLiteral | NullLiteral;
+	BoolLiteral | IntLiteral | HexLiteral | BinaryLiteral | DoubleLiteral | FloatLiteral | StringLiteral | NullLiteral;
 
 BoolLiteral:
 	{BoolLiteral} value=BOOL;
@@ -126,6 +126,9 @@ FloatLiteral:
 HexLiteral:
 	{HexLiteral} value=HEX;
 
+BinaryLiteral:
+	{BinaryLiteral} value=BINARY;
+
 StringLiteral:
 	{StringLiteral} value=STRING;
 
@@ -186,6 +189,9 @@ terminal BOOL returns ecore::EBoolean:
 terminal HEX returns ecore::EInt:
 	('0') ('x' | 'X') ('0'..'9' | 'a'..'f' | 'A'..'F')+;
 
+terminal BINARY returns ecore::EInt: 
+	('0')('b' | 'B') ('0'|'1')+
+;
 terminal DOUBLE returns ecore::EDouble:
 	(INT '.' INT) ('e' ('-' | '+') INT)? ('d' | 'D')?;
 

+ 51 - 0
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/terminals/BinaryValueConverter.java

@@ -0,0 +1,51 @@
+/** 
+ * Copyright (c) 2017 committers of YAKINDU and others. 
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0 
+ * which accompanies this distribution, and is available at 
+ * http://www.eclipse.org/legal/epl-v10.html 
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ *
+*/
+package org.yakindu.base.expressions.terminals;
+
+import org.eclipse.xtext.conversion.ValueConverterException;
+import org.eclipse.xtext.conversion.impl.AbstractLexerBasedConverter;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.util.Strings;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class BinaryValueConverter extends AbstractLexerBasedConverter<Integer> {
+
+	public static final String BINARY_PREFIX = "0b";
+	
+	public Integer toValue(String string, INode node) {
+
+		if (Strings.isEmpty(string))
+			throw new ValueConverterException("Couldn't convert empty string to number.", node, null);
+
+		try {
+			// perform the conversion with string index 2 since the prefix is always '0x'
+			return Integer.parseInt(string.substring(2), 2);
+		} catch ( NumberFormatException e ) {
+			throw new ValueConverterException("Couldn't convert '" + string + "' to number.", node, null);
+		}
+	}
+
+	@Override
+	protected String toEscapedString(Integer value) {
+		if (value < 0) { 
+			return "-" + BINARY_PREFIX + Integer.toString( value * -1, 2).toUpperCase();
+
+		}
+		return BINARY_PREFIX + Integer.toString(value, 2).toUpperCase();
+	}
+	
+	
+
+}

+ 6 - 1
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/terminals/ExpressionsValueConverterService.java

@@ -23,17 +23,22 @@ public class ExpressionsValueConverterService extends DefaultTerminalConverters
 	
 	protected BoolValueConverter boolConverter = new BoolValueConverter();
 	protected HexValueConverter hexConverter = new HexValueConverter();
+	protected BinaryValueConverter binaryConverter = new BinaryValueConverter();
 	
 	@ValueConverter(rule = "BOOL")
 	public IValueConverter<Boolean> BOOL() {
 		return boolConverter;
 	}
-
 	
 	@ValueConverter(rule = "HEX")
 	public IValueConverter<Integer> HEX() {
 		return hexConverter;
 	}
+	
+	@ValueConverter(rule = "BINARY")
+	public IValueConverter<Integer> BINARY() {
+		return binaryConverter;
+	}
 
 
 }

+ 3 - 0
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend

@@ -46,6 +46,7 @@ import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
 import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.stext.VariableDefinition
 import org.yakindu.base.expressions.expressions.ConditionalExpression
+import org.yakindu.base.expressions.expressions.BinaryLiteral
 
 class ExpressionCode extends Expressions {
 
@@ -113,6 +114,8 @@ class ExpressionCode extends Expressions {
 	def dispatch CharSequence code(FloatLiteral it) '''«value.toString»'''
 
 	def dispatch CharSequence code(HexLiteral it) '''0x«Integer::toHexString(value)»'''
+	
+	def dispatch CharSequence code(BinaryLiteral it) '''0b«Integer::toBinaryString(value)»'''
 
 	def dispatch CharSequence code(PrimitiveValueExpression it) '''«value.code»'''
 

+ 3 - 0
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/ExpressionCode.xtend

@@ -12,6 +12,7 @@ package org.yakindu.sct.generator.cpp
 
 import com.google.inject.Inject
 import org.yakindu.base.expressions.expressions.AssignmentExpression
+import org.yakindu.base.expressions.expressions.BinaryLiteral
 import org.yakindu.base.expressions.expressions.BoolLiteral
 import org.yakindu.base.expressions.expressions.ConditionalExpression
 import org.yakindu.base.expressions.expressions.DoubleLiteral
@@ -93,6 +94,8 @@ class ExpressionCode extends Expressions {
 	def dispatch CharSequence code(FloatLiteral it) '''«value.toString»'''
 
 	def dispatch CharSequence code(HexLiteral it) '''0x«Integer::toHexString(value)»'''
+	
+	def dispatch CharSequence code(BinaryLiteral it) '''0b«Integer::toBinaryString(value)»'''
 
 	def dispatch CharSequence code(PrimitiveValueExpression it) '''«value.code»'''
 

+ 0 - 4
plugins/org.yakindu.sct.generator.csharp/src/org/yakindu/sct/generator/csharp/ExpressionCode.xtend

@@ -77,10 +77,6 @@ class ExpressionCode extends Expressions {
 		expression.value.toString();
 	}
 
-	def dispatch CharSequence code(HexLiteral expression) {
-		expression.value.toString();
-	}
-
 	def dispatch CharSequence code(DoubleLiteral expression) {
 		expression.value.toString();
 	}

+ 0 - 4
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ExpressionCode.xtend

@@ -115,10 +115,6 @@ class ExpressionCode extends Expressions {
 		expression.value.toString();
 	}
 
-	def dispatch String code(HexLiteral expression) {
-		expression.value.toString();
-	}
-
 	def dispatch String code(DoubleLiteral expression) {
 		expression.value.toString();
 	}

+ 0 - 5
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/StextStatementInterpreter.xtend

@@ -25,7 +25,6 @@ import org.yakindu.base.expressions.expressions.ElementReferenceExpression
 import org.yakindu.base.expressions.expressions.Expression
 import org.yakindu.base.expressions.expressions.FeatureCall
 import org.yakindu.base.expressions.expressions.FloatLiteral
-import org.yakindu.base.expressions.expressions.HexLiteral
 import org.yakindu.base.expressions.expressions.IntLiteral
 import org.yakindu.base.expressions.expressions.LogicalAndExpression
 import org.yakindu.base.expressions.expressions.LogicalNotExpression
@@ -346,10 +345,6 @@ class StextStatementInterpreter extends AbstractStatementInterpreter {
 		return literal.value as long
 	}
 
-	def dispatch valueLiteral(HexLiteral literal) {
-		return literal.value as long
-	}
-
 	def dispatch valueLiteral(BoolLiteral bool) {
 		return bool.value
 	}

+ 1 - 1
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/SCTUnitClassifierTest.java

@@ -56,7 +56,7 @@ public class SCTUnitClassifierTest {
 			StextPackage.Literals.IMPORT_SCOPE, StextPackage.Literals.STATECHART_SCOPE,
 			SGraphPackage.Literals.IMPORT_DECLARATION, SGraphPackage.Literals.SCOPE,
 			StextPackage.Literals.TRANSITION_REACTION, SGraphPackage.Literals.REACTION_PROPERTY,
-			StextPackage.Literals.ARGUMENTED_ANNOTATION);
+			StextPackage.Literals.ARGUMENTED_ANNOTATION, ExpressionsPackage.Literals.BINARY_LITERAL);
 
 	@Test
 	public void checkEClassesCoveredByTestModels() throws Exception {

+ 7 - 0
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/StextParserRuleTest.java

@@ -66,6 +66,13 @@ public class StextParserRuleTest extends AbstractSTextTest {
 		parseExpression("0xFFB5C5", rule);
 		parseExpression("0XFFB5C5", rule);
 	}
+	
+	@Test
+	public void testBinaryLiteral() {
+		String rule = PrimitiveValueExpression.class.getSimpleName();
+		parseExpression("0b1101101", rule);
+		parseExpression("0B1110001", rule);
+	}
 
 	@Test
 	public void testRealLiteral() {

+ 18 - 0
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/TypeInferrerTest.java

@@ -40,6 +40,7 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		// int
 		assertTrue(isIntegerType(inferType("1")));
 		assertTrue(isIntegerType(inferType("0x0F")));
+		assertTrue(isIntegerType(inferType("0b00001")));
 		assertTrue(isIntegerType(inferType("-1")));
 		assertTrue(isIntegerType(inferType("0")));
 		assertTrue(isIntegerType(inferType("intVar")));
@@ -77,6 +78,9 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("1 + 0x0F")));
 		assertTrue(isIntegerType(inferType("0x0F + 0x0F")));
 		assertTrue(isIntegerType(inferType("intVar + 0x0F")));
+		assertTrue(isIntegerType(inferType("1 + 0b11")));
+		assertTrue(isIntegerType(inferType("0b01 + 0b1110")));
+		assertTrue(isIntegerType(inferType("intVar + 0B101010")));
 		assertTrue(isIntegerType(inferType("intVar + 2")));
 		assertTrue(isRealType(inferType("1.1 + 2")));
 		assertTrue(isRealType(inferType("2 + 1.0")));
@@ -86,6 +90,9 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("0x0F - 2")));
 		assertTrue(isIntegerType(inferType("0x0F - 0x0F")));
 		assertTrue(isIntegerType(inferType("0x0F- intVar")));
+		assertTrue(isIntegerType(inferType("1 - 0b11")));
+		assertTrue(isIntegerType(inferType("0b01 - 0b1110")));
+		assertTrue(isIntegerType(inferType("intVar - 0B101010")));
 		assertTrue(isIntegerType(inferType("intVar - 2")));
 		assertTrue(isRealType(inferType("1.0 - 2")));
 		assertTrue(isRealType(inferType("2 - 1.0")));
@@ -139,6 +146,8 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("1 * 2")));
 		assertTrue(isIntegerType(inferType("1 * 0x0F")));
 		assertTrue(isIntegerType(inferType("0x0F * intVar")));
+		assertTrue(isIntegerType(inferType("1 * 0B11")));
+		assertTrue(isIntegerType(inferType("0b01101 * intVar")));
 		// real
 		assertTrue(isRealType(inferType("intVar * realVar")));
 		assertTrue(isRealType(inferType("1.0 * 2")));
@@ -152,6 +161,9 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("1 / 0x0F")));
 		assertTrue(isIntegerType(inferType("0x0F / 0x0F")));
 		assertTrue(isIntegerType(inferType("intVar / 0x0F")));
+		assertTrue(isIntegerType(inferType("1 / 0b01")));
+		assertTrue(isIntegerType(inferType("0x0F / 0b10")));
+		assertTrue(isIntegerType(inferType("intVar / 0b011")));
 		// real
 		assertTrue(isRealType(inferType("1.0 / 2")));
 		assertTrue(isRealType(inferType("2 / 1.0")));
@@ -163,6 +175,10 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("1 % 0x0F")));
 		assertTrue(isIntegerType(inferType("0x0F % 0x0F")));
 		assertTrue(isIntegerType(inferType("intVar % 0x0F")));
+		assertTrue(isIntegerType(inferType("1 % 0b0001")));
+		assertTrue(isIntegerType(inferType("0x0F % 0b1")));
+		assertTrue(isIntegerType(inferType("intVar % 0b001")));
+		
 		// real
 		assertTrue(isRealType(inferType("1.0 % 2")));
 		assertTrue(isRealType(inferType("2 % 1.0")));
@@ -443,6 +459,8 @@ public class TypeInferrerTest extends AbstractTypeInferrerTest {
 		assertTrue(isIntegerType(inferType("intVar = 5 * 3")));
 		assertTrue(isIntegerType(inferType("intVar = 0x0F * 3")));
 		assertTrue(isIntegerType(inferType("intVar = intVar * 0x0F")));
+		assertTrue(isIntegerType(inferType("intVar = 0b01 * 3")));
+		assertTrue(isIntegerType(inferType("intVar = intVar * 0b01111")));
 		assertTrue(isIntegerType(inferType("ABC.intVar = 42")));
 		// boolean
 		assertTrue(isBooleanType(inferType("boolVar = true || false")));

+ 13 - 0
test-plugins/org.yakindu.sct.simulation.core.sexec.test/src/org/yakindu/sct/model/sexec/interpreter/test/STextInterpreterTest.java

@@ -60,6 +60,12 @@ public class STextInterpreterTest extends AbstractSTextTest {
 		executeWithDefaultScope("intVar = 0xFF");
 		assertEquals(0xFFL, getIntValue());
 	}
+	
+	@Test
+	public void testBinaryVariableAssignment() {
+		executeWithDefaultScope("intVar = 0b11011");
+		assertEquals(0b11011L, getIntValue());
+	}
 
 	@Test
 	public void testBoolTrueVariableAssignment() {
@@ -127,6 +133,13 @@ public class STextInterpreterTest extends AbstractSTextTest {
 		assertEquals(0x0FF0L, getContext().getVariable("intVar").getValue());
 
 	}
+	
+	@Test
+	public void testBitwiseXorBinary() {
+		executeWithDefaultScope("intVar = 0b11011 ^ 0b0011");
+		assertEquals(24L, getContext().getVariable("intVar").getValue());
+
+	}
 
 	@Test
 	public void testBitwiseOr() {