Last update 2010/02/01
In this small experiment, I'm trying to execute the Guy Steele's RABBIT compiler.
Currently, RABBIT seems to be running under the Sussman & Steele's SCHEME interpreter, which is running under a toy lisp system written in Java.
Example input and output are as follows:
(define fib (lambda (n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))))
(COMMENT THIS IS THE RABBIT LISP CODE FOR "rabbit/fib.scm") (DECLARE (SPECIAL **CONT** **ONE** **TWO** **THREE** **FOUR** **FIVE** **SIX** **SEVEN** **EIGHT** **ENV** **FUN** **NARGS**)) (PROGN 'COMPILE (COMMENT MODULE FOR FUNCTION FIB) (DEFUN |rabbit/fib-27| NIL (PROG NIL (DECLARE (SPECIAL |rabbit/fib-27|)) (GO (PROG2 NIL (CAR **ENV**) (SETQ **ENV** (CDR **ENV**)))) F-26 (COMMENT (DEPTH = 0) (FNP = NIL) (VARS = (CONT-23 N))) (COND ((< **ONE** '2) (SETQ **FUN** **CONT**) (RETURN NIL)) (T ((LAMBDA (Q-28 Q-29) (SETQ **ONE** Q-29) (SETQ **CONT** Q-28)) (CONS 'CBETA (CONS |rabbit/fib-27| (CONS 'C-25 (CONS **ONE** (CONS **CONT** **ENV**))))) (- **ONE** '1)) (GO F-26))) C-25 (COMMENT (DEPTH = 0) (FNP = NIL) (ENV = (N CONT-23))) ((LAMBDA (Q-30 Q-31) (SETQ **ONE** Q-31) (SETQ **CONT** Q-30)) (CONS 'CBETA (CONS |rabbit/fib-27| (CONS 'C-24 (CONS **ONE** **ENV**)))) (- (CAR **ENV**) '2)) (SETQ **ENV** (CDDDR FIB)) (GO F-26) C-24 (COMMENT (DEPTH = 0) (FNP = NIL) (ENV = (NODE-13 N CONT-23))) (SETQ **FUN** (CADDR **ENV**)) (SETQ **ONE** (+ (CAR **ENV**) **ONE**)) (RETURN NIL))) (SETQ |rabbit/fib-27| (GET '|rabbit/fib-27| 'EXPR)) (SETQ FIB (LIST 'CBETA |rabbit/fib-27| 'F-26)) (DEFPROP |rabbit/fib-27| FIB USER-FUNCTION)) (PROGN 'COMPILE (COMMENT MODULE FOR FUNCTION |init-rabbit/fib|) (DEFUN |rabbit/fib-37| NIL (PROG NIL (DECLARE (SPECIAL |rabbit/fib-37|)) (GO (PROG2 NIL (CAR **ENV**) (SETQ **ENV** (CDR **ENV**)))) F-36 (COMMENT (DEPTH = 0) (FNP = NIL) (VARS = (CONT-35))) (SETQ **FUN** **CONT**) (SETQ **ONE** 'NIL) (RETURN NIL))) (SETQ |rabbit/fib-37| (GET '|rabbit/fib-37| 'EXPR)) (SETQ |init-rabbit/fib| (LIST 'CBETA |rabbit/fib-37| 'F-36)) (DEFPROP |rabbit/fib-37| |init-rabbit/fib| USER-FUNCTION)) (COMMENT (COMPILE TIME 4 SECONDS))
This project is hosted on github.
These papers are available at http://library.readscheme.org/page1.html.