Reflecting on what was learned from writing this book
We have learned some useful things from writing this book. Among other things, we concluded that Java is very suitable for writing compilers at this point. Sure, Andrew Appel might have published Modern Compiler Implementation in Java in 1997, and other compiler writing books in Java exist. These might be great, but many compiler writers won't consider using Java if it means giving up lex and YACC. Using a standard lex/YACC toolchain for Java makes it more interoperable with compiler code bases created for other languages.
I want to express my appreciation to the Byacc/J maintainer Tomas Hurka for accepting and improving my static import
patch to make Byacc/J play more nicely with Jflex and similar tools (including my Merr tool, as covered in Chapter 4, Parsing) that generate yylex()
or yyerror()
in separate files. Supporting yylex()
and yyerror()
in separate files obviates the need for stupid workarounds, such as writing...