I wrote a simple self-hosting compiler to showcase Niklaus Wirth's approach to writing compilers: https://github.com/lboasso/oberonc

Single pass compilers have their advantages.

"The School of Niklaus Wirth" [0] contains this essay and many others on how simplicity can be an essential quality of a system. I vastly under appreciated how well Wirthian languages are designed, even after toying with the excellent offshoot, Modula3 [1]. In my youth I was too concerned with raw performance and syntax. In my old age I am concerned about semantics and maintainability.

[0] https://www.amazon.com/School-Niklaus-Wirth-Art-Simplicity/d...

[1] https://github.com/modula3/cm3