aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-05 17:59:27 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-05 17:59:27 +0100
commit9e850b3a09ceebf6140e77982b45abab0c57ad6c (patch)
treebca614bd4e28cb495aee7acd463ee1c822b61725 /src/main/java/org/zwobble/couscous/backends/python/ast
parent04b731b11c9ed171fb080b6bc8029f886fc6a052 (diff)
Implement attribute access and calls in Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/PythonAttributeAccessNode.java16
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/PythonCallNode.java19
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java4
3 files changed, 39 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonAttributeAccessNode.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonAttributeAccessNode.java
new file mode 100644
index 0000000..ccd795f
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonAttributeAccessNode.java
@@ -0,0 +1,16 @@
+package org.zwobble.couscous.backends.python.ast;
+
+import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor;
+
+import lombok.Value;
+
+@Value(staticConstructor="pythonAttributeAccess")
+public class PythonAttributeAccessNode implements PythonExpressionNode {
+ PythonExpressionNode left;
+ String attributeName;
+
+ @Override
+ public void accept(PythonNodeVisitor visitor) {
+ visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonCallNode.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonCallNode.java
new file mode 100644
index 0000000..92c8b20
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonCallNode.java
@@ -0,0 +1,19 @@
+package org.zwobble.couscous.backends.python.ast;
+
+import java.util.List;
+
+import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor;
+
+import lombok.Value;
+
+@Value(staticConstructor="pythonCall")
+public class PythonCallNode implements PythonExpressionNode {
+ PythonExpressionNode callee;
+ List<PythonExpressionNode> arguments;
+
+
+ @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 0cd43ae..2e38d3b 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
@@ -1,7 +1,9 @@
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.PythonBooleanLiteralNode;
+import org.zwobble.couscous.backends.python.ast.PythonCallNode;
import org.zwobble.couscous.backends.python.ast.PythonClassNode;
import org.zwobble.couscous.backends.python.ast.PythonConditionalExpressionNode;
import org.zwobble.couscous.backends.python.ast.PythonFunctionDefinitionNode;
@@ -18,6 +20,8 @@ public interface PythonNodeVisitor {
void visit(PythonBooleanLiteralNode booleanLiteral);
void visit(PythonVariableReferenceNode reference);
void visit(PythonConditionalExpressionNode conditional);
+ void visit(PythonAttributeAccessNode attributeAccess);
+ void visit(PythonCallNode call);
void visit(PythonReturnNode pythonReturn);
void visit(PythonPassNode pass);