示例#1
0
 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));
     }
 }
示例#2
0
        public object Get(Token name)
        {
            if (values.TryGetValue(name.Lexeme, out object value))
            {
                return(value);
            }

            if (Enclosing != null)
            {
                return(Enclosing.Get(name));
            }

            throw new RuntimeException(name, $"Undefined variable '{name.Lexeme}'.");
        }