Let's Build a Compiler (1995)
xmonader.github.io
xmonader.github.io
The attribution is missing: As the README on the repository (https://github.com/xmonader/letsbuildacompiler-pretty) explains, this is a prettified version of the plain-text “Let's Build a Compiler” by Jack Crenshaw, published in serial form during 1988 to 1995 (https://compilers.iecc.com/crenshaw/).
This prettified version is nice; if nothing else the syntax highlighting in the code samples makes them easier to read.
But comparing for example the first installment at the original (https://compilers.iecc.com/crenshaw/tutor1.txt) and here (https://xmonader.github.io/letsbuildacompiler-pretty/tutor01...), looks like the title, author name, copyright notice, and date have all been removed. Hopefully the maintainer of this repo finds a way to add them back. (Also, Part 9 seems to be empty? Reporting on the repo.)
Edit: Reported on the repo and the author fixed promptly. Thanks!
2013: https://news.ycombinator.com/item?id=6641117
> One may wonder why such an "obviously" utopian approach has not been generally adopted already. I suspect the root cause ... is our universal preoccupation with BNF grammars and their various offspring...
If you have a JVM installed, you could use oberonc[0]. I have a local branch where I test that each release of the compiler can compile and run the examples in that book.
I guess what I'm asking is if Oberon-0 is a subset of Oberon-7, which oberonc seems to implement. Do you think it is possible to implement Oberon-0 in itself ?
Oberon-0 is too limited to easily bootstrap itself. I wrote oberonc first in Java and then I rewrote it in Oberon-07 for the final bootstrap step. Oberon-0 is a toy subset of the full Oberon-07 language.
I can push the changes in a repo if you are interested.
Thanks. That would be great for the people that want to follow the Compiler Construction book. (Thanks for posting the link for the 2017 version) Oberon-0 is a toy subset of the full Oberon-07 language.
So I can write small Oberon-0 programs and try these using Oberon-07.Yes, you can write small Oberon-0 programs and compile them with an Oberon-07 compiler, but it is simpler to just use the Oberon-0 compiler from the repo above.
A proposed adhoc parser without an intermediate representation is a sure way to create an unnecessary mess in reader's head. Somewhat understandable given the technical limitations of those days, but still the authors could do a better job there.
Dragon Book (Compilers: Principles, Techniques, and Tools) and "Compiler Construction" by Niklaus Wirth are much more sensible choices.