Programming languages: design and implementation - Pratt, Terrence W. (Pearson, 2004)