This textbook is intended for an introductory course on Compiler Design, suitable for use in an undergraduate programme in computer science or related fields.

Introduction to Compiler Design presents techniques for making realistic, though non-optimizing compilers for simple programming languages using methods that are close to those used in "real" compilers, albeit slightly simplified in places for presentation purposes. All phases required for translating a high-level language to machine language is covered, including lexing, parsing, intermediate-code generation, machine-code generation and register allocation. Interpretation is covered briefly.

Aiming to be neutral with respect to implementation languages, algorithms are presented in pseudo-code rather than in any specific programming language, and suggestions for implementation in several different language flavors are in many cases given. The techniques are illustrated with examples and exercises.

The author has taught Compiler Design at the University of Copenhagen for over a decade, and the book is based on material used in the undergraduate Compiler Design course there.

“This book provides a solid foundation to those who need to understand a main underpinning of computer science--how to design a compiler for a new language. … Numerous figures throughout the nine chapters help explain concepts. … A companion website … provides answers to selected problems, with emphasis on problems from the initial chapters of the book. Summing Up: Recommended. Upper-division undergraduates and above.” (M. B. DuBois, Choice, Vol. 49 (7), March, 2012)