private object LookUpVariable(Token name, Expr expr) { if (locals.TryGetValue(expr, out int distance)) { return(environment.GetAt(distance, name.lexeme)); } else { return(globals.Get(name)); } }
public object Get(Token name) { if (values.TryGetValue(name.lexeme, out object value)) { return(value); } if (enclosing != null) { return(enclosing.Get(name)); } throw new RuntimeError(name, $"Undefined variable {name.lexeme}."); }