CS 5363: Compiler Project, Part #3

Submission Deadlines:

Project Overview

In this class, you will be writing an optimizing compiler for a toy programming language, which we will call, TL05 (and targeting the SPIM MIPS Simulator.)

You may choose C, C++, or Java to implement your compiler, but it must compile and run on the machines in the Computer Science Department's Linux lab. (If you choose C or C++, you will also need to create a makefile that will build an executable from your source files.) The entire compiler must be your own, independent work, and each assignment will build on the work of the previous assignments.

Third Assignment

The third assignment is to complete the compiler front-end by adding an additional phase that translates your TL05 Abstract Syntax Tree into basic blocks of three-address code instructions (Section 5.4.2 of your textbook) with he following properties:

In addition, you should provide a mechanism to output the control flow graph (with the nodes corresponding to basic blocks and labeled with the appropriate IR instructions).

It is recommended, that... You may find it useful to refer to the new informal semantics of the TL05 language.

Deliverables and Submission

When you have completed your assignment, you should create a tar archive or zip file containing your source files (with the correct package-based directory structure if you're using Java), the makefile (if your compiler is in C or C++), and your test cases. These should be attached to an email to vonronne@cs.utsa.edu. The subject of this email should containing the text "CS 5363 Submission #3", and the body should contain a "cover letter". This "cover letter" must contain:

  1. Your name.
  2. A statement that the attached source files are your own work.
  3. A statement of approximately how many hours it took to complete the assignment.
  4. Instructions for compiling and running your submission.
  5. A description of any known limitations of the implementation being turned in (e.g., incomplete features, test cases that don't run)
  6. A list of deficiencies that were in the parser, type checker, etc. when part #2 was submitted, but our now fixed.
  7. Anything else you think I should know while grading your assignment

Grading Criteria

This assignment has two due dates. You are required to turn in the current state of your compiler by the first due date, at which time you will be given suggestions for further improvements. Your first submission will not, however, be graded until the second deadline. If you wish to implement optimizations in your compiler (which will be extra credit), you should attempt to finish this part by the first due date.

As a matter of policy, late work will not be accepted. Partially completed assignments will, however, be evaluated for partial credit. This assignment depends on the parser working correctly, so the correctness or incorrectness of the scanner/parser may be considered when grading this assignment. Projects will be evaluated using a rubric similar to the following:

In addition, extra credit will be given for deficiencies in the parser and type checker that have been remedied, since part #2 was turned in. A penalty of up to 50% may be deducted if the program doesn't compile and run on the machines in the department's Linux lab.

Errata

There may need to be corrections, clarifications, or other modifications to these instructions, you are responsible for monitoring the class web site, monitoring your CS account mailboxes, and listening during lecture for announcements related to this assignment.