Lexical analysis.- Syntax analysis.-Scopes and symbol tables.- Interpretation.- Type checking.-Intermediate-code generation.- Machine-code generation.- Register allocation.- Functions.- Data-flow analysis and optimisation.- Optimisation for loops.- More language features.- Set notation and concepts.- Index.
The author has taught programming language design, implementation, and transformation at the University of Copenhagen for more than two decades.
The third edition of this textbook has been fully revised and adds material about the SSA form, polymorphism, garbage collection, and pattern matching. It presents techniques for making realistic compilers for simple to intermediate-complexity programming languages. The techniques presented in the book are close to those used in professional compilers, albeit in places slightly simplified for presentation purposes. "Further reading" sections point to material about the full versions of the techniques.
All phases required for translating a high-level language to symbolic machine language are covered, and some techniques for optimising code are presented. Type checking and interpretation are also included.
Aiming to be neutral with respect to implementation languages, algorithms are mostly presented in pseudo code rather than in any specific language, but suggestions are in many places given for how these can be realised in different language paradigms.
Depending on how much of the material from the book is used, it is suitable for both undergraduate and graduate courses for introducing compiler design and implementation.