Let’s Build a Compiler (1995)
Dated, but simple, and more importantly, concrete, using almost no abstractions (like lex and yacc), so there's no magic. Since the compiler described is for a subset of Pascal, and the compiler is itself written in Pascal, even the magic of the compiler itself is explained away.<p>This series is a large part of how I got started in the compiler business; and today I help maintain probably the most used Pascal compiler, in Delphi.<p>If anyone is interested in actually following along, TP 5.5 is freely available, though you'll need DosBox or similar if you're not running a 32-bit install of Windows:<p><a href="http://edn.embarcadero.com/article/20803" rel="nofollow">http://edn.embarcadero.com/article/20803</a>