diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/Executor.java | 4 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/transforms/DesugarForToWhile.java | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Executor.java b/src/main/java/org/zwobble/couscous/interpreter/Executor.java index 0acb253..5e19761 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Executor.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Executor.java @@ -135,6 +135,10 @@ public class Executor { return Optional.empty(); } + public Optional<InterpreterValue> visit(StatementBlockNode block) { + return exec(block.getStatements()); + } + private Optional<InterpreterValue> exec(List<StatementNode> statements) { for (StatementNode statement : statements) { Optional<InterpreterValue> result = exec(environment, statement); diff --git a/src/main/java/org/zwobble/couscous/transforms/DesugarForToWhile.java b/src/main/java/org/zwobble/couscous/transforms/DesugarForToWhile.java index 6481c7a..68b961c 100644 --- a/src/main/java/org/zwobble/couscous/transforms/DesugarForToWhile.java +++ b/src/main/java/org/zwobble/couscous/transforms/DesugarForToWhile.java @@ -2,6 +2,7 @@ package org.zwobble.couscous.transforms; import org.zwobble.couscous.ast.ForNode; import org.zwobble.couscous.ast.NodeTypes; +import org.zwobble.couscous.ast.StatementBlockNode; import org.zwobble.couscous.ast.StatementNode; import org.zwobble.couscous.ast.visitors.NodeTransformer; @@ -13,6 +14,7 @@ import static org.zwobble.couscous.ast.WhileNode.whileLoop; import static org.zwobble.couscous.util.ExtraIterables.lazyMap; import static org.zwobble.couscous.util.ExtraLists.append; import static org.zwobble.couscous.util.ExtraLists.concat; +import static org.zwobble.couscous.util.ExtraLists.list; public class DesugarForToWhile { public static NodeTransformer transformer() { @@ -28,7 +30,7 @@ public class DesugarForToWhile { } public static List<StatementNode> desugar(ForNode forNode) { - return append( + List<StatementNode> statements = append( forNode.getInitializers(), whileLoop( forNode.getCondition(), @@ -38,5 +40,6 @@ public class DesugarForToWhile { ) ) ); + return list(new StatementBlockNode(statements)); } } |
