Principles of compiler design (TMH, 2012)