# Intermediate code generation - Put symbol table in the reader monad and it to the stack or use the state monad for everything. - Add errors handling to the monad stack.