aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-31 16:07:19 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-31 16:07:19 +0000
commitad4903f04c757779b2e9a875298ef8418cb140b4 (patch)
tree49c28509587633d484e6fbcdd8537e15e854a567 /src/main/java/org/zwobble/couscous/backends/python/ast
parent4e13a3a626f630eb1031f32b1c3405cbf40952bc (diff)
Support equality on reference types
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/PythonBinaryOperation.java39
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java2
2 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBinaryOperation.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBinaryOperation.java
new file mode 100644
index 0000000..1fc87c3
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBinaryOperation.java
@@ -0,0 +1,39 @@
+package org.zwobble.couscous.backends.python.ast;
+
+import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor;
+
+public class PythonBinaryOperation implements PythonExpressionNode {
+ public static PythonExpressionNode pythonIs(PythonExpressionNode left, PythonExpressionNode right) {
+ return new PythonBinaryOperation("is", left, right);
+ }
+
+ private final String operator;
+ private final PythonExpressionNode left;
+ private final PythonExpressionNode right;
+
+ public PythonBinaryOperation(
+ String operator,
+ PythonExpressionNode left,
+ PythonExpressionNode right) {
+ this.operator = operator;
+ this.left = left;
+ this.right = right;
+ }
+
+ public String getOperator() {
+ return operator;
+ }
+
+ public PythonExpressionNode getLeft() {
+ return left;
+ }
+
+ public PythonExpressionNode getRight() {
+ return right;
+ }
+
+ @Override
+ public void accept(PythonNodeVisitor visitor) {
+ visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java b/src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java
index 59a1fe9..a1ed7d5 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java
@@ -2,6 +2,7 @@ package org.zwobble.couscous.backends.python.ast.visitors;
import org.zwobble.couscous.backends.python.ast.PythonAssignmentNode;
import org.zwobble.couscous.backends.python.ast.PythonAttributeAccessNode;
+import org.zwobble.couscous.backends.python.ast.PythonBinaryOperation;
import org.zwobble.couscous.backends.python.ast.PythonBooleanLiteralNode;
import org.zwobble.couscous.backends.python.ast.PythonCallNode;
import org.zwobble.couscous.backends.python.ast.PythonClassNode;
@@ -27,6 +28,7 @@ public interface PythonNodeVisitor {
void visit(PythonCallNode call);
void visit(PythonGetSliceNode getSlice);
void visit(PythonNotNode notOperation);
+ void visit(PythonBinaryOperation operation);
void visit(PythonReturnNode pythonReturn);
void visit(PythonPassNode pass);