over the summer I wrote a tree-walking interpreter that implements a subset of Godot’s built-in scripting language, GDScript. It’s a whitespace-significant imperative language, so implementing that in Erlang was challenging but also really fun!
I have never implemented a programming language before, so I spent a lot of time staring at the Luerl
source code, the documentation for leex and yecc, and the book Crafting Interpreters.
overall I’m pretty happy with it, but the interface is rather bad. this partially stems from cheating a bit and using the process dictionary to hold state for the interpreter rather than threading it through all of the functions. 