Concepts of programming languages - Sebesta (Addison-Wesley, 1999)