编译原理—清华大学—第2版_第6章自底向上优先法导论.pptVIP

编译原理—清华大学—第2版_第6章自底向上优先法导论.ppt

  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文档。上传文档
查看更多
第六章 自底向上优先分析方法 教学要求:掌握算符优先分析法的关系表的构造以及分析过程,了解简单优先分折法。 教学重点:算符优先表构造及算符优先分析法。 从输入串开始,朝着文法的开始符号进行最左归约,直到到达文法的开始符号为止。 工作方式:“移进-归约”方式。 自底向上分析法的基本思想 分析程序模型 1)初态时栈内仅有栈底符“#”,读头指针在最左单词符号上。 2)语法分析程序执行的动作: a)移进 读入一个单词并压入栈内,读头后移; b)归约 检查栈顶若干个符号能否进行归约,若能,就以产生式左部替代该符号串,同时输出产生式编号; c)识别成功 移进-归约的结局是栈内只剩下栈底符号和文法开始符号,读头也指向语句的结束符; d)识别失败 语法分析程序 语法表 a+b……# 输出带 # 例如: 有文法如下 (1)S→aAcBe (2)A→b (3)A→Ab (4)B→d 问:语句abbcde是不是该文法的合法语句? 例:设文法G S : 1 S ? aAcBe 2 A ? b 3 A ? Ab 4 B ? d 试对abbcde进行“移进-归约”分析。 a bbcde b a bcde A a bcde b A a cde A a cde c A a de d c A a e abbcde e B c A a S B c A a e 成功 11 接受 2,3,4,1 # #S 10 归约 # #aAcBe 9 移进 2,3,4 e# #aAcB 8 归约 e# #aAcd 7 移进 de# #aAc 6 移进 2,3 cde# #aA 5 归约 cde# #aAb 4 移进 2 bcde# #aA 3 归约 bcde# #ab 2 移进 bbcde# #a 1 移进 abbcde# # 0 动作 输出带 输入串 栈 步骤 移进归约的分析过程 G[S]: (1)S →aAcBe (2)A →b (3)A →Ab (4)B →d 遇到的问题: (1)如何找出进行直接归约的简单短语? (2)找出的简单短语应直接归约到哪一个非终结符? 关键: 确定句柄. 常用的分析方法: 优先分析和LR分析 b d b a c e S A B A d b a c e S A B A d a c e S A B a c e S A B S 6.1 自底向上优先分析法概述 分类: 1、简单优先分析:对一个文法按一定原则求出所有符号即终结符号和非终结符号之间的优先关系,按照这种关系确定归约过程中的句柄. 特点:准确、规范,但分析效率底,使用价值不大. 2、算符优先分析:只规定算符(终结符号)之间的优先关系,不考虑非终结符号之间的优先关系,只要找到句柄就归约,不考虑归约到那个非终结符号。 特点:不是规范归约,分析速度快,特别适合于表达式的分析. 一、基本思想 1、自下而上归约 2、规定算符 更一般地说,指终结符 的优先级及结合规则,以使得分析过程唯一 3、比较相邻两个算符而决定动作 注:1 关键是对所有算符定义某种优先关系 2 算符优先分析法是仿效四则运算的计算过程而构造的一种语法分析方法 6.3 算符优先分析方法 i+i-i* i+i 归约过程如下: i+i-i* i+i 设算量级别最高,最先归约; E+i-i* i+i E+E-i* i+i +,-同级,先归约左边“+” E-i* i+i E-E* i+i -,*不同级,先归约右边“*” E-E* E+i 先括号内,后括号外 E-E* E+E 归约括号内 E-E* E 归约括号对 E-E*E 先归约“*” E-E 后归约“-” E 结束(接受) 例: E ?E+E|E-E|E*E|E/E| E |i 一、算符文法的定义 1、给定上下文无关文法G,若G中所有产生式右部都不包含两个相继的非终结符,则G为算符文法。 注:算符文法保证了两个运算符之间只有一个操作数。 2、算符优先文法定义 设G是一个不包含空串产生式的算符文法,并设a,b?VT; P,Q,R ?VN,定义关系: 1 a b 当且仅当G中含有形如P ? …ab…产生式,或者P ? …aQb…产生式; 若G中任何终结符序偶(a,b)至多满足上述关系之一,则称G为算符优先文法。 2 a b 当且仅当G中含有形如P ? …aR…的产生式,其中R b…, 或R Qb…; + + 3 a b 当且仅当G中有形如P ?…Rb…产生式,其中R …a,或R …aQ. + + > · 用语法树来理解更直观 …a ? b… A a b …a B … ? b … A P … B b… A P

文档评论(0)

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

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

1亿VIP精品文档

相关文档