コード例 #1
0
ファイル: impersonators.py プロジェクト: antongulenko/pycket
def chp_proc_cont(orig, proc, env, cont, _vals):
    vals = _vals._get_full_list()
    arg_count = len(orig)
    if len(vals) == arg_count:
        return proc.call(vals, env, cont)
    if len(vals) == arg_count + 1:
        args, check = values.Values.make(vals[1:]), vals[0]
        check.mark_non_loop()
        return check_chaperone_results_loop(args, orig, 0, env,
                call_cont(proc, env, call_cont(check, env, cont)))
    assert False
コード例 #2
0
ファイル: values_parameter.py プロジェクト: uternet/pycket
    def call(self, args, env, cont):
        from pycket.interpreter import return_value

        if len(args) == 0:
            return self.parameter.call(args, env, call_cont(self.wrap, env, cont))
        elif len(args) == 1:
            if self.guard:
                return self.guard.call(args, env,
                        call_cont(self.parameter, env, cont))
            return self.parameter.call(args, env, cont)
        else:
            raise SchemeException("wrong number of arguments to parameter")
コード例 #3
0
    def call(self, args, env, cont):
        from pycket.interpreter import return_value

        if len(args) == 0:
            return self.parameter.call(args, env, call_cont(self.wrap, env, cont))
        elif len(args) == 1:
            if self.guard:
                return self.guard.call(args, env,
                        call_cont(self.parameter, env, cont))
            return self.parameter.call(args, env, cont)
        else:
            raise SchemeException("wrong number of arguments to parameter")
コード例 #4
0
ファイル: impersonators.py プロジェクト: antongulenko/pycket
def imp_proc_cont(arg_count, proc, env, cont, _vals):
    vals = _vals._get_full_list()
    if len(vals) == arg_count:
        return proc.call(vals, env, cont)
    if len(vals) == arg_count + 1:
        args, check = vals[1:], vals[0]
        check.mark_non_loop()
        return proc.call(args, env, call_cont(check, env, cont))
    assert False
コード例 #5
0
ファイル: impersonators.py プロジェクト: krono/pycket
 def get_struct_info(self, env, cont):
     from pycket.interpreter import return_multi_vals
     if self.struct_info_handler is not None:
         cont = call_cont(self.struct_info_handler, env, cont)
     return self.inner.get_struct_info(env, cont)
コード例 #6
0
ファイル: continuation_marks.py プロジェクト: 8l/pycket
def cwicm(key, proc, default, env, cont):
    lup = cont.find_cm(key)
    val = default if lup is None else lup
    if isinstance(key, values.W_ContinuationMarkKey):
        return key.get_cmk(val, env, call_cont(proc, env, cont))
    return proc.call([val], env, cont)
コード例 #7
0
ファイル: general.py プロジェクト: antongulenko/pycket
def call_with_values (producer, consumer, env, cont):
    # FIXME: check arity
    return producer.call([], env, call_cont(consumer, env, cont))
コード例 #8
0
ファイル: general.py プロジェクト: rrnewton/pycket
def call_with_values (producer, consumer, env, cont, extra_call_info):
    # FIXME: check arity
    return producer.call_with_extra_info([], env, call_cont(consumer, env, cont), extra_call_info)
コード例 #9
0
 def get_struct_info(self, env, cont):
     from pycket.interpreter import return_multi_vals
     if self.struct_info_handler is not None:
         cont = call_cont(self.struct_info_handler, env, cont)
     return self.inner.get_struct_info(env, cont)
コード例 #10
0
ファイル: struct.py プロジェクト: rjnw/pycket
 def get_struct_info(self, env, cont):
     handler = self.handler_map.lookup(INFO_HANDLER_IDX, self.handlers)
     if handler is not None:
         cont = call_cont(handler, env, cont)
     return self.inner.get_struct_info(env, cont)
コード例 #11
0
ファイル: general.py プロジェクト: vishesh/pycket
def call_with_values (producer, consumer, env, cont, extra_call_info):
    # FIXME: check arity
    return producer.call_with_extra_info([], env, call_cont(consumer, env, cont), extra_call_info)
コード例 #12
0
ファイル: struct.py プロジェクト: yws/pycket-1
 def get_struct_info(self, env, cont):
     handler = self.map.lookup_handler(INFO_HANDLER_IDX, self)
     if handler is not None:
         cont = call_cont(handler, env, cont)
     return self.inner.get_struct_info(env, cont)