This is a collection of writing aimed at three topics:

  1. What is a compiler, and why should I care? (Non-technical)
  2. How does the compiler I wrote work? How do real compilers tackle these problems? (Technical)
  3. What even is the ‘Gallium’ language? (Technical)

These are covered by the three collections of articles.

Crash Course

This covers the first question in a non-technical and completely introductory manner.

It should be very approachable, and is a good starting place if you have no idea what’s going for any of this project.

Compiler Design

This covers the design of the compiler that I wrote, and other potential choices that could be taken.

This is aimed at people with a decent understanding of the topic area, and at the very least assumes that you know general programming principles, know how to Google terms you don’t recognize, and have read the “Crash Course” collection and understand it decently well.

Gallium Language

This is the best reference for the language that I created (besides the reference that’s in my head), it’s a best-effort series of documents. Details may not be covered, and the best way to actually learn about the language is to read that basic outline and just try it out with the compiler.