Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
yinwang0 committed May 10, 2014
0 parents commit e94c3e2
Show file tree
Hide file tree
Showing 2 changed files with 3,736 additions and 0 deletions.
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# YScheme - an experimental compiler for Scheme


This is the final submission for a compiler course I took from <a
href="http://en.wikipedia.org/wiki/R._Kent_Dybvig">Kent Dybvig</a> at Indiana
University. The compiler compiles a significant subset of Scheme into X64
assembly and then linked 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_,
which resulted sometimes in much simpler and shorter code, which is not
necessarily ease to understand by people who haven't written CPS transformers.


### Copyright

Copyright (c) 2008-2014 Yin Wang
All right reserved

Only the part written by me is here, because I don't have copyright of the rest
of the code.


### References

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

<a href="http://www.cs.indiana.edu/~dyb/pubs/hocs.pdf">The Development of Chez
Scheme</a>


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

<https://github.com/akeep/nanopass-framework>
Loading

0 comments on commit e94c3e2

Please sign in to comment.