- 东南大学-编译原理01
- 东南大学-编译原理02
- 东南大学-编译原理03
- 东南大学-编译原理04
- 东南大学-编译原理05
- 东南大学-编译原理06
- 东南大学-编译原理07
- 东南大学-编译原理09
- 东南大学-编译原理10
- 东南大学-编译原理11
- 东南大学-编译原理12
- 东南大学-编译原理13
- 东南大学-编译原理15
- 东南大学-编译原理16
- 东南大学-编译原理18
- 东南大学-编译原理19
- 东南大学-编译原理20
- 东南大学-编译原理21
- 东南大学-编译原理22
- 东南大学-编译原理23
- 东南大学-编译原理24
- 东南大学-编译原理25
- 东南大学-编译原理26
- 东南大学-编译原理27
- 东南大学-编译原理28
- 东南大学-编译原理29
- 东南大学-编译原理30
- 东南大学-编译原理31
- 东南大学-编译原理32
- 东南大学-编译原理35
- 东南大学-编译原理36
- 东南大学-编译原理37
- 东南大学-编译原理38
- 东南大学-编译原理39
- 东南大学-编译原理40
- 东南大学-编译原理41
- 东南大学-编译原理42
- 东南大学-编译原理43
- 东南大学-编译原理44
- 东南大学-编译原理45
- 东南大学-编译原理46
- 东南大学-编译原理47
- 东南大学-编译原理48
- 东南大学-编译原理49
- 东南大学-编译原理50
- 东南大学-编译原理51
- 东南大学-编译原理52
- 东南大学-编译原理53
- 东南大学-编译原理54
- 东南大学-编译原理55
- 东南大学-编译原理56
- 东南大学-编译原理57
- 东南大学-编译原理58
- 东南大学-编译原理59
- 东南大学-编译原理60
- 东南大学-编译原理61
- 东南大学-编译原理62
- 东南大学-编译原理63
- 东南大学-编译原理64
编译原理一般认为是较难的一门课.从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人甚至说它是大本软件课程里最难的一门;有人抱怨国内的编译教材没有一本容易懂的。 从笔者学习实践来看,第一次学了一个多月,理论部分一知半解,第二次学了一星期,基本看懂词法分析的理论部分,语法分析就一知半解了,第三次学了一星期,才基本看懂词法分析和语法分析.由此看来,这门课确实有难度.网上有的帖子,把编译器的编写搞得高深莫测一般,似乎难度极大,非常人能及. 编译原理究竟难在哪里?笔者的体会,主要在这几点: 1.错误认识: 很多人以为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高.而且可能觉得写编译器就必须完全手工来写. 2.自动机理论: 象NFA,DFA之类,比较抽象,要费些脑子,特别如果学离散数学时没有学自动机理论的话,更是需要多花点时间. 3.集合论的推演: 主要是一些闭包运算之类,数学基础不好的话,学起来也会感到吃力. 4.LR文法: 主要是又引入了自动机 不管哪本编译教材,即使是绝对经典”龙书”也不例外,都要涉及到这几个难点.由于这些内容本身不好懂,作者有再大的本事,也很难把书写得象小说那么流畅好懂. 明确了难点,接着想对策.大致有这么几种: 1.端正认识: 编译原理在静态文本处理上有广泛的应用,举个简单的例子,把HTML文件转化为纯文本,利用编译原理来实现”非常”简单.理解了编译原理的实用性,大概可以提高学习兴趣. 2.反复看书: 这个办法看起来最笨,却是基本的方法.忘了是哪位名人说过,书只要多看,总能看得懂的. 3.结合源码来看: 这是经典教材Compiler Design in C的作者Allen Hollub建议的方法.这本教材的特色就是包含了大段yacc,lex的代码.这也是个好方法,而且,只有看懂了代码,才能说在根本上理解了理论.当然,要完全看懂yacc的代码,工作量是很大的,而且同样要先理解理论. 4.删繁就简,避重就轻.网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)就基本是这种思路,对于词法分析,作者避免了自动机理论和集合论推演的介绍,直接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和LL文法及相应的源码,而对LR文法,只说”理解理论就可以了”.虽然这种方法回避了对于难点的学习,但是用这种方法学习,可以在较短时间内编写出一个能够运行的词法分析器和语法分析器,可以大大提高学习积极性.