void valuer__m__ofr__m__cps() { expr* _c = (expr*)expr__t__; switch (_c->tag) { case _const_expr: { void *cexp = _c->u._const._cexp; vr__t__ = (void *)cexp; pcr__t__ = &applyr__m__k; break; } case _var_expr: { void *n = _c->u._var._n; yr__t__ = (void *)n; pcr__t__ = &applyr__m__env; break; } case _mult_expr: { void *er0 = _c->u._mult._nexpr1; void *er1 = _c->u._mult._nexpr2; expr__t__ = (void *)er0; returnr__t__ = (void *)ktr_outerr__m__multr__m__k(er1,envr__m__cpsr__t__,returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _subr1_expr: { void *e = _c->u._subr1._nexp; expr__t__ = (void *)e; returnr__t__ = (void *)ktr_constructorr__m__subr1(returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _zero_expr: { void *e = _c->u._zero._nexp; expr__t__ = (void *)e; returnr__t__ = (void *)ktr_constructorr__m__zero(returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _if_expr: { void *test = _c->u._if._test; void *conseq = _c->u._if._conseq; void *alt = _c->u._if._alt; expr__t__ = (void *)test; returnr__t__ = (void *)ktr_constructorr__m__if(conseq,alt,envr__m__cpsr__t__,returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _letcc_expr: { void *e = _c->u._letcc._body; expr__t__ = (void *)e; envr__m__cpsr__t__ = (void *)envrr_extendr__m__env(returnr__t__,envr__m__cpsr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _throw_expr: { void *er0 = _c->u._throw._kexp; void *er1 = _c->u._throw._vexp; expr__t__ = (void *)er0; returnr__t__ = (void *)ktr_outerr__m__throwr__m__k(er1,envr__m__cpsr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _let_expr: { void *er0 = _c->u._let._exp; void *er1 = _c->u._let._body; expr__t__ = (void *)er0; returnr__t__ = (void *)ktr_constructorr__m__let(er1,envr__m__cpsr__t__,returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } case _lambda_expr: { void *e = _c->u._lambda._body; vr__t__ = (void *)closr_closure(e,envr__m__cpsr__t__); pcr__t__ = &applyr__m__k; break; } case _app_expr: { void *rator = _c->u._app._rator; void *rand = _c->u._app._rand; expr__t__ = (void *)rator; returnr__t__ = (void *)ktr_outerr__m__appr__m__k(rand,envr__m__cpsr__t__,returnr__t__); pcr__t__ = &valuer__m__ofr__m__cps; break; } } }
void evalr__m__expr() { exp* _c = (exp*)r__t__expr; switch (_c->tag) { case _const_exp: { void *n = _c->u._const._n; r__t__a = (void *)n; r__t__pc = &applyr__m__k; break; } case _var_exp: { void *v = _c->u._var._v; r__t__x = (void *)v; r__t__pc = &applyr__m__env; break; } case _if_exp: { void *test = _c->u._if._test; void *conseq = _c->u._if._conseq; void *alt = _c->u._if._alt; r__t__k = (void *)ktr_ifr__m__k(test,conseq,alt,r__t__env,r__t__k); r__t__expr = (void *)test; r__t__pc = &evalr__m__expr; break; } case _mult_exp: { void *randr1 = _c->u._mult._randr1; void *randr2 = _c->u._mult._randr2; r__t__k = (void *)ktr_multr__m__outer(randr2,r__t__env,r__t__k); r__t__expr = (void *)randr1; r__t__pc = &evalr__m__expr; break; } case _subr1_exp: { void *rand = _c->u._subr1._rand; r__t__k = (void *)ktr_subr1r__m__k(r__t__k); r__t__expr = (void *)rand; r__t__pc = &evalr__m__expr; break; } case _zero_exp: { void *rand = _c->u._zero._rand; r__t__k = (void *)ktr_zeror__m__k(r__t__k); r__t__expr = (void *)rand; r__t__pc = &evalr__m__expr; break; } case _letcc_exp: { void *body = _c->u._letcc._body; r__t__env = (void *)envrr_extend(r__t__k,r__t__env); r__t__expr = (void *)body; r__t__pc = &evalr__m__expr; break; } case _throw_exp: { void *rator = _c->u._throw._rator; void *rand = _c->u._throw._rand; r__t__k = (void *)ktr_punchr__m__out(rand,r__t__env); r__t__expr = (void *)rator; r__t__pc = &evalr__m__expr; break; } case _lambda_exp: { void *body = _c->u._lambda._body; r__t__a = (void *)closr_closure(body,r__t__env); r__t__pc = &applyr__m__k; break; } case _app_exp: { void *rator = _c->u._app._rator; void *rand = _c->u._app._rand; r__t__k = (void *)ktr_appr__m__outer(rand,r__t__env,r__t__k); r__t__expr = (void *)rator; r__t__pc = &evalr__m__expr; break; } } }