fro*_*die 20 compiler-construction recursion bootstrapping
可能重复:
在"本身"中实现编译器
引导语言
如何使用与编写该编译器的语言相同的语言编写编译器?那不是那种递归吗?
编辑:这可能会被删除,但否则......:
如何引导:
为什么要引导:
Mic*_*zek 30
通常,编译器的第一个版本是用不同的语言编写的,然后每个后续版本都用该语言编写,并使用旧版本编译.一旦您x使用版本编译版本x-1,您就可以使用新构建的版本x重新编译自己,利用版本引入的任何新优化; GCC以这种方式发布它的版本
pli*_*nth 13
它是.您通常需要从另一种语言编译或解释的语言的引导版本.
几年前,我读了一篇Pascal编译器作为研究生项目编写的历史.它用Pascal编写,并使用系统内置的Pascal编译器进行编译.最终,它足以取代系统内置的Pascal编译器.不幸的是,他们在代码生成中发现了一个错误,但代码生成器的修复程序触发了编译器中的错误,生成了错误的编译器.要修复它,需要从已安装的编译器手动修补二进制文件,然后将修补程序应用于源代码以替换自身.
对于第一个版本来说,这只是一个问题.一旦我有V1.0的编译器工作,我可以用我的语言编写V2.0并使用V1.0编译器进行编译.然后我可以编写V3.0并使用V2.0编译,使用V3.0编译V4.0等.
| 归档时间: |
|
| 查看次数: |
8493 次 |
| 最近记录: |