diff options
Diffstat (limited to 'src/main/java')
3 files changed, 16 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java index 076ac9e..efeee93 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java @@ -8,7 +8,6 @@ import java.util.Collections; import java.util.List; import java.util.function.Function; -import static java.util.Arrays.asList; import static org.zwobble.couscous.util.ExtraLists.eagerMap; import static org.zwobble.couscous.util.ExtraLists.list; @@ -21,6 +20,14 @@ public class MethodCallNode implements ExpressionNode { } } + public static ExpressionNode booleanAnd(ExpressionNode left, ExpressionNode right) { + return booleanOperation(Operator.BOOLEAN_AND.getMethodName(), left, right); + } + + public static ExpressionNode booleanOr(ExpressionNode left, ExpressionNode right) { + return booleanOperation(Operator.BOOLEAN_OR.getMethodName(), left, right); + } + public static ExpressionNode integerAdd(ExpressionNode left, ExpressionNode right) { return integerOperation(Operator.ADD.getMethodName(), left, right); } diff --git a/src/main/java/org/zwobble/couscous/ast/Operator.java b/src/main/java/org/zwobble/couscous/ast/Operator.java index 549224c..a215138 100644 --- a/src/main/java/org/zwobble/couscous/ast/Operator.java +++ b/src/main/java/org/zwobble/couscous/ast/Operator.java @@ -1,6 +1,9 @@ package org.zwobble.couscous.ast; public enum Operator { + BOOLEAN_AND("and", true), + BOOLEAN_OR("or", true), + ADD("add", false), SUBTRACT("subtract", false), MULTIPLY("multiply", false), 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 f3a18f9..824c134 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java @@ -17,7 +17,11 @@ public class JavaOperators { } static Operator readOperator(InfixExpression.Operator operator) { - if (operator == InfixExpression.Operator.PLUS) { + if (operator == InfixExpression.Operator.CONDITIONAL_AND) { + return Operator.BOOLEAN_AND; + } else if (operator == InfixExpression.Operator.CONDITIONAL_OR) { + return Operator.BOOLEAN_OR; + } else if (operator == InfixExpression.Operator.PLUS) { return Operator.ADD; } else if (operator == InfixExpression.Operator.MINUS) { return Operator.SUBTRACT; |
