用自己的语言编写编译器

用自己的语言编写编译器

直观地说,似乎语言的编译器Foo本身不能用Foo编写。更具体地说,语言的第一个编译器Foo不能用Foo编写,但可以编写任何后续的编译器Foo

但这是真的吗?我对一种语言的阅读非常模糊,这种语言的第一个编译器是用“本身”编写的。这是可能的,如果是这样的话怎么样?


一只萌萌小番薯
浏览 599回答 3
3回答

慕斯王

为先前的答案添加好奇心。这里引用了Linux From Scratch手册,其中一个开始从源代码开始构建GCC编译器。(Linux From Scratch是一种安装Linux的方法,与安装发行版完全不同,因为你必须编译目标系统的每一个二进制文件。)make bootstrap'bootstrap'目标不只是编译GCC,而是编译几次。它使用第一轮编译的程序第二次编译自己,然后第三次编译。然后它比较这些第二和第三个编译,以确保它可以完美地再现自己。这也意味着它被正确编译。使用'bootstrap'目标的动机是,用于构建目标系统的工具链的编译器可能没有与目标编译器完全相同的版本。以这种方式进行,确保在目标系统中获得可以自己编译的编译器。
打开App,查看更多内容
随时随地看视频慕课网APP