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
xinu1with any of the machines in the XINU lab (e.g.,
You will now have a working copy of the project files in the
p1. This contains
lib subdirectories. The
contains source files for this project. The
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.csh if you use the C shell). The easiest
way is to source the appropriate file from either
.login shell startup script.
From here on we will assume that you have first set your current directory to
p1/src subdirectory using the command:
cd p1/srcto enter the
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
javacccommand should run automatically to produce the Java source code files.
You must compile these files (and all the other Java files) using
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
fileis a file containing CJ tokens.
You can run the parser with the command:
java cj.parse.Parser filewhere
fileis 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.