你如何为该语言的语言编写编译器?

jer*_*son 11 ruby compiler-construction bootstrapping rubinius

可能的重复:
如何用该语言编写语言的编译器?
在"本身"中实现编译器

我在看Rubinius,这是一个使用Ruby编写的编译器编译成字节码的Ruby实现.我无法理解这一点.你如何编写语言本身的语言编译器?似乎只是文本没有任何东西可以将它编译成可执行文件,然后可以编译用Ruby编写的未来代码.我只是输入那句话感到困惑.有人可以帮忙解释一下吗?

Pis*_*3.0 17

为简化起见:您首先使用不同的语言为编译器编写编译器.然后,你编译编译器,瞧!

所以,你需要某种已经有编译器的语言 - 但是由于有很多这样的语言,你可以编写Ruby编译器编译器(!),例如在C中,然后编译Ruby编译器,然后可以编译Ruby程序,甚至更多版本的自己.

当然,最初的编译器是用机器代码编写的,编译后的编译器用于汇编,后者编译编译器,例如C或Fortran,编译编译器......几乎所有东西.行动中的迭代开发.

这个过程被称为引导 - 可能以Baron Munchhausen的故事命名,在这个故事中,他通过自己的引导将自己从沼泽中拉出来:)