Compiler project for the University of Waterloo CS444/644 compiler construction course. The Joos1W language is based off the Java 1.3 language. See here for a complete feature table of Joos:
Our project is written in C++ with Flex and Bison as our lexer and parser generators. To build the project, simply run:
mkdir build
cd build
cmake .. && make
Make sure you are either using Clang 16 (preferred) or later or GCC 12 or later. There is currently a bug in older GCC compilers that would not compile this project. In addition, here is a summary of the dependencies:
CMake
>= 3.21Clang
>= 17 for C++23 supportlibstdc++-12-dev
or later (must have C++23 support)flex
>= 2.6.4 andbison
>= 3.8.2
In addition, if you wish to build the debug version, you will need:
xsltproc
(for debug builds)- One of
libdw-dev
,binutils-dev
orlibdwarf-dev
(for backward.cpp)
Our project directory structure is:
lib/
: Contains the core compiler libraries. Includes AST, parser grammar and other files.tests/
: Contains the unit test drivers and data files.tools/
: Contains the frontends -- these are the programs you actually can run.