This is some code about how to implement a compiler