This book is designed primarily for use as a textbook in a one-semester course on compiler design for undergraduate students and beginning graduate students.
The only prerequisites for this book are familiarity with basic algorithms and data structures (lists, maps, recursion, etc.
), a rudimentary knowledge of computer architecture and assembly language, and some experience with the Java programming language.
A complete study of compilers could easily fill several graduate-level cour.