Finally we start actually compiling!
Homework 5 is to read Chapter 7 of the text and build a module to translate Tiger ASTs to an IR tree.
In the last two projects, the Translate
module has
gone from an empty stub to a small collection of
frame-manipulation utilities. Now we finally flesh it out to do
real translation.
You will need to augment existing structures as described in
Chapter 7. You may define the Frame.procEntryExit1
function as a stub (we'll come back to it at a later date). Make
sure you use it, however, in your translation code.
The definition of the TRANSLATE
interface is part
of this project; define it with your teammates. You may discuss
it outside your team in general terms, but no code on the
mailing list, please.
Your Semant
module should export a
transProg
function which is the ultimate AST-to-IR
interface for the whole post-parser ensemble of modules we have
constructed up to this point.
You are required to handle evaluation-for-control
(Cx
expressions) in a reasonably sophisticated manner. For example,
if a < 0 || x > y then ... else ...
should translate into a reasonable tree of conditional tests and branches. This may require some thought.
You should submit
I predict you will find this part of the compiler the most fun yet.
Last updated 12 March 2008.