示例#1
0
 public object LookupVariable(Expr expr)
 {
     if (locals.ContainsKey(expr))
     {
         return(environment.GetAt(locals[expr], ((Variable)expr).name));
     }
     else
     {
         return(globals.Get(((Variable)expr).name));
     }
 }
示例#2
0
        public object Get(Token name)
        {
            if (!values.ContainsKey(name.lexeme))
            {
                if (enclosing == null)
                {
                    return(null);                    //all undefined variables are null
                }
                else
                {
                    return(enclosing.Get(name));
                }
            }

            return(values[name.lexeme].Item2);
        }
示例#3
0
 public object Property(Interpreter interpreter, Token token, object argument)
 {
     return(env.Get(new Token(EOF, (string)argument, null, token.line)));
 }