5.2.2 In Java - Second Edition
The Second Edition
of Modern Compiler Implementation in Java, by
Andrew W. Appel and
Jens Palsberg, published by
Cambridge University Press (New York, Cambridge), ISBN 052182060X, is a
very different book from the rest of the series.
While, finally, the design is much better, starting with the
introduction of the Visitors, there are many shortcoming for us:
- − The language is no longer Tiger, in spite of the cover, but MiniJava, a
subset of Java. It should be noted that, although dressed in OO
fashion, the core language addressed in the first part of the book is no
more OO than Tiger. Just as in the first edition,
OO is addressed in Chapter 14 (a good thing IMHO).
- − This language seems, at first sight, to have a simpler syntax. In
particular, it does not include the “l-value vs. array instantiation”
ambiguity, which is a pity, since that’s a nice grammar massage
exercise.
- − The appendix no longer contains the Tiger Language Reference
Manual, but the MiniJava Language Reference Manual. This is a real
problem for EPITA students who have to produce a compiler for
Tiger. This is why our Tiger Language Reference Manual in Tiger Compiler Reference
Manual is now much more detailed: so that students can buy the recent
version of this book, and still have an access to the definition of the
Tiger language.
- − MiniJava, as Java, does not need static links. Although this book does
mention static links (and uses an example in... Tiger!), it contains
much less material than the original edition. This is unfortunate: try
to find another version of the book.
- − Sometimes the sentence are convoluted because... it would be nice to
illustrate using Tiger... For instance page 151 “Record and Array
Creation” begins with “Imagine a language construct {e1, e2, ...,
en} that creates an n-element record...”.
Nevertheless, because we don’t encourage book copying, we now provide a
complete definition of the Tiger language in Tiger Language Reference Manual in Tiger
Compiler Reference Manual.