下载此文档

经验分享:学习编译原理的几点建议.doc


文档分类:外语学习 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
经验分享:学习编译原理的几点建议.doc:..经验分享:学****编译原理的几点建议编译原理一般认为是较难的一门课。从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人其至说它是大本软件遥程里最难的一门;有人抱怨国内的编译教材没有一本容易懂的从笔者学****实践來看,第一次学了一个多月,理论部分一知半解,第二次学了一星期,基本看懂词法分析的理论部分,语法分析就一知半解了,第三次学了一星期,才基本看懂词法分析和语法分析。由此看来,这门课确实有难度。网上有的帖子,把编译器的编写搞得高深莫测一般,似乎难度极大,非常人能及编译原理究竟难在哪里?笔者的体会,主要在这儿点:1、 错误认识:很多人以为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学****兴趣不高。而且可能觉得写编译器就必须完全手工来写。2、 自动机理论:象NFA,DFA之类,比较抽象,要费些脑子,特别如果学离散数学时没有学自动机理论的话,更是需要多花点时间。3、 集合论的推演:主要是一些闭包运算之类,数学基础不好的话,学起来也会感到吃力。4、 LR文法:主要是又引入了自动机不管哪木编译教材,即使是绝对经典〃龙书〃也不例外,都要涉及到这儿个难点。由于这些内容本身不好懂,作者有再大的本事,也很难把书写得象小说那么流畅好懂。明确了难点,接着想对策。大致有这么几种:1、 端正认识:编译原理在静态文本处理上有广泛的应用,举个简单的例子,把HTML文件转化为纯文本,利用编译原理来实现〃非常〃简单。理解了编译原理的实用性,大概可以提高学****兴趣。2、 反复看书:这个办法看起来最笨,却是基本的方法。忘了是哪位名人说过,书只要多看,总能看得懂的。3^结合源码来看:pilerDesiqninC的作者AlIonHollub建议的方法。,lex的代码。这也是个好方法,而且,只有看懂了代码,才能说在根木上理解了理论。当然,的代码,工作量是很大的,而且同样要先理解理论。4、删繁就简,避重就轻。网上流传较广的一篇《编译原理学****导论》(作者四川大学唐良)就基本是这种思路,对于词法分析,作者避免了自动机理论和集合论推演的介绍,直接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和I丄文法及相应的源码,而对LR文法,只说〃理解理论就可以了〃。虽然这种方法回避了对于难点的学****但是用这种方法学****可以在较短时间内编写出一个能够运行的词法分遷和语法分析器,可以大大提高学****积极性。笔者的思路大体上类似第4种方法,但也稍有不同。由于一个偶然的原因,笔者需要编写一个词法分析器和语法分析器,用于稈序源代码的静态分析。开始无从下手,硬着头皮看了点编译原理,觉得困难很大。后来偶然找到一个类似的开源程序,TS的编译器自动生成工具开发的,大受启发。开源就是好!笔者找来了一个叫做ANTLR的工具(TS的新版,支持生成java,c++和c#代码),又下载了一个C语言的语法文件(因为笔者需要处理c代码文件),然后自己编了少量动作(action)语句,界面代码,分析处理代码等,就这样,在对编译原理所知甚少(以前学过的因为理解不深都忘了,只记得止则表达式)的情况下,仅用一个星期就写出了程序。这次实践使笔者对编译原理兴趣大增,重新乂学了一遍编译原理,并归纳出笔者认为比较实用有效的编译原理学****

经验分享:学习编译原理的几点建议 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sssmppp
  • 文件大小27 KB
  • 时间2019-08-23