One of the projects I’m most proud of completing was building a full compiler, from scratch.
It was built for the class EECE6083, Compiler Theory, at my university and here’s how I summed the process in my report:
“Building a compiler has been an arduous journey that took away some of the magic of programming while also introducing new magic that, for me, is best left untouched.”
Constructing a compiler from scratch taught me many things - making design decisions (my compiler ended up being much different than ones built by others), how to build scalable code, managing a somewhat large project alone, and of course, what makes up a compiler, to name a few. The class itself also gave me a chance to give my first-ever lecture as part of the course requirements, which I did on LR parsing.
All of the code, the documentation and requirements, and the lecture are available on my Github, located here. The compiler was designed to take in a language designed by the professor specifically for the class, so I’d never recommend using it for any case other than compiler-building. If you desire, however, instructions for running it are included as well as the language specifications (provided by the professor).