Oat Compiler
Fully functional compiler to x86 assembly from Oat, a simply typed language featuring functions/lambdas, structs, arrays, and strings. Features a type checker, parser, and custom codegeneration to/from LLVM IR. Used basic dataflow analyses to implement optimizations like dead code elimination, constant propogation, register allocation, and more.