Create Your Own Compiler: A step-by-step interactive tutorial
citw.dev
citw.dev
The book covers the usual theory and then puts it to use to develop tools for writing compilers (e.g., lexical analyzer generators similar to lex and parser generators similar to yacc) and then with those tools develops a C compiler.
^source: first hand experience, albeit with cuphooks rather than magnets.
I've would preferred a simpler and more traditional design.
(It's my site). Thanks! That's a pretty big caveat, woops. I'll check it out.
Would love to hear some ideas about improved functionality.