
- 408 pages
- English
- PDF
- Available on iOS & Android
About this book
The approach to implementing programming languages has shifted noticeably over the past two decades. The success of Java, with its virtual-machine approach, has paved the way for alternative methods of implementing mainstream languages, diverging from traditional machine-language targeted compilation. Since then, many successful modern programming languages such as JavaScript, Ruby, and Python have offered alternative implementation techniques such as incremental interpreters, virtual machines, and just-in-time compilers.
The rise of domain-specific languages, sometimes called "little languages," has likewise been influenced and supported by this shift. Domain-specific languages can solve problems in specific problem areas within their specialized domains, unlike general-purpose languages such as Python or C++, which solve problems in a wide spectrum of domains.
In this book we explore the various techniques and perspectives brought about by this shift in programming language implementation. We particularly focus on domain-specific languages, which rarely use full-blown compilers for implementation in favor of an interpretation or virtual-machine approach.
- A "from day one" approach gets students started with implementing programming languages right away.
- Small, realistic languages are used to cover interpretation, virtual machines, and compilers.
- Implementation is "from scratch," so all steps are transparent and accessible to the student.
Tools to learn more effectively

Saving Books

Keyword Search

Annotating Text

Listen to it instead
Information
Table of contents
- CONTENTS
- PREFACE
- CHAPTER 1: PROGRAMMING LANGUAGES AND THEIR PROCESSORS
- CHAPTER 2: PARSING AND LEXING
- CHAPTER 3: SYNTAX-DIRECTED PROCESSING
- CHAPTER 4: INTERPRETATION WITH INTERMEDIATE REPRESENTATIONS
- CHAPTER 5: TREE-BASED INTERMEDIATE REPRESENTATIONS
- CHAPTER 6: COMPILERS
- CHAPTER 7: SYMBOL TABLES AND SCOPE
- CHAPTER 8: FUNCTIONS
- CHAPTER 9: FUNCTION CALLS ON REAL AND VIRTUAL MACHINES
- CHAPTER 10: COMPILING FOR REAL MACHINES
- CHAPTER 11: TYPE SYSTEMS
- CHAPTER 12: STRUCTURED DATA TYPES
- CHAPTER 13: PARSER GENERATORS
- CHAPTER 14: LLVM: A COMPILER BACK-END FRAMEWORK
- APPENDIX: AN ONTOLOGY OF OUR LANGUAGES
- BIBLIOGRAPHY
- INDEX
Frequently asked questions
- Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
- Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app