From Dave Winer's discussion of bootstrapping and Web 2.0 technologies:
One of the spookiest bootstraps is the process of writing a Pascal compiler (or any language, nothing special about Pascal). You start by writing a very simple compiler in assembly language. Get it working with some sample programs, then start writing a new Pascal compiler, in Pascal, and compile it with your compiler written assembly language. Keep working on it until you have enough features to comple the compiler with itself. Then you can throw out the assembly language one. That story really spooks people, but swear to god, that's how compilers are built.