aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-07 15:54:07 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-07 15:54:07 +0000
commitf7a7bfd4764f2787e022fc0a9dd8eb57c151e90d (patch)
tree8a164d4c1a4803c367c0ef4244a7689162474390 /src/main/java/org/zwobble/couscous/backends/python/ast
parent5579d7b84fbfbaecb953d0a7a720eafe521f8bc7 (diff)
Add if-statement node
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/PythonIfStatementNode.java53
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java2
2 files changed, 55 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/ast/PythonIfStatementNode.java b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonIfStatementNode.java
new file mode 100644
index 0000000..313f722
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/python/ast/PythonIfStatementNode.java
@@ -0,0 +1,53 @@
+package org.zwobble.couscous.backends.python.ast;
+
+import java.util.List;
+
+import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor;
+
+public class PythonIfStatementNode implements PythonStatementNode {
+ public static PythonIfStatementNode pythonIfStatement(
+ PythonExpressionNode condition,
+ List<PythonStatementNode> trueBranch,
+ List<PythonStatementNode> falseBranch) {
+ return new PythonIfStatementNode(
+ condition,
+ new PythonBlock(trueBranch),
+ new PythonBlock(falseBranch));
+ }
+
+ private final PythonExpressionNode condition;
+ private final PythonBlock trueBranch;
+ private final PythonBlock falseBranch;
+
+ private PythonIfStatementNode(
+ PythonExpressionNode condition,
+ PythonBlock trueBranch,
+ PythonBlock falseBranch) {
+ this.condition = condition;
+ this.trueBranch = trueBranch;
+ this.falseBranch = falseBranch;
+ }
+
+ public PythonExpressionNode getCondition() {
+ return condition;
+ }
+
+ public PythonBlock getTrueBranch() {
+ return trueBranch;
+ }
+
+ public PythonBlock getFalseBranch() {
+ return falseBranch;
+ }
+
+ @Override
+ public String toString() {
+ return "PythonIfStatementNode(condition=" + condition + ", trueBranch="
+ + trueBranch + ", falseBranch=" + falseBranch + ")";
+ }
+
+ @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 a1ed7d5..fb8fa71 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
@@ -9,6 +9,7 @@ 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;
@@ -36,6 +37,7 @@ public interface PythonNodeVisitor {
void visit(PythonFunctionDefinitionNode functionDefinition);
void visit(PythonAssignmentNode assignment);
void visit(PythonImportNode importNode);
+ void visit(PythonIfStatementNode ifStatement);
void visit(PythonModuleNode module);