How can a C compiler be written in C? [duplicate]

It’s called Bootstrapping, quoting from Wikipedia:

If one needs a compiler for language X to obtain a compiler for language X (which is written in language X), how did the first compiler get written? Possible methods to solving this chicken or the egg problem include:

  1. Implementing an interpreter or compiler for language X in language
    Y. Niklaus Wirth reported that he wrote the first Pascal compiler in
    Fortran.
  2. Another interpreter or compiler for X has already been written in
    another language Y; this is how Scheme is often bootstrapped.
  3. Earlier versions of the compiler were written in a subset of X for
    which there existed some other compiler; this is how some supersets
    of Java, Haskell, and the initial Free Pascal compiler are
    bootstrapped.
  4. The compiler for X is cross compiled from another architecture where
    there exists a compiler for X; this is how compilers for C are
    usually ported to other platforms. Also this is the method used for
    Free Pascal after the initial bootstrap.
  5. Writing the compiler in X; then hand-compiling it from source (most
    likely in a non-optimized way) and running that on the code to get
    an optimized compiler. Donald Knuth used this for his WEB literate
    programming system.

And if you are interested, here is Dennis Richie’s first C compiler source.

Leave a Comment