我听说过引导语言的想法,即为语言本身编写编译器/解释器。我想知道这是如何完成的,环顾四周,看到有人说这只能由任何一个来完成
对我来说,从它们都需要外部支持的意义上说,这些似乎都不是真正引导一种语言。有没有办法用自己的语言实际编写编译器?
最佳答案
Is there a way to actually write a compiler in its own language?
你必须有一些现有的语言来编写你的新编译器。如果你正在编写一个新的,比如 C++ 编译器,你只需用 C++ 编写它,然后先用现有的编译器编译它。另一方面,如果您要为一种新语言创建编译器,我们称之为 Yazzleof,您需要先用另一种语言编写新编译器。通常,这将是另一种编程语言,但并非必须如此。它可以是汇编代码,也可以是机器代码(如有必要)。
如果您要为 Yazzleof 引导编译器,通常最初不会为完整语言编写编译器。相反,您将为 Yazzle-lite 编写一个编译器,它是 Yazzleof 的最小可能子集(好吧,至少是一个非常小的子集)。然后在 Yazzle-lite 中,您将为完整语言编写一个编译器。 (显然,这可以迭代发生,而不是一次跳转。)因为 Yazzle-lite 是 Yazzleof 的一个适当子集,所以您现在有一个可以自行编译的编译器。
有一篇关于从尽可能低的级别引导编译器(在现代机器上基本上是十六进制编辑器)的文章非常好,标题为从无到有引导一个简单的编译器。可以在 https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html 找到它.
关于compiler-construction - 引导仍然需要外部支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665308/