Implementing the Dragon Book (Principles of Compiler Design) in Go