Concepts of programming languages - Sebesta, Robert M. (Addison-Wesley, 1996)