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

南京师范大学计算机科学与技术学院编译原理课件第四章 语法分析(一).ppt

南京师范大学计算机科学与技术学院编译原理课件第四章 语法分析(一).ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京师范大学 杨明 教授 第4章语法分析—自顶向下分析技术 主要目标和内容: 0)分析检查该源程序是否语法上正确的程序,本质上就是句型识别问题。 1)讨论自顶向下分析技术 如:文法规则的选择等问题。 2)带回溯的自顶向下分析技术 原因:文法规则的多种选择。 3)不带回溯的自顶向下分析技术 策略:改造文法,使得文法规则选择可确定。 第4章语法分析—自顶向下分析技术 引言 - 自顶向下分析技术及识别算法 - 句型分析:识别一个符号串是否是某个文法的句型,是某个推导或语法树的构造过程。具体上说,就是将某个非终结符替换为相对于该非终结符号的简单短语。 - 语法树的构造过程:以识别符号为根结点,向下逐步构造一棵语法树,使末端结点符号串正好与输入符号串相同。 - 正则文法的不足 -程序设计语言程序中的(与)对、匹配的{与}对,以及对应的if …else…等嵌套结构不能用正则文法来描述,但可用上下文无关文法来描述。 -定理2.7为从左到右逐个符号地进行分析奠定了理论基础:若存在句型x=x1x2…xn,x1x2…xn=* y,则必存在y1,y2,…,yn使得xi=* yi且y=y1y2…yn。 第4章语法分析—带回溯的自顶向下分析技术 -自顶向下分析需解决的问题 在直接推导过程(即语法树建立)中,如何选择非终结符对应的重写规则。 带回溯的自顶向下分析技术 -主要思路(举例说明): 设有文法: S::=aBC B::=ib|b C::=DE|FG|c D::=d E::=eh F::=de G::=t 若输入符号串为x=abdet。如何建立匹配的语法树? 4.2带回溯的自顶向下分析的原由 ?建立匹配的语法树过程如下: 图4-1 4.2带回溯的自顶向下分析过程 分析过程可概括如下: 1)从识别符号开始,构造直接推导序列; 2)构造过程中,对每步直接推导所得符号串(句型)的每个符号从左到右逐个地尝试,进一步做出(广义)推导,使得能正好无重叠也无遗漏地覆盖整个输入符号串。构造下一步直接推导时,对于上一步推导所得符号串中的非终结符号,总是逐个尝试相应规则右部的各个选择,看它是否能完成覆盖。每当一个选择失败就选取下一选择再行试探。 3)假定在推导过程中已有 Xk=* xk(k=1,2,…,i-1) 这时的输入符号串形如x=x1x2…xi-1y,其中y是还未涉及部分。若Xi为终结符,则把Xi与y的第一个符号T相比较,如匹配,则Xi=* xi(xi=T)成功;若Xi为非终结符,则从xi出发,尝试构造一个推导,使得Xi=* xi且x= x1x2…xiy1, y=xiy1。 4.2带回溯的自顶向下分析的实现算法 -实现算法 -信息及其存放格式 -语法树的结点:(Goal,i,Father,Son,Brother) -文法的存放格式:一维数组;如对上文给出的文法Grammar=SaBC|$Bib|b|$CDE|FG|c|$Dd|$Eeh|$Fde|$Gt|$ -引进一个后进先出栈S,用它来存放五元组结点。 -算法 - 组成:Initialize(初始准备)、New_node(新结点)、Test(检验选择是否成功)、Success(向父结点报告成功,继续达到父结点的目标)、Failure(失败)、Try_again(再试,检查是否还有能够进行再试的子结点)。 -举例说明如下: 4.2带回溯的自顶向下分析方法举例 -语法树和栈内容如下(输入符号串为aibdet): Grammar=SaBC|$Bib|b|$CDE|FG|c|$Dd|$Eeh|$Fde|$Gt|$ 4.2带回溯的自顶向下分析方法的不足 -效率问题 -回溯问题 -假匹配问题 -查文法的效率 -语义影响问题 如:类型匹配的检查、中间代码生成和各种表格建立等语义问题都因回溯而影响效率。 -语法错误的校正问题 如:因回溯,算法不能告知有关错误的信息、错误的性质和错误的位置。 -左递归问题 自顶向下分析技术不能应用于左递归。 4.3 无回溯的自顶向下分析 若能够无回溯,自然的想法:每一

文档评论(0)

ormition + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档