编译器编写之旅
github.com/DoctorWkt/acwj
“在这个 Github 仓库中,我记录了自己为 C 语言的一个子集编写一个自编译编译器的过程。我也会详细写出每一步的细节,以便如果你愿意跟随这个过程,将会有对我所做内容、原因以及一些与编译器理论相关参考的解释。
不需要太多理论,我希望这是一次实践之旅。
以下是我为这次旅程设定的目标:
编写一个自编译的编译器。我认为,如果一个编译器能够编译自身,它就有资格称自己为真正的编译器。
至少针对一个真实的硬件平台。我见过一些编译器会为目标机器生成代码,但那些机器只是假设存在的。我希望我的编译器能够在真实的硬件上运行。此外,如果可能的话,我希望能编写这个编译器,使其支持多个后端以适配不同的硬件平台。
实践先于研究。在编译器领域有很多研究。我希望从零开始这段旅程,因此我会倾向于采用实践的方法,而不是以理论为主的方法。 话虽如此,有时候我也会需要介绍(并实现)一些基于理论的内容。
遵循 KISS 原则:保持简洁,傻瓜!我肯定会采用肯·汤普逊(Ken Thompson)的原理:“遇到疑问时,使用暴力解法。”
通过许多小步骤来达成最终目标。我会把整个旅程分成很多简单的步骤,而不是采取大的飞跃。这样可以让编译器的每一个新增功能都变得小巧而易于理解。
”
AI创造营