Interpreter implementation for the Lox programming language.
I work on this from time to time. It is interesting to learn how to implement a compiler. It is much harder than I thought it would be, but once you have the core logic down it's all about adding more of the same and handling exceptional corner cases.