I. Compiling a simple test program 1) Go to the Robust directory and type "cvs update" 2) Go into the src directory and build the compiler by typing: make clean make 3) To run the compiler on a source file (For example to compile Tests/Array.java): java -cp ../cup/:. Main.Main -mainclass Array Tests/Array.java 4) To compiler and link the output of the compiler do: gcc -IRuntime -I. -O0 -g methods.c Runtime/runtime.c 5) To run the binary type: ./a.out II. Command line options To see all the legal command line options for the compiler type: java -cp ../cup:. Main.Main -help III. Using Garbage Collection 1) Download the Hans Boehm garbage collector 2) Make a directory called gc in the Runtime directory & untar the gc into this directory 3) ./configure --prefix={RUNTIME DIRECTORY}; make;make install to build (Modify the prefix to the appropriate path for the runtime directory. 4) Make sure the gc libraries are placed in Runtime/lib and the include files in Runtime/include 5) Change step 4 in the build procedure to: gcc -IRuntime -I. -IRuntime/include -DBOEHM_GC -LRuntime/lib/ -lgc -O9 -g methods.c Runtime/runtime.c IV. High level organization of the compiler: 1. Lexer is in src/Lex 2. Parser is built from the grammar in Parse/java14.cup 3. Internal Representations are in the the IR subdirectory 3a. Tree representation is in IR/Tree (constructed by IR/Tree/BuildTree) 3b. Flattened representation in is IR/Flat (constructed by IR/Flat/BuildFlat) 4. Code is generated from the flattened representation by IR/Flat/BuildCode 5. Main/Main.java is the top level 6. ClassLibrary contains the class library 7. Runtime contains the runtime