aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-29 20:32:35 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-29 20:32:35 +0100
commit4e031ada69e27d9aa518ef00ebf532328ba23e79 (patch)
tree193146bf3810dc0fea20fc53854bd5b306dfb1bd /src/main/java/org/zwobble/couscous/interpreter/Interpreter.java
parentfec7b703498ff1ed0b0d31ed602e0ba9459985f1 (diff)
Create separate evaluator tests
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Interpreter.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Interpreter.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java
index d68f4df..bc82fee 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Interpreter.java
@@ -13,6 +13,7 @@ import org.zwobble.couscous.values.InterpreterValue;
import static com.google.common.collect.Iterables.find;
import static java.util.stream.Collectors.toMap;
+import static org.zwobble.couscous.interpreter.Evaluator.eval;
import static org.zwobble.couscous.values.UnitValue.UNIT;
import lombok.val;
@@ -31,7 +32,7 @@ public class Interpreter {
val environment = buildEnvironment(method, arguments);
for (val statement : method.getBody()) {
- val result = statement.accept(new Executor(new Evaluator(environment)));
+ val result = statement.accept(new Executor(environment));
if (result.isPresent()) {
return result.get();
}
@@ -56,20 +57,20 @@ public class Interpreter {
}
private class Executor implements StatementNodeVisitor<Optional<InterpreterValue>> {
- private Evaluator evaluator;
+ private Environment environment;
- public Executor(Evaluator evaluator) {
- this.evaluator = evaluator;
+ public Executor(Environment environment) {
+ this.environment = environment;
}
@Override
public Optional<InterpreterValue> visit(ReturnNode returnNode) {
- return Optional.of(evaluator.eval(returnNode.getValue()));
+ return Optional.of(eval(environment, returnNode.getValue()));
}
@Override
public Optional<InterpreterValue> visit(ExpressionStatementNode expressionStatement) {
- evaluator.eval(expressionStatement.getExpression());
+ eval(environment, expressionStatement.getExpression());
return Optional.empty();
}
}