Compiler Construction - CPSC 423
by Brad Rippe
I have put together this brief page of my 423 compiler project for other students to use as a reference for their compiler project. This was my project for Language Processor Technique Java Virtual Machine & Java Byte Code CPSC 423 by Professor Chang-Hyun Jo.
I have made the code available for students to modify and hopefully update code which they improve.
DISCLAIMER: THIS CODE AND INFROMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. USE AT YOUR OWN RISK.
The initial idea behind this project was to create a compiler Java Compiler that utilitized both C++ and Java to generate Java bytecode. However, through the development process the use of Java became less and less appealing with the performance hit of starting the JVM to do the work when C++ was already working well. So, the project became complete C++ code built with Object Oriented Design in mind. The idea was to construct separate objects that handle specific aspects of the compiler.
Architectural Overview - View
Architecture in HTML
This project takes advantage of the STL utilizes the following data structures:
The main components of the project is:
Main (Javaz.cpp) - the main class for the project.
CodeGenerator (CodeGenerator.h/CodeGenerator.cpp) - class contains all functions for generating java bytecode. Keep in mind that the code generator creates Jasmin Bytecode. Simple version of back patching uses xml tags to mark code, later replacing the xml with bytecode.
Syntactic Analyzer (Javaz.y) - The syntax analyzer valids the structure of the source code. Utilizes the code generator to generator java byte code.
Lexical Analyzer (Javaz.l) - Tokenizes the input source file. The lexical analyzer stores tokens in a token table, stores lines of code in a vector called srcFile and stores errors in a Vector called errs.
Initial Project Proposal - This file explains some of the tools used to create the compiler.
If you have implemented new features or bug fixes, feel free to contact me
at firstname.lastname@example.org. For more informaiton
on Java please see my Java
Course - CIS 226 Introduction to Java.