johnl@ima.UUCP (07/19/87)
A simple run-down on some of the compiler books from my shelf. This run-down is very subjective. Your milage with these books may vary. Dragon Books: Aho/Ullman | Aho/Sethi/Ullman The new one is more readable than the old one, and it is probably better. I find both books to be sometimes inpenetrable. The pragmatic parts of both books are quite weak. I do find the new production/semantic rule tables useful, but again, no concrete implementation samples. T&P of Compiler Writing: Tremblay/Sorensen Much more pragmatic book in many ways. When coupled with the sister book containing a complete compiler implementation, it is probably one of the better books for the practicing compiler writer. The chapter on "Intermediate Representation" is very weak. The chapter on optimization is better. Compiler Construction for Digital Computers: Gries Probably one of the best books ever written on the subject, and despite its age, it is still better than some of the newer books. It has the right blend of theory and practice, and I wish Gries got around to writing a more up-to-date version of this book. But I understand that his current research interests are different, so this may be an empty hope. Compiler Construction: Weite/Goos An interesting book with heavy emphasis on Attribute Grammars. Its appendix present some important algorithms on directed graphs. It is probably useful as a "complementary" book, not as a "single source" book. The Design of an Optimizing Compiler: Wulf/others A very important book that describes one of the best-optimizing compilers to-date (BLISS). It contains some very pragmatic discussion of the compiler, and the discussion of the optimization passes are especially useful. Engineering a Compiler: Anklam/Cutler/others DEC's book on the PL/I compiler, and the C compiler (The Beast and The Beauty). A remarkable "practitioner's" book. Somewhat short on theory, but neverthaless a very good expose of two production compilers sharing a back-end. [[DEC guys had the same idea UofT had: using a virtual-engine to get the work done: Dec has TBL, UofT has S/SL.]] Brinch Hansen on Pascal Compilers: Hansen This is a hacker's guide to pascal. Contains a complete implementation of a Pascal-subset compiler, with a recursive- descent parser, and a pascal-machine for code generation. Probably useful for a beginner-compiler-hacker. It is in the class of other books like Hendrix's Small-C book, or Ben-Ari's Pascal-S book. Compiler Construction: T & P: Barrett/Bates/others.. This is ..er.. a compiler book. I am quite indifferent to both editions of this book. The second edition may be supplemented with a diskette containing a parser generator, and a pascal subset compiler ($$). The second edition does have some minor pieces of code thrown in, probably to get the PRACTICE part in the title. Other Sources: UofArizona Tech Reports by Henson, Davidson and others on code generation, peephole optimization, etc. Also get their Y compiler distribution, which includes the PO optimizer, one of the better re-targetable peephole optimizers written to date. You can actually look at the source !! UofT Tech reports on SSL, ConEuc, and especially: An orthogonal Model For Code Generation by James R. Cordy. This report contains some very important ideas, and it is a must for those writing production-quality code generators. GNUCC: If you can penetrate the C code, it is an interesting reading. In general, it seems to optimize better than the BSD4.2 C compiler, and it is a register-hog, just like the VMS C compiler. [I did examine its assembler output for a standard test program I previously used for the VMS and BSD compilers.] Disclaimer: These are my subjective views. I am not a compiler specialist, just a VERY INTERESTED reader/hacker. oz Usenet: [decvax|ihnp4]!utzoo!yetti!oz, ......!seismo!mnetor!yetti!oz Bitnet: oz@[yusol|yulibra|yuyetti], Phonet: [416] 736-5257 x 3976 -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.ARPA Plausible paths are { ihnp4 | decvax | cbosgd | harvard | yale | cca}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request
johnl@ima.BU.EDU (07/22/87)
Two I haven't seen mentioned before are (sorry I don't have the exact titles, but I don't have the books with me just know): ... something about Parsing: Theory and Practice ... Roland C. Backhouse Talks about parsing only. Use graph-theory techniques, with a lot of stuff about good error-recovery. I wrote one parser this way and found it was slow, but it's quite interesting. Mostly deals with top-down parsing. Compiler Design Theory (I think that's it) Lewis, Rosenkrantz, and Stearns. IBS Series. Good coverage of LL techniques. Also covers code generation, etc, though not extensively, and not particularly with the most up-to-date ideas. Uses mini-BASIC as a sample language (ugh). I thought it was pretty clear though, with lots of practical info. Mark Wittenberg Relational Technology, Inc. Alameda, CA ihnp4!zehntel!rtech!mark or ucbvax!mtxinu!rtech!mark -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.ARPA Plausible paths are { ihnp4 | decvax | cbosgd | harvard | yale | cca}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request
steve@hubcap.clemson.edu (Steve (D.E.) Stevenson) (07/23/87)
in article <623@ima.ISC.COM>, johnl@ima.BU.EDU says: > ... something about Parsing: Theory and Practice ... > Roland C. Backhouse Title is "Syntax of Programming Languages: Theory and Practice" It is out of print, unfortuately Steve Stevenson steve@hubcap.clemson.edu (aka D. E. Stevenson), dsteven@clemson.csnet Department of Computer Science, (803)656-5880.mabell Clemson Univeristy, Clemson, SC 29634-1906 -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.ARPA Plausible paths are { ihnp4 | decvax | cbosgd | harvard | yale | cca}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request