Concepts of programming languages - Sebesta, Robert W. (Addison Wesley, 2002)