为新语言编写bootstrapping编译器的最初步骤是什么?

Sur*_*rya 4 compiler-construction

假设你正在为一种新语言创建一个编译器,比如Big-Lang.如果你要为Big-Lang引导编译器,你可以为Big-Lang-lite编写一个编译器,Big-Lang-lite是Big-Lang中最小的子集.现在,我想知道Big-Lang-lite的编译器可以用Big-Lang编写,或者如果我们要编写一个bootstrap编译器,我们将不得不使用其他语言?

Dan*_*zer 8

这是引导皮带的常用方法.

  1. 设计语言X.
  2. 用不同语言编写X内核的编译器.
  3. 在X的内核中编写X内核的编译器
  4. 使用2中的编译器从3.编译编译器.(您主要是自举)
  5. 在内核X中编写完整的X编译器
  6. 用3编译编译器.
  7. 你被引导了!

从技术上讲,您可以跳过内核语言并只实现完整语言.我不推荐这个,因为它通常较慢(按数量级)