CSC 548 - Advanced Compiler Design
Reading List and Useful Information
Table of contents
Textbooks
On-line Articles
On-line Textbooks
Garbage Collection
Interesting Languages and their compilers
Byte code and interpreters
Textbooks
Required Texts:
ISBN: 0-521-82060-X. Recommended Texts:
Compilers: Principles, Techniques and Tools, 2nd Edition, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, 2006, Addison-Wesley, 2007. ISBN: 0-321-48681-1.
If you do not already own the Dragon Book: Every serious compiler developer needs a copy.
Advanced Compiler Design and Implementation, Steven Muchnick, 1997, ISBN: 978-1-55860-320-2, or ISBN10: 1-55860-320-4
Treats optimization in-depth.
Modern Compiler Design , Dick Grune, Henri E. Bal, Ceriel J.H. Jacobs, and Koen G. Langendoen, John Wiley & Sons, Ltd., 2000, ISBN: 0-471-97697-0 On-line Articles
General Topics
Java
- JavaTM 2 Platform, Standard Edition, v 1.5.0 API Specification Full documentation (javadoc) on the classes used in the course.
- Sun's JDK documentation
- JDK J2SE 5 (JDK 1.5)
- Reference: Core Java Technologies Tech Tips
- JDK Tools and Utilities
- Debugging in Java
Compiler Tools
- A Catalog of Compiler Construction Tools
- Make
Java Tools
Parsers, Lexers and Compiler Compilers
- BNF and EBNF: What are they and how do they work?
- LL(1) Grammars
- LLAnalyze: An LL(1) Grammar Analyzer
- LL parser
- Creating a Recursive-Descent Parser
- Introduction to Parsers, Part III: Does a Yak Have Antlers? Parsing for Fun and Profit
- Java, Objects, and Tools in Compiler Construction
- SableCC is a Open Source Java Compiler Compiler
- JavaCC is a Public Domain Compiler Compiler for Java
- JavaCC documentation - JavaCC [tm]: Documentation Index
- Documentation on JavaCC (local mirror)
- JavaCC archive
- JavaCC, parse trees, and the XQuery grammar - Using BNF and JavaCC to build custom parsers
- The JavaCC FAQ
- The JavaCC Tutorial
- Looking for lex and yacc for Java? You don't know Jack
- Build your own languages with JavaCC
- ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing Java, C#, or C++ actions.
Compiler Design Papers
Compiler Internals
Tree Walking
- Design Patterns, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch
- The Visitor design pattern
- Treecc: An Aspect-Oriented Approach to Writing Compilers
- Separation of Concerns in Compiler Development Using Aspect-Orientation
The Java Compiler
Byte code and Interpreters
- The JavaTM Virtual Machine Specification
- Just-in-time compilation
- Common Language Runtime
- Byte-code
- Common Language Infrastructure
- Java bytecode
- Bytecode basics
- Java virtual machine
- Threaded code
- Threaded Code
Garbage Collection and Storage Management
- Inside memory management
- Memory Allocation and Garbage Collection
- Memory Allocation Myths and Half-Truths Hans-J. Boehm
- A garbage collector for C and C++ Hans-J. Boehm
- Richard Jones' Garbage Collection Page Likely the most comprehensive site on garbage collection; has a page on the book Garbage Collection, Wiley, 1999, by Jones and Lins.
- Easy to read articles from IBM's developerWorks on garbage collection in Java:
- Paul R. Wilson. Uniprocessor Garbage Collection Techniques (link to ps file) (PDF Version)
Dynamic Linking
- The Zen of Dynamic Linking
- Dynamic Linking and Loading
- Position-independent code
- Dynamic Code Generation
- Dynamic-link library
- Shared Objects and Runtime Linking
Interesting Languages and their Compilers
- ALGOL
- AN IMPLEMENTATION OF ALGOL 60 FOR THE FP6000
- ALGOL 60
- Algol-60 Implementation
- Whetsone Algol Revisited Or Confessions Of A Compiler Writer By B. Randell
- The Whetstone KDF9 Algol Translator - B. Randell
- Burroughs B5000
Books - on-line textbooks
- Compiler Construction - Niklaus Wirth (on-line in PDF) (local mirror)
- Basics of Compiler Design - Torben Mogensen (local mirror), (local table of contents), (local solutions)
Humor
RFC 3092 - Etymology of "Foo"