LispMe
vm.c の PTR exec(void) を一部抜粋。cons とかはマクロ。
case LDC: /*------------------------------------------------------------*/ /* s e (LDC x.c) d --> (x.s) e c d */ /*------------------------------------------------------------*/ S = cons(cadr(C),S); goto skip2; case LDF: /*------------------------------------------------------------*/ /* s e (LDF c'.c) d --> ((c'.e).s) e c d */ /*------------------------------------------------------------*/ S = cons(cons(cadr(C),E), S); goto skip2; case AP: /*------------------------------------------------------------*/ /* ((c'.e') v.s) e (AP.c) d --> NIL (v.e') c' (s e c.d) */ /*------------------------------------------------------------*/ D = cons(cddr(S), cons(E, cons(cdr(C), D))); E = cons(cadr(S), cdar(S)); C = caar(S); S = NIL; break;