编译原理第5讲.pptVIP

  1. 1、本文档共37页,可阅读全部内容。
  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文档。上传文档
查看更多
编译原理第5讲

* of 36 文法二义性的消除 方法二: 把排除二义性的规则合并到原有文法中,改写原有的文法,构造一个等价的无二义性文法。 例如:将文法G(E):E?E+E|E*E|(E)|i改写为无二义性的文法: G[E]: E→E+T∣T ? T→T*F∣F ?F→(E)∣i 则句子i+i*i就只有唯一一棵语法树(右图)。 * of 36 例题3.6 试将如下的二义性文法G[S]的二义性消除: G[S]: S→if b S∣if b S else S∣A [解] 方法一:不改变已有规则,仅加进一项非形式的语法规定:else与离它最近的if匹配(即最近匹配原则),文法G[S]的句子if b if b A else A只对应惟一的一棵语法树(见右图)。 * of 36 例题3.6 方法二:改写文法 G[S]: S→if b S∣if b S else S∣A 为G[S]: S→S1∣S2 ?S1→if b S1 else S1∣A ?S2→if b S∣if b S1 else S2 由于引起二义性的原因是if-else语句的if后可以是任意if型语句,所以改写文法时规定if和else之间只能是if-else语句或其它语句。改写后文法G[S]的句子if b if b A else A只对应惟一的一棵语法树(如图) * of 36 文法的二义性不可判定:不存在一种算法,能够在有限步内判定一个文法是否为二义性的。 二义性文法有时也会带来一定的好处,如语法分析中二义性文法的应用。 说明 * of 36 要点回顾 规范推导 短语 句柄 素短语 语法树与二义性 语法树 子树和短语 文法的二义性 文法二义性的消除 * of 36 思考题 什么是最左推导、最右推导? 什么是短语、直接短语? 什么是句柄、素短语? 什么是文法G[S]的语法树? 什么是句子的二义性? 如何消除文法的二义性? * of 36 谢谢! * 语法分析是编译过程的核心。 高级语言的语法结构适合用上下文无关文法来描述,上下文无关文法是语法分析的基础。 * 在进行推导时,为什么要选用这些产生式?为了得到最终结果。根据最终结果的形式选择推导过程中使用的产生式 推导过程最终可以建立一棵语法树 * 最左推导在语法树中的表现主要是:总是沿最左分支替换到底,再是次左边…… * of 36 内容提纲 语法分析的任务 规范推导 短语 句柄 素短语 语法树与二义性 语法树 子树和短语 文法的二义性 文法二义性的消除 自上而下分析方法 * of 36 内容提纲 语法分析的任务 规范推导 短语 句柄 素短语 语法树与二义性 语法树 子树和短语 文法的二义性 文法二义性的消除 自上而下分析方法 * of 36 语法分析的任务 问题: 词法分析中讲解了如何判断源程序中单词的正确性,并输出正确的单词符号。那么如何知道这些正确的单词是否能构成正确的表达式、语句或程序呢?这就是语法分析的任务 语法分析的任务 在词法分析识别出正确的单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。 * of 36 语法分析在编译系统中所处的位置 * of 36 语法分析器的输入 Token序列:词法分析的输出,是各个单词都正确的源程序的变换形式,是一个有限序列 语法分析器的输出 分析树:表示方法? 错误处理信息:定位、继续编译 语法分析的接口设计 * of 36 语法分析器的功能 按照语言的语法构成规则, 识别输入的符号串能否构成一个句子。这些规则是用文法的产生式来定义的。 问题 对给定的一个输入串,如何判定它是不是一个句子? 方法 根据文法的产生式规则,从开始符号出发,看能否推导出与这个输入串匹配的句子。这需要建立与输入串匹配的语法分析树。 * of 36 内容提纲 语法分析的任务 规范推导 短语 句柄 素短语 语法树与二义性 语法树 子树和短语 文法的二义性 文法二义性的消除 * of 36 规范推导 最右推导:每一步推导都是对句型中的最右非终结符用相应产生式的右部进行替换。 最左推导:每一步推导都是对句型中的最左非终结符用相应产生式的右部进行替换。 称最右推导为规范推导。 规范规约:规范推导的逆过程。 * of 36 G = ( {i, +, *, (, ) } , {E} , E, P) P: E ? E + E

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档