该本书的第2章读起来真的让人痛不欲生,太晦涩!如果不是看到这里其它读者的评论,没准儿我就放弃读这本书。理论知识讲的很深奥,无相关基础者勿入。现在开始读第3章,明显感觉理解起来相对容易很多。最近在做这方面的相关工作,这个大块头一定要拿下!
编译原理第二章终于看完了,说实话,我看了这么久的英文原版书,这一章是最难看的了。自学起来看了很多也不知所云,现在回想起来,他大概是粗略的介绍了一个叫“语义导向的翻译器”,但是看的时候需要前前后后反反复复考虑很多遍才明白什么是”语义导向”syntax -directed translator 和正常的translator。还有,很难理解所谓的translator scheme,什么是“语义导向的”scheme和正常的scheme?
看到后面,有一个事情更不明白,书中80页有个叫string table的东西,后面没几页就来了个symbol table。作者完全没有交待这两个东西之间的关系,我也很不明白,好像symbol table里面完全涵盖了string table。上网查也是没有string table 和symbol table 的对比,以至于看到后来越来越不知所云,所以现在我只能假定symbol table就是前面所说的string table 的具体实例,书中实际上是术语混乱了,不知道我理解的对不对,还盼高人指点。
第二章的结构也有些问题,不吐不快。本来明明是先从词法分析开始,作者为什么偏偏把词法分析放到第二章的中间偏后呢?先讲讲语法(grammar)确实有必要,但是太抽象,理解起来偏困难。因为想到解析语言第一个想到的肯定是我怎么去把一个单词解释成能识别的单元吧?就好比跟一个新人讲解开车,一上来就讲交通规则固然不错,但是好歹先教教我怎么启动怎么挂档踩油门呀!
后面解析(parsing)树和语法树也看得云里雾里,作者给了很多种解析方式,又造了很多树,后来说这些树都不行,用不上,直接就可以生成3-address-code,但是好像他又是不知到怎么遍历了语法树以后生成的中间代码。
还有左右循环?(left/right recursion),看到目前也没明白是什么,他说提供了个解决方法,我也没看懂。
总之,我觉得要看完这第二章,绝对需要很强的意志力,记忆力,上下文求索的能力,我觉得这本书虽说是经典,但是读起来还是太晦涩了,希望作者能考虑考虑,换一种更能让人接受的方式进行讲解。
就这样,连蒙带猜的终于看完了第二章,刚开始看第三章,发现语句通顺多了。希望前面不明白的可以在这里得到印证。