diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-14 16:52:37 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-14 16:52:37 +0000 |
| commit | 5338a361c6fd8c42e8bd47a637c21c128b122418 (patch) | |
| tree | cb78e617f497af5cc2d66215ac285ecc002f37b1 /src/main/java/org/zwobble/couscous/backends/python/ast | |
| parent | 4708229e8cfc4c8909c720395efb680c8775edea (diff) | |
Implement while loops in backends
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/ast')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/ast/PythonWhileNode.java | 34 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java | 20 |
2 files changed, 36 insertions, 18 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonWhileNode.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonWhileNode.java new file mode 100644 index 0000000..fa373e6 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonWhileNode.java @@ -0,0 +1,34 @@ +package org.zwobble.couscous.backends.python.ast; + +import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor; + +import java.util.List; + +public class PythonWhileNode implements PythonStatementNode { + public static PythonWhileNode pythonWhile( + PythonExpressionNode condition, + List<PythonStatementNode> body) { + return new PythonWhileNode(condition, new PythonBlock(body)); + } + + private final PythonExpressionNode condition; + private final PythonBlock body; + + private PythonWhileNode(PythonExpressionNode condition, PythonBlock body) { + this.condition = condition; + this.body = body; + } + + public PythonExpressionNode getCondition() { + return condition; + } + + public PythonBlock getBody() { + return body; + } + + @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 fb8fa71..8f04787 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,23 +1,6 @@ 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.PythonBinaryOperation; -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; -import org.zwobble.couscous.backends.python.ast.PythonGetSliceNode; -import org.zwobble.couscous.backends.python.ast.PythonIfStatementNode; -import org.zwobble.couscous.backends.python.ast.PythonImportNode; -import org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode; -import org.zwobble.couscous.backends.python.ast.PythonModuleNode; -import org.zwobble.couscous.backends.python.ast.PythonNotNode; -import org.zwobble.couscous.backends.python.ast.PythonPassNode; -import org.zwobble.couscous.backends.python.ast.PythonReturnNode; -import org.zwobble.couscous.backends.python.ast.PythonStringLiteralNode; -import org.zwobble.couscous.backends.python.ast.PythonVariableReferenceNode; +import org.zwobble.couscous.backends.python.ast.*; public interface PythonNodeVisitor { void visit(PythonIntegerLiteralNode integerLiteral); @@ -38,6 +21,7 @@ public interface PythonNodeVisitor { void visit(PythonAssignmentNode assignment); void visit(PythonImportNode importNode); void visit(PythonIfStatementNode ifStatement); + void visit(PythonWhileNode whileLoop); void visit(PythonModuleNode module); |
