Compilers principles, techniques, and tools Alfred V. Aho (Prentice Hall, 2003)