Remix.run Logo
armchairhacker 11 hours ago

Nowadays I’ve heard recommended Crafting Interpreters. (https://craftinginterpreters.com)

The Nanopass paper link doesn’t work.

gobdovan 9 hours ago | parent | next [-]

Compilers are broad enough that when someone recommends a "compiler book", it's rarely exactly the slice you wanted.

So this made me do a runnable cheat sheet for Crafting Interpreters. I keep parsing demonstrative, and the AST is a little more Lisp-y than the book's.

Disclaimer: it's meant to convey the essence of what you'll learn, it is NOT by any means a replacement for the book. I'd also describe the book as more of an experience (including some things Nystrom clearly enjoyed, like the visitor pattern) than a compilers manual. If anyone's interested, I can do a separate visitor-pattern cheat sheet too, also in Python.

I turned it into a 'public-facing artifact' from private scripts with an AI agent.

[0] https://ouatu.ro/blog/crafting-interpreters-cheat-sheet/

orthoxerox 8 hours ago | parent | prev | next [-]

Crafting Interpreters is great, I wish it had a companion book that covered:

  - types and typing
  - optimization passes
  - object files, executables, libraries and linking
Then two of them would be sufficient for writing a compiler.
gavinray 7 hours ago | parent | next [-]

To your last point, "Linkers and Loaders" has no equal despite being a bit dated

ux266478 7 hours ago | parent | prev | next [-]

> types and typing

This would be like asking for a book on designing grammar. It's just too disjoint of a field to have any kind of reasonable baseline, and it's drop dead easy to grok a basic one together. With those two things being equal, just like with grammar, the answer to this is any resource about implementing the language you're trying to ape.

orthoxerox 7 hours ago | parent [-]

It's drop dead easy to grok a basic one together until you get to hairy stuff like overloading, lambdas and generics.

The reasonable baseline would be something like Java 1. Scalars, arrays and classes. If I remember correctly, Lox even skips arrays as an exercise for the user.

duped 7 hours ago | parent | prev | next [-]

> types and typing

Types and Programming Languages, Benjamin C Pierce

> object files, executables, libraries and linking

Linkers and Loaders, John R Levine

orthoxerox 7 hours ago | parent [-]

I've read Pierce. It's not a bad book, but less grounded than CI, which has an explicit "workmanlike" approach.

4 hours ago | parent | prev [-]
[deleted]
tmountain 10 hours ago | parent | prev | next [-]

Incredible book for self guided learning!

ramon156 10 hours ago | parent | prev | next [-]

Awesome course! finished it while i was doing my final CS year because I had to wait on a bunch of classes (and frankly had no one to talk to before classes). I haven't tried nanopass, but there's other links that work, so I'll give it a go.

menato 7 hours ago | parent | prev [-]

[dead]