CS 444/644 - Compiler Construction (Winter 2021) - Assignment 0

Choosing a group

The overall project for the course is to write a compiler from Joos 1W, a fairly large subset of Java, to i386 assembly language (the Netwide Assembler dialect). The project will be done in groups of three. The project will be broken up into several assignments with fixed due dates. The assignments must be submitted to the Marmoset on-line submission and testing system. For each assignment, you will submit both your code and a written report to Marmoset.

The project may be done in any programming language of your choice, as long as it can be practically installed in the linux.student.cs environment. If your language of choice cannot be installed, you may have to choose an alternative language.

One of the goals of the course is for you to understand how compilers and compiler generation tools work, rather than relying on them as mysterious black boxes. Therefore, your compiler must use only code that you wrote or that is provided to you by the instructor. Your compiler may use machine-generated code, as long as the code that generated it was written by you or by the instructor. You may not use code obtained from elsewhere or code generated by code obtained from elsewhere; in particular, you may not use generators such as lex or yacc. You may not use external libraries obtained from elsewhere. You may use the standard library that comes as part of the programming language that you choose to use. However, you may not use any scanner or parser generator that may be included in the standard library of your language of choice. If you have any doubts about which code you may or may not use, please ask the instructor for clarification.

Each group must use git for revision control. You may choose one of the following online git servers to share code within your group. Do not post any of your code to any publicly readable repositories.

For assignment 0, do the following tasks: