Compilers: Principles, Techniques, and Tools (2nd Edition)