summaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/Environment.java
diff options
context:
space:
mode:
authorGravatar Tom Willemse2020-11-18 23:30:46 -0800
committerGravatar Tom Willemse2020-11-18 23:30:46 -0800
commit899ecea236288b5ebc7795c204fdad59b3276002 (patch)
tree00d8cdfa98f265455060279e9c98c10279baf9a6 /src/com/craftinginterpreters/lox/Environment.java
parent8019f6aa414f5126ebbcd3afc44bcebc16855d5f (diff)
downloadcrafting-interpreters-899ecea236288b5ebc7795c204fdad59b3276002.tar.gz
crafting-interpreters-899ecea236288b5ebc7795c204fdad59b3276002.zip
Chapter 8: Add variable declarations
Diffstat (limited to 'src/com/craftinginterpreters/lox/Environment.java')
-rw-r--r--src/com/craftinginterpreters/lox/Environment.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/com/craftinginterpreters/lox/Environment.java b/src/com/craftinginterpreters/lox/Environment.java
new file mode 100644
index 0000000..634659b
--- /dev/null
+++ b/src/com/craftinginterpreters/lox/Environment.java
@@ -0,0 +1,20 @@
+package com.craftinginterpreters.lox;
+
+import java.util.HashMap;
+import java.util.Map;
+
+class Environment {
+ private final Map<String, Object> values = new HashMap<>();
+
+ Object get(Token name) {
+ if (values.containsKey(name.lexeme)) {
+ return values.get(name.lexeme);
+ }
+
+ throw new RuntimeError(name, "Undefined variable '" + name.lexeme + "'.");
+ }
+
+ void define(String name, Object value) {
+ values.put(name, value);
+ }
+}