前言
新兴语言井喷,实际上都是踩在前辈肩膀上进行功能特化的结果,本系列从编译的角度找到语言的共性和不同语言的联系。
编译器是将源语言(通常指高级语言)转换成目标语言的程序,这个程序也是由某种语言写成并运行的。通常我们希望一个语言的编译器能够运行在裸机上而不依赖其他编译器才能运行,即机器语言。但直接用机器语言实现编译器实在太过麻烦,可以通过自展法一步步简化编写。
一个由语言L编写的,将语言X程序文件翻译成语言Y程序文件的翻译程序称为编译器,记作
自展法
直接用语言A(assembly)完成的全部内容可能比较复杂。现在考虑到一个特点:
一个语言L本身是可分割的,内部可以再抽出多层作为单独的语言,比如L1,L2,L3……,L1是整个L的核心,可以编写出等价的L2实现的功能,L1(和L2)可以编写出L3实现的功能,如此递归地包裹多层最后构成整个L。
实现前,可以单独先实现,然后