diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-07 15:54:07 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-07 15:54:07 +0000 |
| commit | f7a7bfd4764f2787e022fc0a9dd8eb57c151e90d (patch) | |
| tree | 8a164d4c1a4803c367c0ef4244a7689162474390 /src/main/java/org/zwobble/couscous/backends/python/ast | |
| parent | 5579d7b84fbfbaecb953d0a7a720eafe521f8bc7 (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.java | 53 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/ast/visitors/PythonNodeVisitor.java | 2 |
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); |
