For the fourth assignment, you will implement static reachability analysis, and check that all variables have an initializer.
Submit to Marmoset a .zip archive containing
everything required to build and run your project.
It should also include all your test cases and test code that you used to
test your compiler.
It must also include a file named git.log showing the commit history
of your Git repository.
In addition to the above, the .zip file should contain a
file named Makefile in the root directory. Marmoset will run make on this Makefile
to build your compiler. The Makefile must generate an executable
(binary or shell script) called joosc.
As in previous assignments, joosc should process the Joos 1W files given on the command line, produce appropriate diagnostic messages on standard error, and exit with one of the following Unix return codes:
Your build process and execution of joosc should not send or receive data from/to the internet
in any way.
The Marmoset tests for this assignment take several minutes to run. Do not submit more than one submission at a time to Marmoset. If Marmoset reports that your previous submission has not been tested yet, do not submit another one. Denial-of-service attacks on Marmoset will result in disciplinary action.
Submit to Marmoset a PDF document explaining the design decisions you made in completing Assignments 2, 3, and 4. The document will be evaluated based on both writing and technical content. Good writing often reflects good thinking. Be clear, thorough, and concise.
The document should be no more than six letter-sized pages long, should use a 10-12 point font, and should use reasonable margins and line spacing. It should have a title and should list the names and WatIAM (Quest) userids of the group members.
Documents submitted after the assignment deadline will not be marked and will receive a mark of zero. If you cannot finish the implementation by the deadline, document what you have by the deadline, and explain any unfinished parts in your document.
The document should typically cover the following topics:
This should be the main part of your document. Things to consider:
Your goal is to enable someone unfamiliar with your compiler to understand it (without looking at the source code) and to convince the course staff that you have thought carefully about the construction of your compiler.
Describe your test cases and the result of testing. Detail any known issues of your compiler. Your compiler will be evaluated on secret Marmoset tests at the end of the term, so you want to achieve good coverage of the input space and of your code in your own tests.
Describe what each group member did.
The document will be hand-marked, with 50% of the marks for organization, clarity, and style, and 50% of the marks for technical content.