Crafting a compiler - Fischer, Charles (Addison Wesley, 2010)