Ejemplo n.º 1
0
static rsexp compile_procedure_definition (RState* r,
                                           rsexp expr,
                                           rsexp next)
{
    rsexp var, body, formals;
    rsexp bind, code;

    if (!validate_procedure_definition (r, expr))
        return R_FAILURE;

    var = r_caadr (expr);
    body = r_reverse_x (r, r_cddr (expr));
    formals = r_cdadr (expr);

    r_gc_scope_open (r);

    ensure_or_goto (code = bind = emit_bind (r, var, next), exit);
    ensure_or_goto (code = emit_return (r), exit);
    ensure_or_goto (code = compile_sequence (r, body, code), exit);
    ensure_or_goto (code = emit_close (r, formals, code, bind), exit);

exit:
    r_gc_scope_close_and_protect (r, code);

    return code;
}
Ejemplo n.º 2
0
abstract_filter_state_t::abstract_filter_state_t(const string &state_name, const string &retry_state_name, const string &thru_state_name, machine_t *owner) :
  abstract_gate_state_t(state_name, retry_state_name, owner)
{
  s_thru_state = thru_state_name ;
  thru_state = NULL ;
  QObject::connect(this, SIGNAL(closed()), this, SLOT(emit_close())) ;
}
Ejemplo n.º 3
0
static rsexp compile_lambda (RState* r, rsexp expr, rsexp next)
{
    rsexp formals;
    rsexp body;
    rsexp code;

    if (!validate_lambda (r, expr))
        return R_FAILURE;

    formals = r_cadr (expr);
    body = r_reverse_x (r, r_cddr (expr));

    r_gc_scope_open (r);

    ensure_or_goto (code = emit_return (r), exit);
    ensure_or_goto (code = compile_sequence (r, body, code), exit);
    ensure_or_goto (code = emit_close (r, formals, code, next), exit);

exit:
    r_gc_scope_close_and_protect (r, code);

    return code;
}