Crafting a Compiler - Fischer, Charles; Cytron, Ron K; LeBlanc, Richard J