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));
            }
        }
Exemple #2
0
        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}'.");
        }