7

The "problem" with the dragon book is that it is so complete; intentionally so. Over its lifetime there have been tremendous advances in the theory and practice of building compilers. If you want "state of the art", then you want the dragon book, probably a later (harder) edition, even. But it is a bit much, as you have seen, for a first ...


4

Although it is not quite what you are asking, I deprecated these two books when teaching compiler design as many otherwise capable students are finding them tough going. I started to focus on more practical based books. Its a matter of top-down versus bottom-up approaches to the material (not the parsing). I now prefer Grune: "Modern Compiler Design&...


3

A lot has been done since 1973. But for an introduction, the earlier books should be fine. For a more advanced treatment, choose a modern book, of course. Another book that I like a lot is On Pascal Compilers by Brinch Hansen from 1985. While it is written in Pascal, it is one of the true pieces of CS Literature. It restricts itself to Recursive Descent ...


3

I last taught the Compiler course in 2008, that's a longtime with probably newer books have appeared. (ie sorry if the answer is somehow outdated) But I did had the same complains from the students, then one of them (Hussain Hassan Mehanna, he's probably a prof in UK now) told me that his friend in AUC uses a book called "Compiler Construction, ...


3

One crazy suggestion, install Python from source. Configure time about 42 sec. and compile time either around 3 minutes, or 48 sec with make -j. Your class will be using Python anyway, and seeing how long it takes to build from C vs. how long it takes to run Hello World in Python ought to begin to give them some appreciation of the differences. Otherwise, ...


1

Actually you have a misconception about compilers vs interpreters in the modern age. The stages of compilation (simplified) are Syntax Analysis (scanners - find the words and symbols and replace with internal values) Structural Analysis (parsers - build a tree equivalent) Optimization (maybe several stages - tree pruning etc) Code Generation (output the ...


1

As stated in Buffy's answer, you'll want to first be familiar with the other steps of compilation, because code generation is typically the last step in the compiler pipeline. If you haven't already, I'd suggest looking in to lexing and parsing as well. Optimization is nice as a bonus, but llvm does a good deal of optimization on its IR by itself. Once you'...


Only top voted, non community-wiki answers of a minimum length are eligible