A decent introduction into how programming languages are set up. Covers a lot of information about the conceptual building blocks of programming languages. The case studies work well to show how those abstract topics translate into actual language features. Would be even better with more modern examples (Rust, Java 11, C++14) since a lot has changed.
Bought this book for my studies at Eindhoven University. In contrast to some the other books I bought for the same reason, this one actually is a good read!