aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-04 20:57:00 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-04 20:57:00 +0100
commitcdf51cdb9b3f8cef5896315496f348d9f7220903 (patch)
tree6dc623930652236499980f46da75547797511045 /src/main/java/org/zwobble/couscous/interpreter
parent6e45abd92526df9fce5d263eefed7fcaa400a86d (diff)
Add separate notion of VariableDeclaration
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Environment.java7
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java9
2 files changed, 9 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Environment.java b/src/main/java/org/zwobble/couscous/interpreter/Environment.java
index 21cfe04..6838ba5 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Environment.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Environment.java
@@ -4,6 +4,7 @@ import java.util.Map;
import java.util.Optional;
import org.zwobble.couscous.Project;
+import org.zwobble.couscous.ast.VariableDeclaration;
import org.zwobble.couscous.ast.VariableNode;
import org.zwobble.couscous.values.ConcreteType;
import org.zwobble.couscous.values.InterpreterValue;
@@ -20,7 +21,7 @@ public class Environment {
private final Project project;
private final Map<Integer, VariableEntry> stackFrame;
- public Environment(Project project, Map<VariableNode, Optional<InterpreterValue>> stackFrame) {
+ public Environment(Project project, Map<VariableDeclaration, Optional<InterpreterValue>> stackFrame) {
this.project = project;
this.stackFrame = stackFrame.entrySet()
.stream()
@@ -42,7 +43,7 @@ public class Environment {
}
public void put(VariableNode variable, InterpreterValue value) {
- put(variable.getId(), value);
+ put(variable.getDeclaration().getId(), value);
}
public ConcreteType<?> findClass(String className) {
@@ -50,7 +51,7 @@ public class Environment {
return project.findClass(className);
}
- public Environment withStackFrame(Map<VariableNode, Optional<InterpreterValue>> stackFrame) {
+ public Environment withStackFrame(Map<VariableDeclaration, Optional<InterpreterValue>> stackFrame) {
return new Environment(project, stackFrame);
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java b/src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java
index 658bf42..3b163f3 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java
@@ -2,6 +2,7 @@ package org.zwobble.couscous.interpreter;
import java.util.Map;
+import org.zwobble.couscous.ast.VariableDeclaration;
import org.zwobble.couscous.ast.VariableNode;
import org.zwobble.couscous.values.InterpreterValue;
@@ -10,20 +11,20 @@ import com.google.common.collect.ImmutableMap;
import java.util.Optional;
public class StackFrameBuilder {
- private final ImmutableMap.Builder<VariableNode, Optional<InterpreterValue>> variables
+ private final ImmutableMap.Builder<VariableDeclaration, Optional<InterpreterValue>> variables
= ImmutableMap.builder();
public StackFrameBuilder declare(VariableNode variable, InterpreterValue value) {
- variables.put(variable, Optional.of(value));
+ variables.put(variable.getDeclaration(), Optional.of(value));
return this;
}
public StackFrameBuilder declare(VariableNode variable) {
- variables.put(variable, Optional.empty());
+ variables.put(variable.getDeclaration(), Optional.empty());
return this;
}
- public Map<VariableNode, Optional<InterpreterValue>> build() {
+ public Map<VariableDeclaration, Optional<InterpreterValue>> build() {
return variables.build();
}
}