ICS 142: Compilers and Interpreters

Summer Session II, August 6 – September 12, 2001


Compiler Books

There is no required text for this course; however, you may still want to consult a book on compiler construction. Here are some suggestions.

Author(s) Title Publisher Year Comment
Aho, Sethi, Ullman Compilers: Principles, Techniques, and Tools Addison-Wesley 1986

This classic book covers the state-of-the-art in compiler construction 15 years ago. However, since the basics are pretty much timeless, it can still be a worthwhile investment. Examples are mostly in C.

Appel Modern Compiler Implementation Cambridge University Press 1998

This is probably the classic of the future. Appel treats compiler construction from a very modern perspective, especially code generation and optimization. The book develops a complete compiler for a relatively complex language. Recommended! Available with examples in C, Java, or ML.

Wirth Compiler Construction Addison-Wesley 1996

This little book is the most compact introduction to compiler construction currently available. It covers all the essentials for this course and also develops a complete compiler. Recommended! Examples are in Oberon.

Fraser, Hanson A Retargetable C Compiler: Design and Implementation Addison-Wesley 1995

This is not a textbook on compiler construction. Instead, it presents the implementation of the popular lcc compiler. This is not a toy compiler but the real thing, fully documented in literate programming style.

Muchnick Advanced Compiler Design and Implementation Morgan Kaufmann 1997

This advanced text focuses on code generation and optimization, but addresses other issues as well. It is only recommended after you have thoroughly absorbed a more elementary book.

Terry Compilers and Compiler Generators: An Introduction with C++ International Thomson Computer Press 1997

This text is available as a free download online. However, we can not offer any comments yet.

Scott Programming Language Pragmatics Morgan Kaufmann 2000

This is again not a compiler book in the usual sense. It is a text on programming languages that leans more heavily towards compiler construction than usual. If you want a single reference for languages and compilers, give it a look.

Grune, Jacobs Parsing Techniques: A Practical Guide 1998

This text is available as a free download online. However, we can not offer any comments yet.

Hennesey, Patterson Computer Architecture: A Quantitative Approach Morgan Kaufmann 1996

This is again not a compiler text, although it touches on many issues relavant for compilers and code generation in particular. This is a detailed introduction to computer architecture, covering way more detail than you will need in this course.

Patterson, Hennesey Computer Organization and Design: The Hardware/Software Interface Morgan Kaufmann 1997

See above, same topic but different emphasis and sometimes considered easier to read since it is more "high-level".

There are also plenty of other books on compilers out there, too many to list here in fact. You are on your own to find the right one for you. If you find a good book, tell us about it! And if you buy books online, be smart and use a site for comparison shopping such as BestBookBuys or BookFinder.

Other Books

The following books do not address compilers in particular, but they can prove helpful for doing the project in this course.

Author(s) Title Publisher Year Comment
Gamma, Helm, Johnson, Vlissides Design Patterns Addison-Wesley 1995

This book is the classic on design patterns, and it discusses a number of patterns useful for implementing a compiler. Look at Visitor, Factory, Interpreter, etc. for ideas.

Hunt, Thomas The Pragmatic Programmer Addison-Wesley 1999

Lots of practical (or pragmatic) advice on programming and software development in general, e.g. how to organize your code, how to debug, how to test, etc. Similar in intent to the text by Kernighan and Pike, but quite a different approach.

Kernighan, Pike The Practice of Programming Addison-Wesley 1999

Lots of practical (or pragmatic) advice on programming and software development in general, e.g. how to organize your code, how to debug, how to test, etc. Similar in intent to the text by Hunt and Thomas, but quite a different approach.

If you plan to become a serious software developer, some of the techniques described in these books can be very helpful indeed, even financially...


Copyright © 2001 Peter H. Fröhlich. All rights reserved.
$Id: books.html,v 1.5 2002/01/08 18:50:02 phf Exp $
Valid XHTML 1.0!