网站大量收购闲置独家精品文档,联系QQ:2885784924

深切体会到要完成这么一个复杂的大的程序,的确不是一.docVIP

深切体会到要完成这么一个复杂的大的程序,的确不是一.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深切体会到要完成这么一个复杂的大的程序,的确不是一

在系统学习了《编译技术原理》实例分析与课程设计这本书之后,深切体会到要完成这么一个复杂的大的程序,的确不是一件容易的事情,最大的感触是该书所描述的PS语言系统开发的那种层层深入的概念,一个阶段紧靠另一个阶段的开发过程。下面从各个阶段特别是词法分析和语法语义分析阶段谈谈我对本书所介绍的PS语言开发过程的一点个人体会和理解。 一、词法分析 第一阶段是词法分析,由模块PASS1来实现,主要是扫描并识别程序正文的符号和保留字,最终以符号和保留字的名字做为输出值,由于符号是以符号表的形式储存的,故第一阶段的代码输出可以以符号的名字在符号表中的顺序值作为输出,即中间代码的输出。词法分析部分也称扫描器,它的原则是必须超前读入一个字符,这条规则主要是为了区分某些两个字符的符号和单个字符的符号,如〈〉、〈= 和〈 等;(对于PS语言)符号包括分隔符、专用符号、数和单词,对于分隔符来说,空格符以 Nextchar跳过,对于换行符则加多一行,对于注释符则必须调用递归过程Comment来完成,因为注释符后面可能又有注释符;对于数来说,扫描器必须得到数的具体数值,故必须按照数的位数计算其大小并记录起来,同时要防止数值超界;对于单词来说,必须区分它们是保留字还是名字,因此必须对符号表进行查找,找到保留字则输出它的顺序值,否则作为名字并后跟一个名字索引,对于新的名字出现则插入符号表。在PS语言中的符号表采用了一种比较复杂的散列表加单词表加拼写表的方法,以指针的方式可以使编译程序能有效地区分不同长度的名字,名字可以无限长。其查找以散列和线性相结合以达到最价性能。对于我们编写的PL语言词法分析的最后一个工作是测试工作,根据词法分析测试的几个重要规则,构造以下合法符号的测试程序: 合法符号的测试 $ PL program test1:correct symbols $ comment $ abcedfghijklmnopqrstuvwxyz $ ABCEDFGHIJKLMNOPQRSTUVWXYZ $ 1234567890} !″#%()*+,-. $ /:;=?@[\]_~ {} $ special symbols + - * / \ = := | ~ ( ) [ ] , . ; [] - $ numberals 0 32767 $ words symbols array begin const do od end if fi proc call skip integer boolean false true read write $ names abcedfghijklmnopqrstuvwxyz0123456789 ABCEDFGHIJKLMNOPQRSTUVWXYZ0123456789 DNA a12 ac Dna a12 aC a12 $endtext 二、语法分析和语义分析: 该模块是整个编译程序的核心部分,它包括语法分析、作用域分析、类型分析等主要部分,以下按照书本的顺序和自己的体会具体谈谈我的理解: 语法分析: 该部分由分析器PASS2完成,主要解决判断整个程序在语法结构上的错误,这一阶段的输入为词法分析的输出部分,PASS2的唯一任务是输入符号序列,并且在发现程序错误时输入错误消息,这一部分一共涉及以下几个规则: 规则1:对于每条BNF规则 N ::= E,分析器定义一个同名过程 规则2:对形如F1,F2,……,Fn的句子序列的识别是按照书写次序每次一个的扫描各个来实现: a(F1F2……Fn) = a(F1);a(F2);……a(Fn); 规则3:当分析器期待一个后跟Stop符符号S时,它就调用过程Expect a(S,Stop) = Expect(S,Stop) 规则4:为了识别由BNF规则N描述的句子,分析器调用相应的过程N,并用句子的Stop符集作为参数: a(N,Stop) = N(Stop) 规则5:分析器使用下述算法识别形式[E]的后面跟一个Stop符的句子 a( [E] ) , Stop ) = SyntaxCheck( First(E) + Stop ) if Symbol in First(E) then a(E, Stop) 规则6:分析器使用下述算法识别形式{ E }的后面跟一个Stop符的句子 a( {E} ) , Stop ) = SyntaxCheck( First(E) + Stop ) while Symbol in First(E)

文档评论(0)

155****8706 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档