第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文档。上传文档
查看更多
第4章 自上而的语法分析

第4章 自上而下的语法分析 4.1 带回溯的自上而下分析法概述 从文法的开始符号出发进行推导,最终推出确定的输入串(由单词种别构成的源程序)。 4.1 带回溯的自上而下分析法概述 从根结点出发,试图用一切可能的办法,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。 4.1 带回溯的自上而下分析法概述 ㈠分析过程概述 例已知文法G: S→xAy A→**|* 和输入串α=x*y。 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 ⑥因S的第三个子结和指示器P所指的符号一致,故α是一个句子。 显然上述分析过程本质上是一个试探过程,是反复使用不同产生式谋求匹配输入串的过程。 4.1 带回溯的自上而下分析法概述 ㈡问题和困难 ①对于左递归文法定义的语言,不能采用自上而下的语法分析法。 例已知左递归文法G:S→Sb∣a和输入串α=ab,其分析过程如下所示: 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 试图用非终结去推导匹配输入串,而推导所得到的子树第一个子结是该非终结符本身,这样就陷入了死循环。 4.1 带回溯的自上而下分析法概述 ②存在虚假匹配,回溯不可避免。 ③编译程序的语法分析和语义分析通常是同时进行的。由于回溯,编译程序所做的一大堆语义分析工作必须推倒重来。 4.1 带回溯的自上而下分析法概述 ④当选用所有的不同候选组合,都不能为输入串建立一棵语法树,那么输入串存在语法错误。这种分析法最终只能告知输入串不是文法的一个句子,而无法告知输入串错在何处。 ⑤带回溯的自上而下分析法实际上是一种穷尽一切可能的试探法,因此效率很低,这种分析法几乎没有实用价值。 4.2 直接左递归的消除 直接左递归消除方法 假定关于非终结符P的规则为 P→Pα|β 其中,β不以P开头。可以把关于P的规则变换为如下形式: P→βP P→αP|ε 由于二者推导出的句型均为βαn(n≥0),故上述变换是等价的。 4.2 直接左递归的消除 例文法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 4.3 不带回溯的自上而下分析法的基本原理 设文法G有产生式 A→α1|α2|…|αn ㈠带回溯的自上而下的分析法 采用试探法,对于α1、α2直至αn逐一试探。 4.3 不带回溯的自上而下分析法的基本原理 ㈡不带回溯的自上而下的分析法 在推导时,根据面临的输入符号去找出A的那个唯一正确的候选式。 ①引入候选式α的first集定义 ②根据定义,求出每个候选式αi的first集。 4.3 不带回溯的自上而下分析法的基本原理 ③根据当前输入符号,选择候选式进行推导。 ④进一步考虑(A→ε) ⑤引入非终结符follow集定义 ⑥修改分析算法 4.4 提取左因子 ㈠实例引入 例定义无符号整数的文法 N→DN|D D→0|1|2|3|4|5|6|7|8|9|0 就是这样一种情形,first(DN)∩first(D)={D}。 4.4 提取左因子 ㈡解决方法 提取左因子,引进ε产生式,将文法改造为G。 N→DN N→N|ε D→0|1|2|3|4|5|6|7|8|9|0 ㈢提取左因子一般规则 4.5 first集和follow集 4.5.1 first集的定义及构造算法 ㈠first集定义 α是文法G的任一符号串(包括候选式),α∈(VT∪VN)* first(α)={a∣α ? a……,a∈VT} 若α ? ε,则规定ε∈first(α)。 4.5 first集和follow集 ㈡文法符号first集构造算法 ①终结符的first集为终结符本身。 ②观察每个产生式,若有X→a……,其中a∈VT,则a∈first(X);若X→ε,则ε∈first(X)。 ③观察每个产生式,若有X→Y……,其中Y∈VN,则将first(Y)中的非ε元素(记为first(Y)/ε)加到first(X)中。 4.5 first集和follow集 考虑更一般情况,X→Y1Y2…Yi…Yn,其中Y1、Y2、…Yi-1∈VN。 l 若first(Y1)中含有ε,则将first(Y2)/ε加到first(X)中,否则终止计算。 l若first(Y1)和first(Y2)中含有ε,则将first(Y3)/ε加到first(X)中,否则终止计算。 l?若first(Y1)、first(Y2)、…first(Yi-

文档评论(0)

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

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

1亿VIP精品文档

相关文档