public object lookUpVariable(Token name, Expr expr) { int distance = 0; if (locals.TryGetValue(expr, out distance)) { return(env.getAt(distance, name.Lexeme)); } else { return(globals.get(name)); } }
public object get(Token name) { if (Values.ContainsKey(name.Lexeme)) { return(Values.GetValueOrDefault(name.Lexeme)); } if (Enclosing != null) { return(Enclosing.get(name)); } throw new RuntimeError(name, $"undefined variable '{name.Lexeme}'."); }