开始读Compiler Design In C

    技术2022-05-11  6

    我承认,我是墙头草,随着牛人口风倒。SD Times上登了Allen Holub颇有争议的文章,说不知道怎么写编译器的程序员不过是叶公好龙式的票友。我也不知道怎么写一个编译器。 学校学的编译原理除了一些基本理论外其它早就还给老师了。当年用作教材的Crafting A Compiler With C从来没有读完过。惭愧啊,惭愧。自己原来还在叶公好龙的层次上。嗯,羞愧之下,退而结网。前两天订的龙书第二版还没到。再说我学的理论够多了。现下需要会写编译器,不是会吹。公司图书馆里的Crafting A Compiler With C烂得要死,也不知道被哪些变态翻过。想了想,屁颠屁颠地到图书馆把Allen自己的Compiler Design In C借了出来。这本书依照龙书的体例,但弱化理论而强调编译器的具体实现。书中讲解了完整的lex和yacc的实现代码,以及一个不带浮点计算的ANSI C编译器的实现。Allen在前言里提及代码能帮助人理解理论,而且实现具体的代码也能帮助人深刻地理解理论。我刚好也是这种人:非得先感性再理性。 计划一边读这本书,一边翻新到的龙书作为补充。书很厚,900来页。一天10页的话,要三个月才能读完。看看这次能不能坚持下来。

    P.S., 刚翻了两页。书是1990前写的。作者读者用的编译器要支持unsigned char,要支持长度为16个字符的变量名。要代码可以给他写信,记住说明是5寸盘还是3寸盘。作者还说,他故意使用老的C语法,func(arg1, arg2)char *arg1; char *arg2; 因为很多编译器还不支持新的(!)func(char *arg1, char *arg2) 。不过还好,读了莱昂氏后对传统的K&R语法也习惯了。恍惚间回到遥不可及的过去。那时我还是个小P孩儿,成天读《少年科学画报》,觉得电脑神秘难测,高不可攀。。。

    P.P.S, 学这个东西和职业发展无关。反正多半没有机会深入编译后台和语言设计。想写上几个编译器,纯粹因为编程和看A片一样,要"hardcore"才有趣味。


    最新回复(0)