【发布时间】:2018-04-05 19:15:24
【问题描述】:
我阅读了有关引导的信息,但还没有完全理解。 我想解释一下我是如何看待它的,如果它不是真的,你会指出。 为了创建一个可以自行编译的编译器,它应该遵循以下步骤:
假设有 X 和 Y 编程语言。
- 将编译器 f 从 X 语言写入 Y。对于 Y 中的每个代码 A,编译器都会给出 f(A)。
- 从 Y 到 Y 编写一个编译器 g。因为编译器 g 是用 Y 语言编写的,所以编译器 f 可以编译它。因此,我们可以理解 f(c)=g 是一个从 Y 到 Y 的编译器。
- 您可以再次使用 g 编译 C,然后使用 g(C)=g - 编译器自行编译。
我觉得我的解释缺少重要的细节。
如果有人能像我尝试做的那样用数学符号解释,我会很高兴。
【问题讨论】:
-
我对您对“from”和“to”的使用感到困惑。我觉得其中一个介词应该改为“in”。从 Y 到 Y 的编译器并没有真正的意义(除非 Y 是 JavaScript,我想)——那只是身份函数。从 Y 到 Z 的编译器(例如 Assembly)in Y 会更有意义。
-
此链接指向构建自编译编译器的完整描述和个人经验(您的!)。没有什么比做一次更能真正理解它了。 stackoverflow.com/a/7375884/120163
标签: compiler-construction bootstrapping