• Stars
    star
    187
  • Rank 206,464 (Top 5 %)
  • Language
    Scheme
  • Created over 10 years ago
  • Updated over 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A compiler from Scheme into X64

YScheme - an experimental compiler for Scheme

This is the final submission for a compiler course I took from Kent Dybvig at Indiana University. The compiler compiles a significant subset of Scheme into X64 assembly and then links it with a runtime system written in C. I made attempts to simplify and innovate the compiler, so it is quite different from Kent's original design.

In Kent's words, I put myself into trouble each week by doing things differently and then get myself out of it. Sometimes I did better than his compiler, sometimes, worse. But eventually I passed all his tests and got an A+.

A notable thing of this compiler is its use of high-order evaluation contexts, an advanced technique used in CPS transformers, which resulted sometimes in much simpler and shorter code.

Copyright

Copyright (c) 2008-2014 Yin Wang, All rights reserved

Only the main compiler code is here. I don't have copyright of the rest of the code (test framework, runtime system etc)

References

For a history of the important compiler techniques contained in this compiler, please refer to Kent's paper:

The Development of Chez Scheme

For details of the compiler framework developed for the course, please refer to

https://github.com/akeep/nanopass-framework

For more information about CPS transformation, please refer to Andrew Appel's book:

Compiling with Continuations

and Danvy and Filinski's paper

Representing control: a study of the CPS transformation (1992)