diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-05 17:21:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-05 17:21:55 +0100 |
| commit | 1448733a03e965d5cb9261a3519370ff5b34122d (patch) | |
| tree | b79a987f1f1591e431393ba4eee45a37310820a1 /src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java | |
| parent | 1c2195e727aaed3afe604eb602b105d7fa1f917d (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.java | 22 |
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)); |
