This assignment involved making several transformations over the interpreter, with the end result being an interpreter where every call is in tail form and which passes its arguments around in registers (therefore calls are truly gotos), and which saves its continuation representation on a stack (therefore it automatically reclaims control space on a pop: heap allocation is necessary only for first-class procedures).
The intermediate and final results for the transformations can be found here:
Back to the c311 page
ehilsdal@cs.indiana.edu