How to build an interpreter