- 3
- 0
- 约1.8千字
- 约 3页
- 2017-09-02 发布于浙江
- 举报
经验分享学习编译原理的几点建议
经验分享:学习编译原理的几点建议
编译原理一般认为是较难的一门课。从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人甚至说它是大本软件里最难的一门;有人抱怨国内的编译教材没有一本容易懂的 从笔者学习实践来看,第一次学了一个多月,理论部分一知半解,第二次学了一星期,基本看懂词法分析的理论部分,语法分析就一知半解了,第三次学了一星期,才基本看懂词法分析和语法分析。由此看来,这门课确实有难度。网上有的帖子,把编译器的编写搞得高深莫测一般,似乎难度极大,非常人能及
?笔者的体会,主要在这几点:
1、错误认识: 很多人以为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高。而且可能觉得写编译器就必须完全手工来写。
2、自动机理论: 象NFA,DFA之类,比较抽象,要费些脑子,特别如果学离散数学时没有学自动机理论的话,更是需要多花点时间。
3、集合论的推演: 主要是一些闭包运算之类,数学基础不好的话,学起来也会感到吃力。
4、LR文法: 主要是又引入了自动机
龙书也不例外,都要涉及到这几个难点。由于这些内容本身不好懂,作者有再大的本事,也很难把书写得象小说那么流畅好懂。
:
1、端正认识: HTML文件转化为纯文本,利用编译原理来实现非常简单。理解了编译原理的实用性,大概可以提高学习兴趣。
2、反复看书: 这个办法看起来最笨,却是基本的方法。忘了是哪位名人说过,书只要多看,总能看得懂的。
3、结合源码来看: 这是经典教材Compiler Design in C的作者Allen Hollub建议的方法。这本教材的特色就是包含了大段yacc,lex的代码。这也是个好方法,而且,只有看懂了代码,才能说在根本上理解了理论。当然,要完全看懂yacc的代码,工作量是很大的,而且同样要先理解理论。
4、删繁就简,避重就轻。网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)就基本是这种思路,对于词法分析,作者避免了自动机理论和集合论推演的介绍,直接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和LL文法及相应的源码,而对LR文法,只说理解理论就可以了。虽然这种方法回避了对于难点的学习,但是用这种方法学习,可以在较短时间内编写出一个能够运行的词法和语法分析器,可以大大提高学习积极性。
笔者的思路大体上类似第4种方法,但也稍有不同。由于一个偶然的原因, PCCTS的编译器自动生成工具开发的,大受启发。开源就是好!笔者找来了一个叫做ANTLR的工具(它是PCCTS的新版,支持生成java,c++和c#代码),又下载了一个言的语法文件(因为笔者需要处理c代码文件),然后自己编了少量动作(action)语句,界面代码,分析处理代码等,就这样,在对编译原理所知甚少(以前学过的因为理解不深都忘了,只记得正则表达式)的情况下,仅用一个星期就写出了程序。
:
1、先利用ANTLR之类的编译器生成工具,做一个小程序(如上面提到的HTML文件转化成纯文本文件的程序),所需知识只是正则表达式的基本知识和生成工具本身的使用方法(可以看联机帮助和网上教程(tutorial)来掌握)。 :
1)可以体会到编译原理的实用性,提高学习兴趣
2)入门容易,消除编译原理学习的畏难情绪。
3)获得词法分析器和语法分析器的感性认识,有利于加深对理论的理解。
4)获得编译器自动生成工具(compiler compiler)的使用经验,提高解决实际问题的能力。(实际工作很多都不是手编而是利用工具的)
2、象ANTLR之类的工具是开源(open source)的,可研究其源码,以便必要时自己手编分析程序。
3、回过头来看编译原理教材。 这时大概会发现,很多理论很容易懂,剩下的只有上面说的几个难点,多看几遍,重点突破。
4、结合教材所附源码,进一步加深对教材的理解
ANTLR的实现机制和Lex是不同的(当然和java与c的差异有关),可对照着看。VC++时,深切体会到好教材的重要。笔者开始吃了劣质光盘版教材和21天学VC++的祸害,看了一个月还如入云雾之中,后来看了《VC++技术内幕》,方才豁然开朗。但是编译原理的教材却似乎质量相差不是特别大,关键还在于合适的方法。以上方法笔者也是误打误撞总结出来的,希望有所参考价值。
您可能关注的文档
最近下载
- SYT 5069-2017 石油天然气工业 钻井和采油设备 管柱类落物打捞工具.docx VIP
- WF-007A多功能自动氩弧填丝机使用说明书7.pdf VIP
- SYT 5496-2017 石油天然气工业 钻井和采油设备 震击器及加速器.pdf VIP
- 2025年烟花爆竹经营企业(包括批发和零售企业)安全检查表.pdf VIP
- 2025至2030药用真菌行业调研及市场前景预测评估报告.docx VIP
- SYT 5382-2009 钻井液固相含量测定仪.docx VIP
- 《消毒供应质量控制指标(2024年版)》.docx VIP
- 股市主力操盘盘 口摩斯密码(原创内容,侵权必究).pptx
- 2012下半年深圳市机关公开招考公务员职位表.doc VIP
- 国际期刊科技论文写作与发表.PDF VIP
原创力文档

文档评论(0)