Final Project - Decaf Compiler
Goal
The goal of our semester-long project was to gain experience in compiler implementation by constructing a simple compiler. It is now time to polish your compiler for final submission.
Code Documentation
Your code must be cleanly organized and well-documented. Make sure you remove commented-out dead code and unneeded testing functions. For documentation, you needn't have a formal commend block for every function, but you should provide sufficient documentation for me to understand all of your code. To aid in this, imagine that someone else was going to be taking over the maintenance of your compiler, and you needed to leave enough information for them to easily extend your code.
Command-line Options
No compiler is complete without options, so you must add some rudimentary command-line processing. You should add all of the following options:
-h print help/usage text -o [fn] save output to given filename (if not present, use standard out) -v print version and author information -fdump-tree print abstract syntax tree (w/ symbol tables) -fdump-tac print three-address-code
If applicable, you should also add the following options:
-Wall enable any optional warnings -Werror treat warnings as errors (i.e., abort) -O enable optimization
User Documentation
Finally, you must prepare some standalone documentation for your compiler. At minimum, this should be a README file with information about the compiler and instructions about how to use it. You could also choose to create HTML or manpage documentation.
Submission
DUE: Friday, May 1, 2015, at 23:59 (11:59PM) EST
Submit a zip or tarball with your complete solution on Canvas. Your code must compile and work on the class server. Part of your grade will be based on automated testing and part will be based on style considerations. Please make sure that your project adheres to the specifications exactly to avoid difficulties with the automated testing framework, and make sure that your code is clean and documented.