Programming languages Design and implementation - Pratt Terrence W Ed. (1996)