From d764958a284de666462796c9195fdb00d521d78a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 5 Oct 2015 13:00:08 +0100 Subject: Add Python boolean values --- .../couscous/backends/python/PythonSerializer.java | 7 +++++++ .../python/ast/PythonBooleanLiteralNode.java | 22 ++++++++++++++++++++++ .../python/ast/visitors/PythonNodeVisitor.java | 2 ++ 3 files changed, 31 insertions(+) create mode 100644 src/main/java/org/zwobble/couscous/backends/python/ast/PythonBooleanLiteralNode.java (limited to 'src/main/java/org') 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 e5a13e5..b6adb80 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java @@ -1,6 +1,7 @@ package org.zwobble.couscous.backends.python; 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.PythonFunctionDefinitionNode; import org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode; @@ -44,6 +45,12 @@ public class PythonSerializer implements PythonNodeVisitor { return null; } + @Override + public Void visit(PythonBooleanLiteralNode booleanLiteral) { + writer.writeKeyword(booleanLiteral.getValue() ? "True" : "False"); + return null; + } + @Override public Void visit(PythonReturnNode pythonReturn) { writer.startStatement(); diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBooleanLiteralNode.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBooleanLiteralNode.java new file mode 100644 index 0000000..43caf0a --- /dev/null +++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonBooleanLiteralNode.java @@ -0,0 +1,22 @@ +package org.zwobble.couscous.backends.python.ast; + +import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Value; + +@Value(staticConstructor="pythonBooleanLiteral") +public class PythonBooleanLiteralNode implements PythonExpressionNode { + @Getter(value = AccessLevel.NONE) + boolean value; + + public boolean getValue() { + return value; + } + + @Override + public T accept(PythonNodeVisitor visitor) { + return 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 0210df6..42f97a0 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,5 +1,6 @@ package org.zwobble.couscous.backends.python.ast.visitors; +import org.zwobble.couscous.backends.python.ast.PythonBooleanLiteralNode; import org.zwobble.couscous.backends.python.ast.PythonClassNode; import org.zwobble.couscous.backends.python.ast.PythonFunctionDefinitionNode; import org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode; @@ -11,6 +12,7 @@ import org.zwobble.couscous.backends.python.ast.PythonStringLiteralNode; public interface PythonNodeVisitor { T visit(PythonIntegerLiteralNode integerLiteral); T visit(PythonStringLiteralNode stringLiteral); + T visit(PythonBooleanLiteralNode booleanLiteral); T visit(PythonReturnNode pythonReturn); T visit(PythonPassNode pass); -- cgit v1.2.3