public object LookupVariable(Expr expr) { if (locals.ContainsKey(expr)) { return(environment.GetAt(locals[expr], ((Variable)expr).name)); } else { return(globals.Get(((Variable)expr).name)); } }
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); }
public object Property(Interpreter interpreter, Token token, object argument) { return(env.Get(new Token(EOF, (string)argument, null, token.line))); }