Rabbit: A Compiler for Scheme
A Compiler for SCHEME
(A Dialect of LISP)
A Study in
Based on Viewing
LAMBDA as RENAME
PROCEDURE CALL as GOTO
using the techniques of
Macro Definition of Control and Environment Structures
Guy Lewis Steele Jr.
Massachusetts Institute of Technology
Revised version of a dissertation submitted (under the title "Compiler Optimization Based on Viewing LAMBDA as RENAME plus GOTO") to the Department of Electrical Engineering and Computer Science on May 12, 1977, in partial fulfillment of the requirements for the degree of Master of Science.
|B. The Thesis||10|
|2. The Source Language - SCHEME||15|
|3. The Target Language||18|
|4. The Target Machine||22|
|5. Language Design Considerations||25|
|6. The Use of Macros||28|
|7. The Imperative Treatment of Applicative Constructs||37|
|8. Compilation Strategy||44|
|A. Alpha-conversion and macro-expansion||45|
|B. Preliminary analysis||46|
|D. Conversion to Continuation-Passing Style||56|
|E. Environment and closure analysis||60|
|F. Code generation||64|
|9. Example: Compilation of Iterative Factorial||69|
|10. Performance Measurements||86|
|11. Comparison with Other Work||88|
|12. Conclusions and Future Work||90|
|The permission for use of this work has been verified and archived in the Wikimedia OTRS system.
It is available for users with an OTRS account. To confirm the permission, please contact someone with an OTRS account or leave a note at the OTRS noticeboard.