<p>I've heard of the idea of bootstrapping a language, that is, writing a compiler/interpreter for the language in itself.  I was wondering how this could be accomplished and looked around a bit, and saw someone say that it could only be done by either</p>

<ul>
<li>writing an initial compiler in a different language.</li>
<li>hand-coding an initial compiler in Assembly, which seems like a special case of the first</li>
</ul>

<p>To me, neither of these seem to actually be <em>bootstrapping</em> a language in the sense that they both require outside support.  Is there a way to actually write a compiler in its own language?</p>

The way I've heard of is to write an extremely limited compiler in another language, then use that to compile a more complicated version, written in the new language. This second version can then be used to compile itself, and the next version. Each time it is compiled the last version is used.
This is the definition of
bootstrapping:
the process of a simple system activating a more complicated system that serves the same purpose.
EDIT: The
Wikipedia article on compiler bootstrapping
covers the concept better than me.