CSE P 501 Au09 - MiniJava

Overview

The course project is to implement the MiniJava language specified in the Appendix of Appel's Modern Compiler Implementation in Java, 2nd edition and described on the MiniJava web site. MiniJava is a subset of Java and the meaning of a MiniJava program is given by its meaning as a Java program.

As compared to full Java, a MiniJava program consists of a single class containing a static main method followed by zero or more other classes. There are no other static methods or variables. Classes may extend other classes, and method overriding is included, but method overloading is not supported. All classes making up a MiniJava program are included in a single source file. The only types available are int, boolean, and int[]. "System.out.println(...);" is a statement and can only print integers - it is not a normal method call, and does not refer to a static method of a class. All methods are value-returning and must end with a single return statement. The only other available statements are if, while, and assignment.

The full MiniJava grammar is given on the project web site and in the Appendix of Appel's Modern Compiler Implementation in Java (2nd ed). Look at the grammar carefully to see what is and is not included in the language subset.

Extensions

The basic project requirements are small enough to be tractable in a one-quarter course project, but include enough to cover the core ideas of compiling an object-oriented (as well as procedural) language. If you are feeling ambitous and have the time, you are invited to add additional parts of Java to the language. Here are a few suggestions.

Some Simple Ideas

Adding an additional numeric type like double would not be particularly interesting, since there is relatively little difference in how the compiler handles ints and doubles. However, adding String literals and the concatenation (+) operator would be interesting.

More Sophisticated, but very interesting

Of the suggested extensions, adding instanceof, type casts, and super. are particularly instructive.

Some extra credit will be awarded to projects that go beyond the basic requirements.