aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/MethodCallNode.java9
-rw-r--r--src/main/java/org/zwobble/couscous/ast/Operator.java3
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaOperators.java6
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;