3 ms·
https://mitpress.mit.edu/author/jeremy-g-siek-37497/ https://mitpress.mit.edu/author/jeremy-g-siek-37497/ - He has two books, both are also available through op
by Jtsummers 3y ago
https://mitpress.mit.edu/author/jeremy-g-siek-37497/ https://mitpress.mit.edu/author/jeremy-g-siek-37497/ - He has two books, both are also available through open access. One is in Python implementing a Python-ish language and the other in Racket implementing a Scheme-ish language.
I ran through the first half or so of both versions earlier this year while looking for material for a colleague (and a few other books, courses, and tutorials). Overall I like the approach which is based on the nanopass compiler concept mentioned by some other commenters. You get a functioning compiler (as in it produces an executable program) very early, and then spend the rest of the book extending the language and adding passes.