diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-04 20:57:00 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-04 20:57:00 +0100 |
| commit | cdf51cdb9b3f8cef5896315496f348d9f7220903 (patch) | |
| tree | 6dc623930652236499980f46da75547797511045 /src/main/java/org/zwobble/couscous/interpreter | |
| parent | 6e45abd92526df9fce5d263eefed7fcaa400a86d (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.java | 7 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/StackFrameBuilder.java | 9 |
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(); } } |
