Programs transcribed and modified from the text Modern Compiler Design by Grune
As part of my education in compiler construction, I am working my way through the above text, and transcribing the code contained therein. Doing this, I hope to accomplish 3 goals:
- Refresh my knowledge of C programming styles and conventions. I have experience with C, and to a larger extent, C++, but given that these are often the de-facto languages for compiler engineering, I will re-familiarize myself with the language and also the practical aspects of compiling and organizing the code itself.
- Expand the truncated programming style in the book. Easier to read this way.
- Complete the ideas presented in the chapters, by way of exercises left to the reader, or unimplemented functions due to space constraints.
Modern Compiler Design covers aspects of compiler design from program input and syntax analysis to memory management and code generation. It also covers several different programming language paradigms, including compiling imperative, OO, functional, logic, and parallel/distributed programs. See an overview of the text here.
In short, it wasn't available from the RIT library at the time of my choosing a text. As to why I chose this book specifically, I found it to be a good mix of refresher on material I already know, practical code examples, and math/theory. I don't need beginner introductions to basic concepts, but I do want advanced concepts presented alongside the basic information. I feel this text can present that to me, and so far I believe it is doing the job.
- 2/09/18 Chapter 1 (Introduction) completed
- 2/23/18 Section 2.1 (Lexical Analysis) completed
- 2/28/18 Section 2.1 code transcribed, tested, and uploaded to GitHub
- 3/13/18 Section 2.2.4 (Creating a Top-Down Parser Automatically) completed
- 3/14/18 Section 2.2.5 (Creating a Bottom-Up Parser Automatically) completed
- 3/14/18 Chapter 2 completed
- 3/27/18 Chapter 2 code yacc/bison code transcribed and uploaded to GitHub
- 3/30/18 Section 3.1 (Attribute Grammars) completed
- 4/03/18 Section 3.2 (Manual Methods) completed
- 4/03/18 Chapter 3 (Annotating the Abstract Syntax Tree) completed
- 4/03/18 Section 3.1 / 3.2 programs transcribed and uploaded to GitHub
- 4/04/18 Section 4.1 (Interpretation) completed
- 4/04/18 Section 4.1 code transcribed and uploaded to GitHub
- 4/09/18 Section 4.2 (Code Generation) completed
- 4/10/18 Section 4.3 (Assemblers, Linkers, and Loaders) completed
- 4/10/18 Chapter 4 (Processing the Intermediate Code) completed
- 4/12/18 Section 5.1 (Data Allocation With Explicit Deallocation) completed
- 4/12/18 Section 5.2 (Data Allocation With Implicit Deallocation) completed
- 4/12/18 Chapter 5 (Memory Management) completed