Introduction to Compilers and Translation Engineering