Worth also mentioning Crafting Interpreters by Robert Nystrom (craftinginterpreters.com) as a companion — it implements two interpreters in Java then C, covering a treewalk interpreter and a bytecode VM, and is freely available online. Together with this journey and nils-m-holm's Practical Compiler Construction mentioned above, you get a remarkably complete self-study path from parsing fundamentals all the way to code generation.
On the C vs typed language debate: C forces you to think about representation explicitly — no algebraic types to lean on, every tagged union is manual. That arguably teaches you more about what a compiler actually does structurally. But OCaml or Haskell's pattern matching makes the recursive descent so natural that it's worth attempting both if you have the time. They illuminate different things.
Worth also mentioning Crafting Interpreters by Robert Nystrom (craftinginterpreters.com) as a companion — it implements two interpreters in Java then C, covering a treewalk interpreter and a bytecode VM, and is freely available online. Together with this journey and nils-m-holm's Practical Compiler Construction mentioned above, you get a remarkably complete self-study path from parsing fundamentals all the way to code generation.
On the C vs typed language debate: C forces you to think about representation explicitly — no algebraic types to lean on, every tagged union is manual. That arguably teaches you more about what a compiler actually does structurally. But OCaml or Haskell's pattern matching makes the recursive descent so natural that it's worth attempting both if you have the time. They illuminate different things.
Very cool! I can’t imagine writing everything in C, I’m currently learning this in OCaml which seems nicer for a project like this.
Perhaps using this: https://github.com/nlsandler/nqcc2
?
Wow that's super nostalgic. You're on a great path! After doing something similar, I switched to Haskell. Give it a go if you have the time.
Having it all in C brings back memories from "Compiler Design in C" a famous book for its time, printed in 1990.
https://holub.com/compiler/
I wrote a book in its spirit in 2012 with a second edition in 2022: http://t3x.org/reload/
It is called Practical Compiler Construction. The Compiler Writing Journey is based on it.
Thanks for your amazing work!
How much of Claude was used?
It was started 7 years ago.