Building an Interpreter in Go - Chapter 2: Pratt Parsing