38c877fd555c652f0ad177016a55fb029e57eb49
[IRC.git] / Robust / src / README
1 I. Compiling a simple test program
2
3 1) Go to the Robust directory and type "cvs update"
4
5 2) Go into the src directory and build the compiler by typing:
6 make clean
7 make
8
9 3) To run the compiler on a source file (For example to compile
10 Tests/Array.java):
11 java -cp ../cup/:. Main.Main -mainclass Array Tests/Array.java
12 NOTE: The mainclass option specifies the class that contains the main method
13
14 4) To compiler and link the output of the compiler do:
15 gcc -IRuntime -I. -O0 -g methods.c Runtime/runtime.c
16
17 5) To run the binary type:
18 ./a.out
19
20
21
22 II. Command line options
23
24 To see all the legal command line options for the compiler type:
25 java -cp ../cup:. Main.Main -help
26
27
28
29 III. Using Garbage Collection
30
31 1) Download the Hans Boehm garbage collector
32
33 2) Make a directory called gc in the Runtime directory & untar the gc into this directory
34
35 3) ./configure --prefix={RUNTIME DIRECTORY}; make;make install to build
36 (Modify the prefix to the appropriate path for the runtime directory.
37
38 4) Make sure the gc libraries are placed in Runtime/lib and the include files in Runtime/include
39
40 5) Change step 4 in the build procedure to:
41 gcc -IRuntime -I. -IRuntime/include -DBOEHM_GC -LRuntime/lib/ -lgc -O9 -g methods.c Runtime/runtime.c
42
43 IV. High level organization of the compiler:
44 1. Lexer is in src/Lex
45 2. Parser is built from the grammar in Parse/java14.cup
46 3. Internal Representations are in the the IR subdirectory
47 3a. Tree representation is in IR/Tree (constructed by IR/Tree/BuildTree)
48 3b. Flattened representation in is IR/Flat (constructed by IR/Flat/BuildFlat)
49 4. Code is generated from the flattened representation by IR/Flat/BuildCode
50 5. Main/Main.java is the top level
51 6. ClassLibrary contains the class library
52 7. Runtime contains the runtime