/scheme2cps2c4py

A Scheme to CPS to C compiler in Python

Primary LanguagePythonMIT LicenseMIT

python scheme compiler
jt olds

usage:
./compiler.py < input.scm > out.c
./compiler.py --output=c < input.scm > out.c

alternatively:
./compiler.py --output=cps < input.scm > output.scm

other flags include
  --curry            if you want the intermediate representation to curry all
                     function calls, why you would i don't know
  --recursion_limit  if you are having trouble with call depth size of the
                     python interpreter.
  --nogc             disables usage of the boehm garbage collector
                     (not recommended)

the story so far:
 this is a scheme-to-c compiler written in python. it does not support all of
r5rs by any means (there aren't many valid data types besides integers. lists
aren't supported, for example (bwa?!)), but it is a definitely solid starting
point.
 the biggest novelty of this compiler is that it compiles by first transforming
scheme to continuation-passing-style, which means that call/cc actually does
work.
 i wrote this for advanced compilers (cs6470) with matt might (matt.might.net)
at utah.edu. it was a tight schedule and i barely made it, so the documentation
is poor, and there are two intermediate representations (instead of fixing the
initial ir once i realized it was broken, i just wrote a quick translator for
the ir instead of rewriting the other code).
 at some point i definitely hope to clean this up.