Modern Compiler Implementation in Java
by Andrew W. Appel
This textbook describes all phases of a modern compiler: lexical analysis, parsing, abstract syntax, semantic actions,
intermediate representations, instruction selection via tree matching, dataflow analysis, graph-coloring register
allocation, and runtime systems. It includes good coverage of current techniques in code generation and register
allocation, as well as functional and object-oriented languages, that is missing from most books. The most accepted
and successful techniques are described in a concise way, rather than as an exhaustive catalog of every possible
variant. Detailed descriptions of the interfaces between modules of a compiler are illustrated with actual Java classes.