Your task is to implement the front-end of a compiler for the CJ language, which has surface syntax similar to C and Java, but takes inspiration from Modula-3 for its semantics.
Source code to get started with is available via svn on the XINU machines using the command:
svn co file:///homes/cs502/project/svn/p1or remotely using the repository URL:
svn+ssh://xinu1.cs.purdue.edu/homes/cs502/project/svn/p1You can freely replace the machine name
xinu1 with any of the
machines in the XINU lab (e.g., xinu2).
You will now have a working copy of the project files in the
directory p1. This contains src
and lib subdirectories. The src subdirectory
contains source files for this project. The lib subdirectory
contains any precompiled class files you will need to compile this project.
The files are actually configured as an Eclipse project, so you can also
import the project into Eclipse at your convenience using svn.
If you are using the lab machines then you should be sure to set up your
environment as in the file /homes/cs502/SETUP.sh
(or /homes/cs502/SETUP.csh if you use the C shell). The easiest
way is to source the appropriate file from either
your sh/bash
.profile/.bash_profile or
csh/tcsh .login shell startup script.
From here on we will assume that you have first set your current directory to
the p1/src subdirectory using the command:
cd p1/srcto enter the
src subdirectory.
The file cj/CJ.jj contains the javacc specification for the CJ scanner and parser. You will work entirely on this file for this project.
You generate the scanner and parser Java source code from this file with the command:
javacc CJ.jjThis will produce Java source code files into the directory cj/parse. If you are using Eclipse and have the JavaCC plugin installed then when you save changes to this file then the
javacc
command should run automatically to produce the Java source code files.
You must compile these files (and all the other Java files) using
the javac Java-to-bytecode compiler. If you are using Eclipse
this should happen automatically.
You can run the scanner with the command:
java cj.parse.ParserTokenManager filewhere
file is a file containing CJ tokens.
You can run the parser with the command:
java cj.parse.Parser filewhere
file is a CJ source code file.
You can print out the abstract syntax tree generated by the parser with the command:
java cj.Absyn file
You should turn in all code you add/modify as well as a written report (README) describing your implementation. Use the turnin command on the XINU lab machines to do so.