雪花新闻

编译器跨平台实现 和 自然语言翻译

摘要:在阅读 编译原理相关书籍时,意识到编译器设计本质上是语言翻译的简化问题。假设发明了一个新的语言X, 我们要设计一个用X语言书写的,并可以编译X语言文件的编译器C for 计算机A 做C X XA。

在阅读 编译原理相关书籍时,意识到编译器设计本质上是语言翻译的简化问题; 我们把高级语言书写的代码,通过编译器 + 解释器 的过程 变成计算机可以理解的机器码;就是相当于把一段文字翻译给一个外国人听;当然编译器的翻译工作要比自然翻译的过程简单很多;但是设计思想可以借鉴;

现在选取一个角度,来思考一些问题;

一个由语言L编写的,将语言X程序文件翻译成语言Y程序文件的翻译程序称为编译器,记作C L XY

编译器应该选择什么语言来实现呢?假设没有任何前人的工作,那必须用汇编写一套编译器去编译高级语言,编译器毫无疑问是一项复杂的工作的,用汇编这种低级语言去直接实现它,基本上是一个难到无法发成的工作;这是一个核心问题,汇编实现编译器这种复杂软件难度太大!

先放下上面的问题稍后再说,假设已经历经千辛万苦实现了一个 L --> A的编译器C A LA ;我们来思考下面2个问题;

现在再回答一开始的问题,如何实现一个编译器L-->A,直接用汇编简直难到不可能;

其实Case 1已经给出了这个问题的一个方案; 递归分解 ;

使用编译器自举的优势就不深入分析,毕竟未来用到的机会不多;我们的核心是要理解这种思想;

接下来在进一步思考

相关文章