diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-15 13:26:38 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-15 13:26:38 +0000 |
| commit | b590542b4cb33e456a2d5e5922fbd68c391e681d (patch) | |
| tree | 85bfc1acf5bf09aef80094d5c7cfffb04b67ead8 /src/main/java/org | |
| parent | 44ef2b3f95091e96b1985410c494e3e8757fb427 (diff) | |
Add NOT_EQUALS operator
Diffstat (limited to 'src/main/java/org')
6 files changed, 12 insertions, 13 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java index 371ec2d..cce140f 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java @@ -48,7 +48,7 @@ public class MethodCallNode implements ExpressionNode { } public static ExpressionNode notEqual(ExpressionNode left, ExpressionNode right) { - return not(booleanOperation(Operator.EQUALS.getMethodName(), left, right)); + return booleanOperation(Operator.NOT_EQUALS.getMethodName(), left, right); } public static ExpressionNode greaterThan(ExpressionNode left, ExpressionNode right) { diff --git a/src/main/java/org/zwobble/couscous/ast/Operator.java b/src/main/java/org/zwobble/couscous/ast/Operator.java index de4df1b..549224c 100644 --- a/src/main/java/org/zwobble/couscous/ast/Operator.java +++ b/src/main/java/org/zwobble/couscous/ast/Operator.java @@ -8,6 +8,7 @@ public enum Operator { MOD("mod", false), EQUALS("equals", true), + NOT_EQUALS("notEquals", true), GREATER_THAN("greaterThan", true), GREATER_THAN_OR_EQUAL("greaterThanOrEqual", true), LESS_THAN("lessThan", true), diff --git a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java index db2cac0..47f3bb7 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java @@ -64,6 +64,7 @@ public class PrimitiveMethods { asList(receiver, arguments.get(0)))); addMethod(methods, Operator.EQUALS.getMethodName(), "__eq__"); + addMethod(methods, Operator.NOT_EQUALS.getMethodName(), "__ne__"); addMethod(methods, Operator.GREATER_THAN.getMethodName(), "__gt__"); addMethod(methods, Operator.GREATER_THAN_OR_EQUAL.getMethodName(), "__ge__"); addMethod(methods, Operator.LESS_THAN.getMethodName(), "__lt__"); diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java index 09d880f..f3a18f9 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java @@ -29,6 +29,8 @@ public class JavaOperators { return Operator.MOD; } else if (operator == InfixExpression.Operator.EQUALS) { return Operator.EQUALS; + } else if (operator == InfixExpression.Operator.NOT_EQUALS) { + return Operator.NOT_EQUALS; } else if (operator == InfixExpression.Operator.GREATER) { return Operator.GREATER_THAN; } else if (operator == InfixExpression.Operator.GREATER_EQUALS) { diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index 02d14c1..dee5430 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -329,18 +329,11 @@ public class JavaReader { private static ExpressionNode readInfixExpression(InfixExpression expression) { TypeName operandType = typeOf(expression.getLeftOperand()); if (operandType.equals(IntegerValue.REF)) { - if (expression.getOperator() == InfixExpression.Operator.NOT_EQUALS) { - return MethodCallNode.not(readOperation( - Operator.EQUALS, - expression.getLeftOperand(), - expression.getRightOperand())); - } else { - Operator operator = readOperator(expression.getOperator()); - return readOperation( - operator, - expression.getLeftOperand(), - expression.getRightOperand()); - } + Operator operator = readOperator(expression.getOperator()); + return readOperation( + operator, + expression.getLeftOperand(), + expression.getRightOperand()); } else { ExpressionNode left = readExpression(ObjectValues.OBJECT, expression.getLeftOperand()); ExpressionNode right = readExpression(ObjectValues.OBJECT, expression.getRightOperand()); diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java index dce3cab..bbcf9c0 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java @@ -26,6 +26,8 @@ public final class IntegerInterpreterValue implements InterpreterValue { infixReturningInteger((left, right) -> left % right)) .method(Operator.EQUALS.getMethodName(), asList(IntegerValue.REF), infixReturningBoolean((left, right) -> left == right)) + .method(Operator.NOT_EQUALS.getMethodName(), asList(IntegerValue.REF), + infixReturningBoolean((left, right) -> left != right)) .method(Operator.GREATER_THAN.getMethodName(), asList(IntegerValue.REF), infixReturningBoolean((left, right) -> left > right)) .method(Operator.GREATER_THAN_OR_EQUAL.getMethodName(), asList(IntegerValue.REF), |
