コード例 #1
0
    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}'.")
コード例 #2
0
    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}'.'"
        )
コード例 #3
0
    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}'."
        )