The rest isn't covered enough and doesn't have enough practical real-world advice.
The rest isn't covered enough and doesn't have enough practical real-world advice.
I cannot disagree with you more.
But clang and gcc both have handwritten recursive-descent parsers for C/C++. (C++ parsing of course is undecidable, or at least used to be.)
I happen to think generating useful software from declarative grammar specifications is, hmm. Not limited to what such frameworks have been capable of to date. Although if you've only worked with yacc/bison, and never ANTLR, you may be underestimating the quality of a generated parser with respect to error recovery and messages. The state of the art has advanced, I don't think anyone would claim parity with artisanal handcrafted softwares, but we can get a lot more than "barf: shift-reduce bunchanumbers" these days.
C++ too. Just to be pedantic.
Books do not cover how to actually structure a compiler and write sensible passes etc.