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:21:55 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-05 17:21:55 +0100
commit1448733a03e965d5cb9261a3519370ff5b34122d (patch)
treeb79a987f1f1591e431393ba4eee45a37310820a1 /src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
parent1c2195e727aaed3afe604eb602b105d7fa1f917d (diff)
Support ternary conditionals 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.java22
1 files changed, 22 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 bc5fb19..728b71a 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
@@ -4,6 +4,8 @@ import org.zwobble.couscous.backends.python.ast.PythonAssignmentNode;
import org.zwobble.couscous.backends.python.ast.PythonBlock;
import org.zwobble.couscous.backends.python.ast.PythonBooleanLiteralNode;
import org.zwobble.couscous.backends.python.ast.PythonClassNode;
+import org.zwobble.couscous.backends.python.ast.PythonConditionalExpressionNode;
+import org.zwobble.couscous.backends.python.ast.PythonExpressionNode;
import org.zwobble.couscous.backends.python.ast.PythonFunctionDefinitionNode;
import org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode;
import org.zwobble.couscous.backends.python.ast.PythonModuleNode;
@@ -62,6 +64,20 @@ public class PythonSerializer implements PythonNodeVisitor<Void> {
}
@Override
+ public Void visit(PythonConditionalExpressionNode conditional) {
+ writeParenthesised(conditional.getTrueValue());
+ writer.writeSpace();
+ writer.writeKeyword("if");
+ writer.writeSpace();
+ writeParenthesised(conditional.getCondition());
+ writer.writeSpace();
+ writer.writeKeyword("else");
+ writer.writeSpace();
+ writeParenthesised(conditional.getFalseValue());
+ return null;
+ }
+
+ @Override
public Void visit(PythonReturnNode pythonReturn) {
writer.startStatement();
writer.writeKeyword("return");
@@ -119,6 +135,12 @@ public class PythonSerializer implements PythonNodeVisitor<Void> {
return null;
}
+ private void writeParenthesised(PythonExpressionNode expression) {
+ writer.writeSymbol("(");
+ write(expression);
+ writer.writeSymbol(")");
+ }
+
private void writeArgumentNames(PythonFunctionDefinitionNode functionDefinition) {
if (!functionDefinition.getArgumentNames().isEmpty()) {
writer.writeIdentifier(functionDefinition.getArgumentNames().get(0));