Browse Source

Added support for logical not interpretation

terfloth@itemis.de 14 years ago
parent
commit
3f97a363ae

+ 11 - 0
plugins/org.yakindu.sct.simulation.runtime/src/org/yakindu/sct/simulation/runtime/stext/builder/STextBuilder.java

@@ -27,6 +27,7 @@ import org.yakindu.sct.model.stext.stext.VariableDefinition;
 import org.yakindu.sct.simulation.runtime.stext.Assign;
 import org.yakindu.sct.simulation.runtime.stext.BinaryOperation;
 import org.yakindu.sct.simulation.runtime.stext.Constant;
+import org.yakindu.sct.simulation.runtime.stext.CoreFunction;
 import org.yakindu.sct.simulation.runtime.stext.Function;
 import org.yakindu.sct.simulation.runtime.stext.FunctionMethod;
 import org.yakindu.sct.simulation.runtime.stext.ProcedureCall;
@@ -245,6 +246,16 @@ public class STextBuilder extends Function {
 		return buildBinaryOperation(obj);
 	}
 
+	@FunctionMethod("build")
+	public RTExpression buildLogicalNotExpression(EObject obj) {
+		RTExpression operand = buildRefExpression(obj, "operand");
+
+		if (operand != null)
+			return new UnaryOperation(CoreFunction.NOT, operand);
+
+		return operand;
+	}
+
 	@FunctionMethod("build")
 	public RTExpression buildShiftExpression(EObject obj) {
 		return buildBinaryOperation(obj);

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

@@ -210,7 +210,7 @@ public class STextBuilderTest {
 
 	@Test
 	public void testHexVariableAssignment() {
-		RTStatement stmt = parseReactionEffect("a = 0xFF");
+		RTStatement stmt = parseReactionEffect("a = 0xFF;");
 		scope.addVariable(new RTVariable("a"));
 		stmt.execute(scope);