aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-14 16:52:37 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-14 16:52:37 +0000
commit5338a361c6fd8c42e8bd47a637c21c128b122418 (patch)
treecb78e617f497af5cc2d66215ac285ecc002f37b1 /src/main/java/org/zwobble/couscous/backends/python/ast
parent4708229e8cfc4c8909c720395efb680c8775edea (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.java34
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java20
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);