小编典典

编译器如何编译自己?

all

我正在网站http://coffeescript.org/上研究 CoffeeScript
,它有文字

CoffeeScript 编译器本身是用 CoffeeScript 编写的

编译器如何编译自己,或者这个语句是什么意思?


阅读 55

收藏
2022-08-15

共1个答案

小编典典

编译器的第一版不能由特定于它的编程语言机器生成;你的困惑是可以理解的。第一个编译器可以构建具有更多语言功能的更高版本的编译器(用新语言的第一个版本重写源代码)。然后该版本可以编译下一个编译器,依此类推。这是一个例子:

  1. 第一个 CoffeeScript 编译器是用 Ruby 编写的,产生了 CoffeeScript 的版本 1
  2. 在 CoffeeScript 1 中重写了 CS 编译器的源代码
  3. 原始 CS 编译器将新代码(用 CS 1 编写)编译成版本 2 的编译器
  4. 对编译器源代码进行了更改以添加新的语言功能
  5. 第二个 CS 编译器(第一个用 CS 写的)将修改后的新源代码编译成版本 3 的编译器
  6. 对每次迭代重复步骤 4 和 5

注意:我不确定 CoffeeScript 版本的编号方式,这只是一个示例。

这个过程通常称为引导。引导编译器的另一个例子是Rust
语言
rustc的编译器。

2022-08-15