Esempio n. 1
0
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; }
}
}
Esempio n. 2
0
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; }
}
}