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

讲稿第6章 自底向上优先分析.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讲稿第6章 自底向上优先分析

第6章 分析 教学要求: 掌握算符优先分析法的关系表的构造以及分析过程,了解简单优先分折法。 教学内容: 6.1自底向上分析概述 6.2自底向上优先分析法概述 6.3简单优先分析法算符优先分析法 例如文法 G[S]: (1)S(aAcBe (2)A(b (3)A(Ab (4)B(d 显然,abbcde是该文法的一个句子,于是可如右图构造其语法分析树。 该语法树的构造的确是一个“自左而右、自下而上”的过程,我们把这一类分析方法统称为“自下而上”的。 (2)移进-归约 在计算机上模拟以上的语法分析树的构造过程,可借助于一个符号栈来实现: 由此看来,自下而上分析法就是对栈的“移进-归约”法,更进一步的,也就是对句子的一个规范归约过程——何为规范归约呢? (回顾短语、句柄、推导、归约的知识) 移进——归约过程实际上是自顶向下最右推导的逆过程。相对于最右推导为规范推导,自左向右的归约称为规范归约。 再来看上述的例子,每一步归约都是替换句柄: abbcde aAbcde aAcde aAcBe S 分析结束,由栈中的开始符号为树根,最终形成了一棵分析树。不难看出,上述的自左而右、自下而上的分析法就是对符号栈施行如下四种操作:移进、归约、接受、出错处理。 移进指把输入串的一个符号进栈; 归约指发现栈顶出现可归约串,并用适当的符号去替换这个串; 接受指宣布最终分析成功,可以把它看成是归约的一种特殊形式; 出错处理指发现栈顶的内容与输入串相悖,分析工作无法正常进行。此时需调用出错处理程序进行诊察和校正,并调整栈顶的内容。 这样一来是否意味着自下而上的问题都解决了呢?当然不是!在分析过程中,何时应移进、何时应归约?什么样的串才算可归约的?这都是有待解决的问题。 6.2 自底向上优先分析法概述(5分钟) 上节在谈到“移进-归约”法对栈的操作时,我们曾指出“移进”和“归约”的问题并没有解决,这一节我们先借助于文法符号的优先关系,来直观地看一下如何解决何时移进、何时归约的问题。这种方法称为优先分析法。 优先分析法又可分为简单优先分析法和算符优先分析法。 简单优先分析法的基本思想是对一个文法按一定原则求出该文法所有符号(即终结符和非终结符)之间的优先关系,按照这种关系确定归约过程中的句柄,它的归约过程实际上是一种规范归约。 算符优先分析法的基本思想则是只规定算符之间的优先关系,即只考虑终结符之间的优先关系,由于算符优先分析不考虑非终结符之间的优先关系,在归约过程中只要找到句柄就归约,并不考虑归约到那个非终结符,因而算符优先归约不是规范归约。 6.3 简单优先分析法(30分钟) 首先来看一下任意两个文法符号之间的优先关系是如何确定的,以及如何构造优先关系表。 6.3.1 优先关系 X Y表示X和Y的优先级相等 X Y表示X的优先级比Y大 X Y表示X的优先级比Y小 注意:不同于数学中的=、<、>,不存在对称关系。如X Y,不一定有Y X。 根据上面的定义,可确定文法符号之间的优先关系。 若有文法G[S]:S(bAb A((B|a B(Aa) 则有: (1)由产生式S(bAb、A((B|a、B(Aa)可得b A、A b、( B、A a、a )。 (2)由S(bAb,且A + (B、A + a,可得b (、b a。 由A((B且B + (B…、B + a…、B + A…可得( (、( a、( A。 (3)由S(bAb,且A + …)、A + …B、A + a,可得) b、a b、B b。 由B(Aa且A + …)、A + a、A + …B得) a、a a、B a。 在语法树中,确定优先关系的原则是: 同层的优先关系为 ; 不同层时,层次在下的优先级高,层次在上的优先级低 为了表示简洁明了,我们可以用优先关系矩阵表示文法符号之间的优先关系: S b A ( B a ) # S b A ( B a ) # 空白处表示这两个终结符不能相邻,故没优先关系。 6.3.2 简单优先文法的定义 满足以下条件的文法是简单优先文法(见教材P105): (1)在文法符号集V中,任意两个符号之间最多只有一种优先关系成立。 (2)在文法中任意两个产生式没有相同的右部。 6.3.3 简单优先分析的过程 首先构造优先关系矩阵,并将文法的产生式保存,设置符号栈S。分析程序读入一个单词后,比较栈顶符号和该单词的优先级,若栈顶符号优先级低于或等于该

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档