Let's write a compiler, part 1: Introduction, selecting a language, and doing some planning

Before we get started, I want to make it clear that will we not be producing an incredibly complex compiler using state-of-the-art techniques. Nor will we be diving headfirst into compiler theory. Instead, much like our assembler, we will produce a "good enough" compiler using basic techniques. This blog series is a hands-on practical guide to creating your first compiler. Once you've mastered this compiler you can expand your horizons and begin to incorporate further enhancements to it, to all the difference pieces of the compiler. We will be writing a single-pass compiler for a simple language and immediately output our final output code as soon as our compiler has enough information to do so. That strategy is good enough for Turbo Pascal, so it's good enough for me.