def call(self, *args): from interpreter.execute_stmt import execute_stmt env = Environment() env.outer_env = self.closure for param_position, param in enumerate(self.declaration.params): env.define(param.lexeme, args[param_position]) try: execute_stmt(self.declaration.body, env) except LoxReturn as ret: return ret.ret_val return None
def bind(self, this): env = Environment() env.outer_env = self.closure env.define("this", this) return LoxFunction(self.declaration, env)