Programming languages : design and implementation. - Pratt, Terrence W.