为什么C语言编译器能用C语言编写?( 四 )
在C1的基础上设计C语言的又一个子集C2语言 , C2语言比C1复杂 , 但是仍然不是完整的C语言 , 开发出C2语言的编译器……如此直到CN , CN已经足够强大了 , 这时候就足够开发出完整的C语言编译器的实现了 。
至于这里的N是多少 , 这取决于你的目标语言(这里是C语言)的复杂程度和程序员的编程能力 。
那么这种大胆的子集简化的方法 , 又有什么理论依据呢?
先介绍一个概念 , “自编译”Self-Compile 。
对于某些具有明显自举(不知道哪个鬼才起的名字)性质的强类型编程语言
可以借助它们的一个有限小子集
通过有限次数的递推来实现对它们自身的表述
(所谓强类型就是程序中的每个变量必须声明类型后才能使用 , 比如C语言 , 相反有些脚本语言则根本没有类型这一说法比如python 。 )
满足自编译这样的语言有C、Pascal、Ada等等 , 至于为什么可以自编译 , 可以参见清华大学出版社的《编译原理》 , 书中实现了一个Pascal的子集的编译器 。
推荐阅读
- 魔兽世界|魔兽TBC:为什么玩家期待跨区组队?降低组队难度,无需频繁换区
- 李儒|三国杀:为什么叫李儒时代的骄傲,他到底有什么好骄傲的?厉害吗
- 池子|“为什么优菈总是在让人始料未及的版本到来?我还没准备好呀!”
- fpx战队|为什么同样是S赛夺冠,FPX的热度,完全没法跟IG与EDG相比?
- 王者荣耀|王者荣耀为什么要出限定皮肤?看完你就明白了
- 手机游戏|CFHD:神秘组织为什么开发生化手雷呢?关键是为了赚更多钱
- 打野|王者荣耀:不管什么打野都出一件肉装,李白都出暴裂,为什么?
- 抖音|正在火热追我的富二代,在得知我生日后突然消失不见,到底为什么
- |为什么很多人都说剑圣JUGG是伪核,后期能力不行!
- steam|原神:常驻五星废弃率排名,为什么大家越来越在乎“强度”了