Programming languages : principles and practice - Louden, Kenneth C. (Course Technology, Cengage Learning, 2012)