def _Apply(self, appl): fn = appl.function() if isinstance(fn, S.Closure): fn_name = fn.body().id else: fn_name = fn.id if fn_name in self.procedures: instantiatedFunction = self.procedures[fn_name] functionArguments = instantiatedFunction.variables[1:] instantiatedArguments = appl.parameters[1:] if isinstance(fn, S.Closure): instantiatedArguments.extend(fn.variables) env = pltools.Environment() for (internal, external) in zip(functionArguments, instantiatedArguments): env[internal.id] = external return_finder = ReturnFinder() return_finder.visit(instantiatedFunction) #XXX HACK. Need to do conditional statement->expression conversion # In order to make inlining possible if return_finder.return_in_conditional: return appl env[return_finder.return_value.id] = self.activeBinding statements = filter(lambda x: not isinstance(x, S.Return), instantiatedFunction.body()) statements = [S.substituted_expression(x, env) for x in \ statements] singleAssignmentInstantiation = single_assignment_conversion( statements, exceptions=set((x.id for x in flatten(self.activeBinding))), M=self.M) self.statements = singleAssignmentInstantiation return None return appl
def __init__(self, env, exceptions, state): self.env = pltools.Environment(env) self.exceptions = exceptions if state: self.serial = state else: self.serial = itertools.count(1)
def __init__(self, globals): self.globals = globals import copperhead.prelude_impl as PI self.prelude_impl = set(dir(PI)) self.PI = PI self.env = pltools.Environment() self.clean = []
def __init__(self, globals): self.globals = globals self.locals = pltools.Environment() import copperhead.prelude_impl as PI self.prelude_impl = set(dir(PI)) self.PI = PI self.bools = ["True", "False"]
def _Apply(self, apply): functionName = apply.parameters[0].id if functionName in self.procedures: instantiatedFunction = self.procedures[functionName] functionArguments = instantiatedFunction.variables[1:] instantiatedArguments = apply.parameters[1:] env = pltools.Environment() for (internal, external) in zip(functionArguments, instantiatedArguments): env[internal.id] = external return_finder = ReturnFinder(self.activeBinding, env) return_finder.visit(instantiatedFunction) statements = [S.substituted_expression(x, env) for x in \ instantiatedFunction.body() \ if not isinstance(x, S.Return)] singleAssignmentInstantiation = single_assignment_conversion( statements, exceptions=set((x.id for x in flatten(self.activeBinding)))) self.statements = singleAssignmentInstantiation return None return apply
def __init__(self): self.env = pltools.Environment()
def __init__(self, globals=None): self.globals = globals or dict() self.env = pltools.Environment()
def __init__(self, globals): self.globals = globals self.env = pltools.Environment() self.clean = []
def __init__(self, env, exceptions): self.env = pltools.Environment(env) self.exceptions = exceptions self.freeze = False