This gives us an interpreter that can be implemented in any low-level language. We then show how these data structures can be represented in a single stack with static and dynamic links. This development provides a solid understanding of stack-based language architectures, and also illustrates the power of algebraic reasoning techniques. Finally, chapters 11 and 12 apply our techniques to the development of scanners, parsers, and compilers. Chapter 11 introduces lexical scanning and parsing techniques.
Program transformations clarify the relationship between recursive descent and table-driven parsers.
Chapters 5 through 10 are the heart of this book. It also teaches an approach to programming that starts with a high-level operational specification, which also serves as a rapid prototype, and ends with what is effectively assembly language. We believe the programming transformation techniques used in this process should be in the toolbox of every computer scientist. Usage This text has been used in various forms to teach students from the sophomore to the graduate level, and in continuing education classes for professional programmers. It also has much to offer the dedicated computer scientist through self-study.