From 68a2ebd34fc94488e89ffb82b359ec6e7e152ae9 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 8 Jul 2021 00:14:31 -0700 Subject: Restructure project to make room for clox --- src/com/craftinginterpreters/lox/Environment.java | 63 ----------------------- 1 file changed, 63 deletions(-) delete mode 100644 src/com/craftinginterpreters/lox/Environment.java (limited to 'src/com/craftinginterpreters/lox/Environment.java') 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 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); - } -} -- cgit v1.2.3-54-g00ecf