An Incremental Approach to Compiler Construction (2006) [pdf]
I find it a little amusing that it claims "toy compilers are too simplistic and do not prepare the novice compiler writer to construct a useful compiler", and then chooses Scheme, effectively bypassing the whole process of parsing... which IMHO is half the fun of writing a compiler.Seeing the elegance of recursive descent (and refactoring it into table-driven operator-precedence) and how it can turn recursive structures like expressions and statement blocks into linear sequences of instructions is something I think everyone writing a compiler should experience.However, I agree with an incremental approach, and that is nothing new; personally I think Jack Crenshaw's tutorial series (started in 1988) is one of the best:http://compilers.iecc.com/crenshaw/ (original 68k version)http://www.pp4s.co.uk/main/tu-trans-comp-jc-intro.html (x86 version)It's interesting to note that Jack doesn't specialise in compilers, nor computer science for that matter, yet his explanations are far clearer to me than many of those who do.