aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
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/PythonSerializer.java
parent04b731b11c9ed171fb080b6bc8029f886fc6a052 (diff)
Implement attribute access and calls in Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
index 7eaf2fb..1e10315 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
@@ -1,8 +1,10 @@
package org.zwobble.couscous.backends.python;
import org.zwobble.couscous.backends.python.ast.PythonAssignmentNode;
+import org.zwobble.couscous.backends.python.ast.PythonAttributeAccessNode;
import org.zwobble.couscous.backends.python.ast.PythonBlock;
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.PythonExpressionNode;
@@ -72,6 +74,28 @@ public class PythonSerializer implements PythonNodeVisitor {
}
@Override
+ public void visit(PythonAttributeAccessNode attributeAccess) {
+ writeParenthesised(attributeAccess.getLeft());
+ writer.writeSymbol(".");
+ writer.writeIdentifier(attributeAccess.getAttributeName());
+ }
+
+ @Override
+ public void visit(PythonCallNode call) {
+ writeParenthesised(call.getCallee());
+ writer.writeSymbol("(");
+ if (!call.getArguments().isEmpty()) {
+ write(call.getArguments().get(0));
+ for (val argumentName : skip(call.getArguments(), 1)) {
+ writer.writeSymbol(",");
+ writer.writeSpace();
+ write(argumentName);
+ }
+ }
+ writer.writeSymbol(")");
+ }
+
+ @Override
public void visit(PythonReturnNode pythonReturn) {
writer.writeStatement(() -> {
writer.writeKeyword("return");