Writing an Compiler in Go
A sequel to the interpreter book and goes a bit further and walks through the process of setting up of using a compiler rather than an evaluator to traverse the AST. It extends the previously constructed interpreter to include the production of bytecode, as well as constructing a minimal virtual machine to execute the bytecode.