Writing Compilers and Interpreters: An Applied Approach (Wiley professional computing)