We can either generate an IR that we simulate or we can do a tree walking interpreter.
IR
pro: we will have to generate this in the future anyway
pro: can be faster
con: will take longer
Tree walk
pro: very easy
con: we can't do much (if any) optimizations
con: we want to keep the interpreter in the system even when the compiler is working so making it too simple now would mean we have more work to do later.
We can either generate an IR that we simulate or we can do a tree walking interpreter.