Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 def bind(self, this):
     env = Environment()
     env.outer_env = self.closure
     env.define("this", this)
     return LoxFunction(self.declaration, env)