Bantam Java Compiler Project -- Version 1.3 Changes from 1.2: * Added JVM target for generating Java Virtual Machine Code, which can be converted by Jasmin into class files * Added an optimizer component for optimizing programs (the opt/ and cfg/ packages contain this code) * Added an interpreter component for interpreting programs * String.equals now takes an Object as a parameter (as it does in Java) * Added Object.toString, Object.equals, Sys.time, and Sys.random built-in methods * Symbol table is no longer flushed after semantic analysis and can be used by code generator * Fixed other minor bugs in solution, API, and manual Changes from 1.1: * Made String.equals parameter type Object rather than String to conform with Java's definition of String.equals * Added an extended language (includes arrays, for loops, etc.) * Fully implemented lexer in JavaCC version of reference compiler (lexical errors caught in lexer rather than in parser -- thanks to David Furcy for identifying this and providing solution code) * Fixed off by one conformance testing bug in reference compiler * Fixed difference in language between Bantam Java and Java: Bantam Java now does not allow redeclaration of local variables with overlapping scopes * Fixed other minor bugs in solution, API, and manual