Yan*_*Yin 3 language-agnostic compiler-construction bootstrapping interpreter
我们知道,可以使用称为引导程序的技巧以自己的语言编写编译器。我的问题是,这个技巧是否也可以应用于口译人员?
从理论上讲,答案肯定是肯定的,但是人们担心,随着迭代的进行,对源代码的解释将变得越来越低效。那会是一个严重的问题吗?
我正在引导一个非常动态的系统,在该系统中程序将不断变化,因此它排除了编译器。
让我这样写出来:
让我成为口译员。
假设L是编程语言。
我们上面不需要任何编译器,只需解释器。对?
这可能是低效的。这是我的问题,如果确实效率低下,该如何克服。
那没有道理。解释器不会生成二进制文件,因此无法创建可以独立运行的文件。最终,您需要在某个地方有一个二进制文件作为解释程序。
编译器引导示例。假设我们有两种语言A(ssembler)和C。我们想引导用C编写的C编译器。但是,我们只有一个汇编器开始。
以后的跑步变得公正
现在,假设您使用一种解释语言,我将其称为Y。第一个版本可以称为Y1,下一个版本可以称为Y2,依此类推。让我们尝试“引导”它。
首先,我们没有什么可以解释Y程序的东西,我们需要编写一个基本的解释器。假设我们有一个C编译器,并用C编写了一个Y1解释器。
问题在于,您将永远无法逃脱解释器堆栈,因为您永远不会编译更高级别的解释器。因此,您始终需要编译并运行用C编写的第一个版本解释器。您永远无法逃脱它,我认为这是编译器引导过程的基本要点。这就是为什么我说你的问题没有道理的原因。
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |