aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/Environment.java
diff options
context:
space:
mode:
authorGravatar Tom Willemse2021-07-08 00:14:31 -0700
committerGravatar Tom Willemse2021-07-08 02:25:13 -0700
commit68a2ebd34fc94488e89ffb82b359ec6e7e152ae9 (patch)
tree0dbbe26aff8fc38805b4b3780ae7842c433b9522 /src/com/craftinginterpreters/lox/Environment.java
parent62bd0f83dc909547a69abb8b0aed40cf098b4c95 (diff)
downloadcrafting-interpreters-68a2ebd34fc94488e89ffb82b359ec6e7e152ae9.tar.gz
crafting-interpreters-68a2ebd34fc94488e89ffb82b359ec6e7e152ae9.zip
Restructure project to make room for clox
Diffstat (limited to 'src/com/craftinginterpreters/lox/Environment.java')
-rw-r--r--src/com/craftinginterpreters/lox/Environment.java63
1 files changed, 0 insertions, 63 deletions
diff --git a/src/com/craftinginterpreters/lox/Environment.java b/src/com/craftinginterpreters/lox/Environment.java
deleted file mode 100644
index 407b9b3..0000000
--- a/src/com/craftinginterpreters/lox/Environment.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.craftinginterpreters.lox;
-
-import java.util.HashMap;
-import java.util.Map;
-
-class Environment {
- final Environment enclosing;
- private final Map<String, Object> values = new HashMap<>();
-
- Environment() {
- enclosing = null;
- }
-
- Environment(Environment enclosing) {
- this.enclosing = enclosing;
- }
-
- Object get(Token name) {
- if (values.containsKey(name.lexeme)) {
- return values.get(name.lexeme);
- }
-
- if (enclosing != null)
- return enclosing.get(name);
-
- throw new RuntimeError(name, "Undefined variable '" + name.lexeme + "'.");
- }
-
- void assign(Token name, Object value) {
- if (values.containsKey(name.lexeme)) {
- values.put(name.lexeme, value);
- return;
- }
-
- if (enclosing != null) {
- enclosing.assign(name, value);
- return;
- }
-
- throw new RuntimeError(name, "Undefined variable '" + name.lexeme + "'.");
- }
-
- void define(String name, Object value) {
- values.put(name, value);
- }
-
- Environment ancestor(int distance) {
- Environment environment = this;
- for (int i = 0; i < distance; i++) {
- environment = environment.enclosing;
- }
-
- return environment;
- }
-
- Object getAt(int distance, String name) {
- return ancestor(distance).values.get(name);
- }
-
- void assignAt(int distance, Token name, Object value) {
- ancestor(distance).values.put(name.lexeme, value);
- }
-}