aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-07-15 11:57:28 +0100
committerMichael Williamson <mike@zwobble.org>2016-07-15 11:57:28 +0100
commit15c67a851605262ef165279d99964ce8a53a45f5 (patch)
tree80927551aede98f3bdbfc3acc40660916f90ffe0 /src/main/java/org/zwobble/couscous/backends/python
parent0970f5a5074da34fffaea70f3b42d012edb501c5 (diff)
Remove StatementNodeMapper
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
index 993b6aa..c520e2a 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
@@ -8,7 +8,6 @@ import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.structure.NodeStructure;
import org.zwobble.couscous.ast.visitors.DynamicNodeMapper;
import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
-import org.zwobble.couscous.ast.visitors.StatementNodeMapper;
import org.zwobble.couscous.backends.naming.Names;
import org.zwobble.couscous.backends.python.ast.*;
import org.zwobble.couscous.types.ScalarType;
@@ -240,21 +239,16 @@ public class PythonCodeGenerator {
}
private static PythonStatementNode generateStatement(StatementNode statement) {
- return statement.accept(new StatementGenerator());
+ return StatementGenerator.VISITOR.apply(statement);
}
- private static class StatementGenerator implements StatementNodeMapper<PythonStatementNode> {
- @Override
+ public static class StatementGenerator {
+ private static final Function<Node, PythonStatementNode> VISITOR = DynamicNodeMapper.instantiate(new StatementGenerator(), "visit");
+
public PythonStatementNode visit(ReturnNode returnNode) {
return pythonReturn(generateExpression(returnNode.getValue()));
}
- @Override
- public PythonStatementNode visit(ThrowNode throwNode) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public PythonStatementNode visit(ExpressionStatementNode expressionStatement) {
if (expressionStatement.getExpression() instanceof AssignmentNode) {
AssignmentNode assignment = (AssignmentNode)expressionStatement.getExpression();
@@ -264,12 +258,10 @@ public class PythonCodeGenerator {
}
}
- @Override
public PythonStatementNode visit(LocalVariableDeclarationNode declaration) {
return pythonAssignment(pythonVariableReference(declaration.getDeclaration().getName()), generateExpression(declaration.getInitialValue()));
}
- @Override
public PythonStatementNode visit(IfStatementNode ifStatement) {
return pythonIfStatement(
generateExpression(ifStatement.getCondition()),
@@ -277,17 +269,11 @@ public class PythonCodeGenerator {
generateStatements(ifStatement.getFalseBranch()));
}
- @Override
public PythonStatementNode visit(WhileNode whileLoop) {
return pythonWhile(
generateExpression(whileLoop.getCondition()),
generateStatements(whileLoop.getBody()));
}
-
- @Override
- public PythonStatementNode visit(TryNode tryStatement) {
- throw new UnsupportedOperationException();
- }
}
public static PythonExpressionNode generateExpression(ExpressionNode expression) {