Maintaining a balance between a theoretical and practical approach to this important subject, Elements of Compiler Design serves as an introduction to compiler writing for undergraduate students. From a theoretical viewpoint, it introduces rudimental models, such as automata and grammars, that underlie compilation and its essential phases. Based on these models, the author details the concepts, methods, and techniques employed in compiler design in a clear and easy-to-follow way.
From a practical point of view, the book describes how compilation techniques are implemented. In fact, throughout the text, a case study illustrates the design of a new programming language and the construction of its compiler. While discussing various compilation techniques, the author demonstrates their implementation through this case study. In addition, the book presents many detailed examples and computer programs to emphasize the applications of the compiler algorithms.
After studying this self-contained textbook, students should understand the compilation process, be able to write a simple real compiler, and easily follow advanced books on the subject.
Table of Contents
DETERMINISTIC TOP-DOWN PARSING
Predictive Sets and LL Grammars
DETERMINISTIC BOTTOM-UP PARSING
SYNTAX-DIRECTED TRANSLATION AND INTERMEDIATE CODE GENERATION
Bottom-Up Syntax-Directed Translation and Intermediate Code Generation
Top-Down Syntax-Directed Translation
Software Tools for Syntax-Directed Translation
OPTIMIZATION AND TARGET CODE GENERATION
Tracking the Use of Variables
Optimization of Intermediate Code
Optimization and Generation of Target Code
Exercises appear at the end of each chapter.
"The book makes a good compromise between the underlying formal theory and the practical implementation . . . the book is self-contained and the discourse is clean and concise . . . has the right amount of mathematical and formal language support, including the proofs of the lemmas and theorems . . . can be used by computer science students and professionals interested in a concise introduction into compiler writing."
– Corneliu Bârsan, in Zentralblatt Math, 2009