[精品]少走弯路学习编译原理的相关建议.doc

[精品]少走弯路学习编译原理的相关建议.doc

ID:53056116

大小:62.00 KB

页数:2页

时间:2020-04-01

[精品]少走弯路学习编译原理的相关建议.doc_第1页
[精品]少走弯路学习编译原理的相关建议.doc_第2页
资源描述:

《[精品]少走弯路学习编译原理的相关建议.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、少走弯路:学习编译原理的相关建议2005年04月13U作者:hzzasdf责任编辑:linjixiong文章导读:编译原理一般认为是较难的一门课.从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人英至说它是大本软件课稈里最难的一门;有人抱怨国内的编译教材没有一本容易懂的。编译原理一般认为是较难的一门课.从网上的评论來看,有人说学了一年半软件理论,就一门编译看不懂;有人共至说它是大木软件课程里最难的一门;有人抱怨国内的编译教材没有一木容易懂的。从笔者学习实践来看,第一次学了一个多月,理

2、论部分一知半解,第二次学了一星期,基木看懂词法分析的理论部分,语法分析就一知半解了,第三次学了一星期,才基木看懂词法分析和语法分析.由此看来,这门课确实有难度.网上有的帖子,把编译器的编写搞得高深莫测一般,似乎难度极大,非常人能及.编译原理究竟难在哪里?笔者的体会,主要在这几点:1•错谋认识:很多人以为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高.而且可能觉得写编译器就必须完全手工来写.2.H动机理论:象NFA,DFAZ类,比较抽象,要费些脑了,特别如果学离散数学时没有学自动机

3、理论的话,更是需要多花点时间.3.集合论的推演:主要是一些闭包运算Z类,数学基础不好的话,学起来也会感到吃力.4.LR文法:主要是又引入了自动机不管哪木编译教材,即使是绝对经典”龙书”也不例外,部要涉及到这几个难点.由于这些内容木身不好怫,作者有再大的木事,也很难把书写得象小说那么流畅好懂.明确了难点,接着想对策•大致有这么儿种:1•端正认识:编译原理在静态文本处理上有广泛的应用,举个简单的例了,把HTML文件转化为纯文木,利用编译原理来实现”非常”简单•理解了编译原理的实用性,大概可以提高学习兴趣

4、.2.反复看书:这个办法看起来最笨,却是基木的方法.忘了是哪位名人说过,书只要多看,总能看得怫的.3.结合源码来看:这是经典教材CompilerDesigninC的作者AllenHollub建议的方法.这木教材的特色就是包含了大段yacc,lex的代码.这也是个好方法,而且,只有看懂了代码,才能说在根本上理解了理论.当然,要完全看懂yacc的代码,工作最是很大的,而且同样要先理解理论.4.删繁就简,避重就轻.网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)就基木是这种思路,对于词法分析,作

5、者避免了H动机理论和集合论推演的介绍,頁接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和LL文法及相应的源码,而对LR文法,只说”理解理论就可以了”.虽然这种方法冋避了对于难点的学习,但是用这种方法学习,可以在较短时间内编写出一个能够运行的词法分析器和语法分析器,可以大大提高学习积极性.笔者的思路大体上类似第4种方法,但也稍有不同.由于一个偶然的原因,笔者需要编写一个词法分析器和语法分析器,用于程序源代码的静态分析•开始无从下手,硬着头皮看了点编译原理,觉得困难很大•后来偶然找到

6、一个类似的开源稈序,是利用一个叫做PCCTS的编译器白动生成工具开发的,大受启发.开源就是好!笔者找来了一个叫做ANTLR的工具(它是PCCTS的新版,支持生成java,C++和c#代码),又下载了一个c语言的语法文件(因为笔考需要处理c代码文件)撚后自己编了少量动作(action)语他界面代码,分析处理代码等,就这样,在对编译原理所知共少(以前学过的因为理解不深都忘了,只记得正则表达式)的情况下,仅用一个星期就写出了程序.这次实践使笔者对编译原理兴趣大增,重新又学了一遍编译原理,并归纳出笔者认为比

7、较实用有效的编译原理学习步骤:1.先利用ANTLRZ类的编译器生成工具,做一个小程序(如上面提到的HTML文件转化成纯文本文件的程序),所需知识只是正则表达式的基本知识和生成工具木身的使用方法(可以看联机帮助和网上教程(tutorial)来掌握).这样做的好处是:1)可以体会到编译原理的实用性,提高学习兴趣2)入门容易,消除编译原理学习的畏难情绪.3)获得词法分析器和语法分析器的感性认识,有利于加深对理论的理解.4)获得编译器白动生成工具(compilercompiler)的使用经验,提高解决实际问

8、题的能力.(实际丁.作很多都不是手编而是利用工具的)1.象ANTLRZ类的T具是开源(opensource)的,可研究其源码,以便必要时白己手编分析程序.2.冋过头来看编译原理教材.这时大概会发现,很多理论很容易懂,剩下的只有上面说的几个难点,多看几遍,重点突破.3.结合教材所附源码,进一步加深对教材的理解这里顺便提一下,有的编译原理的教材,对于输入了系统不单立一章来讲,有的茯至完全忽略,笔者认为,输入子系统相对于词法分析器和语法分析器来说当然简单地多,但也是两者的基

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。