第4章自上而下的语法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* step stack X t.code 文件Lex_r.txt 8) # S e a#(采用S→ε) # e a# 9) ε # e a# Err 在第8步不使用S→ε,而选用S→eS。 8) # S e a#(采用S→eS) #Se e a# 9) #S e e a# #S a # 10) # S a # #a a # 11) # a a # # # ε 12) ε # # ε Acc 保留S→eS去掉S→ε,意味着把e和最近的t相结合。对于实际使用的语言,这相当于把else和最近的then相结合。 * 结 束 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * * 第4章 自上而下的语法分析 4.1 带回溯的自上而下分析法概述 4.2 直接左递归的消除 4.3 不带回溯的自上而下分析法的基本原理 4.4 提取左因子 4.5 first集和follow集 4.6 递归下降分析法 4.7 预测分析法 从文法的开始符号出发进行推导,最终推出确定的输入串(由单词种别构成的源程序)。 * 4.1 带回溯的自上而下分析法概述 从根结点出发,试图用一切可能的办法,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。 ㈠分析过程概述 例已知文法G: S→xAy A→**|* 和输入串α=x*y。 ①初始时,指示器P指向α的第一个符号x。 ②从S推导,因最左子结和输入串第1个符号相匹配,故P指向下一符号*。 ③因第二个子结是非终结符A,从A采用第一个候选进行推导。从A推导出的左子结和指示器P所指的符号一致,故P指向下一个符号y。 ④因A的第二个子结*和指示器P所指的符号不一致,这意味着A的第一个候选不适用于构造α的语法树,应该回溯。将A的子树注销,P恢复进入A时的值。 ⑤用A的第二个候选进行推导,因子树A的子结和指示器P所指的符号*一致,则P指向下一个符号y。 ⑥因S的第三个子结和指示器P所指的符号一致,故α是一个句子。 * 显然上述分析过程本质上是一个试探过程,是反复使用不同产生式谋求匹配输入串的过程。 ㈡问题和困难 ①对于左递归文法定义的语言,不能采用自上而下的语法分析法。 ②存在虚假匹配,回溯不可避免。 ③编译程序的语法分析和语义分析通常是同时进行的。由于回溯,编译程序所做的一大堆语义分析工作必须推倒重来。 ④当选用所有的不同候选组合,都不能为输入串建立一棵语法树,那么输入串存在语法错误。这种分析法最终只能告知输入串不是文法的一个句子,而无法告知输入串错在何处。 ⑤带回溯的自上而下分析法实际上是一种穷尽一切可能的试探法,因此效率很低,这种分析法几乎没有实用价值。 总上所述,必须消除分析过程中的回溯,只有不带回溯的分析方法才是实际可使用的。 * 4.2 直接左递归的消除 程序设计语言文法的左递归性通常是由左递归规则直接引起的,由规则推导所产生的间接左递归的情况较少见。 ㈠实例引入 例:已知左递归文法G:S→Sa|b,构造文法G的等价文法G,G不含左递归。 解:文法G如下所示 S→bS S→aS|ε ∵SSaSaa…ban 或 Sb ∴L(G)={ ban∣n≥0} ∵SbSbaS…ban 或 SbSb ∴L(G)={ ban∣n≥0} ∵L(G)= L(G) ∴文法G和G等价,而文法G不含左递归。 * ㈡直接左递归消除方法 假定关于非终结符P的规则为 P→Pα|β 其中,β不以P开头。可以把关于P的规则变换为如下形式: P→βP P→αP|ε 由于二者推导出的句型均为βαn(n≥0),故上述变换是等价的。 例文法G: E→E+T|T T→T*F|F F→(E)|i|x|y 经消除直接左递归后变成 E→TE E→+TE|ε T→FT T→*FT|ε F→(E)|i|x|y * ㈢直接左递归消除一般规则及等价性证明 设非终结符P的产生式如下 P→Pα1|Pα2|…|Pαm|β1|β2|…|βn 其中,βi(1≤i≤n)不以P开头。可将P的规则改成如下等价形式,即可消除左递归。 P→β1P|β2P|…|βnP P→α1P|α2

文档评论(0)

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

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

1亿VIP精品文档

相关文档