def get(self, name: Token.Token) -> Any: if name.lexeme in self.fields: return self.fields[name.lexeme] method = self.klass.find_method(name.lexeme) if method != None: return method.bind(self) raise Interpreter.RuntimeError(name, f"Undefined property '{name.lexeme}'.")
def get(self, name : Token.Token) -> Any: if name.lexeme in self.values: return self.values[name.lexeme] if self.enclosing != None: return self.enclosing.get(name) raise Interpreter.RuntimeError( name, f"Undefined variable '{name.lexeme}'.'" )
def assign(self, name : Token.Token, value : Any): if name.lexeme in self.values: self.values[name.lexeme] = value return if self.enclosing != None: self.enclosing.assign(name, value) return raise Interpreter.RuntimeError( name, f"Undefined variable '{name.lexeme}'." )