Compiler

Summary

As part of one of my senior level courses at Clemson, I designed and implemented a compiler based on provided requirements specifications. It took a LISP-like language as an input, then output equivalent JVM byte code that can run on any Java virtual machine. This involved writing a number of components:

  • Parser: splits the input into tokens
  • Syntax Checker: builds a tree to represent the program and ensure proper syntax
  • Type Checker: ensures semantic correctness
  • Symbol Table: used C-style scope rules to keep up with what function and variables names are valid at a given scope
  • Code Generator: converts the tree into executable code

The project included creating unit tests to verify correctness.

    Technical Details

    Programming Language: C++