diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-07-15 11:57:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-07-15 11:57:28 +0100 |
| commit | 15c67a851605262ef165279d99964ce8a53a45f5 (patch) | |
| tree | 80927551aede98f3bdbfc3acc40660916f90ffe0 /src/main/java/org/zwobble/couscous/backends/python | |
| parent | 0970f5a5074da34fffaea70f3b42d012edb501c5 (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.java | 22 |
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) { |
