Whatโs the best side project youโve ever completed? For Keyhole Consultant Jake Everhart, so far, itโs writing his own interpretive programming language. He calls it Donut. Hereโs more about why he made it, how he made it, and why itโs been so fun.
Summary
Side projects fight off Burnout, and thatโs really why Jake embarked on the journey of writing Donut in the first place. Writing an interpretive programming language is basically writing an interpreter, which involves three main components.
- First, you have your Lexer, which breaks source code into tokens. It asks, โDo I recognize and understand these symbols?โ
- Then you have your Parser, which takes those tokens and builds them into an abstract syntax tree (AST). It asks, โWhat do these tokens mean?โ
- Finally, you have your Evaluator, which traverses through the nodes in the AST and actually does the evaluation. It asks, โHow do I resolve these AST nodes?โ
From a high level, once you nail down these three components, your language will be ready to function. And thatโs where the fun stuff truly begins: youโre the captain of the ship, and you decide how the programming language will work. You have all the power when it comes to syntax, built-in functions, and developer tooling!
It technically works, and even though itโs not something youโll probably start using on professional projects, it doesnโt matter. Itโs a fun experiment, and according to Jake, it will definitely quell any burnout youโre experiencing!
Resources:
- Writing an Interpreter in Go by Thorsten Ball
- Jakeโs Donut Repository

