It references fewer academic papers than the Dragon book (guess: by a factor of 20).
Examples are in "a subset of the language Oberon, which is a condensation of its ancestors Modula-2 and Pascal".
I'm annoyed by Wirth's EBNF, in which "0 or more repetitions of X" is notated at {X}, when X* has precisely the same meaning, and is much more familiar. However, Wirth's description of it is more intuitive for me as a coder than Kleene closure ("smallest superset of X, including \lamba, closed under concatenation").
conclusion: a compiler book, like the Dragon book, but less academic (that's a good thing) and with Pascal examples.
You mean because they don't consider combinators for parsing?
That's the only example I can think of for higher order functions used in compilers. Combinators are much more powerful (though less efficient) than the construction of automata (which the Dragon book covers). I'm implementing parser combinators with some unusual properties at the moment, and then (hope to!) prove some things about them. I wish the Dragon book had covered this approach in the first place. So your comment is relevant to me.