算符优先分析法的实现.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文档。上传文档
查看更多
算符优先分析法的实现

编译原理 第一章 编译程序概述 第二章 PL/0编译程序的实现 第三章 文法和语言 第四章 词法分析 第五章 自顶向下语法分析方法 第六章 自底向上优先分析方法 第七章 LR分析方法 第八章 语法制导翻译和中间代码生成 第九章 符号表 第一○章 代码优化 第一一章 代码生成 复习:第5章自顶向下语法分析方法 一、确定的自顶向下分析思想 二、LL(1)文法的判别 三、某些非LL(1)文法到LL(1)文法等价变换 四、不确定的自顶向下分析思想 五、确定的自顶向下分析方法 确定的自顶向下分析方法 当文法满足 LL(1)文法时,可进行确定的自顶向下分析 递归子程序法:对应文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串。 预测分析方法: 移进—规约分析(Shift-reduce parsing) 要点:建立符号栈,用来纪录分析的历史和现状,并根据所面临的状态,确定下一步动作是移进还是规约。 自下而上分析的关键问题: 如何确定可归约串? 简单优先分析法:寻找句柄 算符优先分析法:寻找最左素短语 句柄的定义: 令G是一文法,S是文法的开始符号,??δ是文法G的一个句型。(为??δ 确定可归约串)如果有S??A? 且 A??,则称?是句型??δ相对于非终结符A的短语。 若有A??,则称?是句型 ??δ 相对A ??的直接短语。一个句型的最左直接短语称为该句型的句柄。 句柄是自底向上句法分析中当前时刻需要规约的符号串。如果能够自动计算出当前的句柄,则可执行自动句法分析。 确定优先关系的规则 (1)X =. Y 当且仅当G中存在产生式A ?…XY…(在语法树的同一层) (2) X . Y 当且仅当G中存在产生式A ?…XB…,且B ?Y…( Y 在 X 的下一层) (3)X . Y 当且仅当G中存在产生式A ?…BD…,且B ?…X和D ?Y… ( X在 Y 的下一层或X比 Y先归约——规范归约/最左归约 ) 简单优先文法的定义: (1)在文法符号集中,任意两个符号之间最多只有一种优先关系; (2)在文法中任意两个产生式没有相同的右部。 因此,可以根据文法符号之间的优先关系确定句柄。 在规范归约(最左归约)过程中,出现在栈顶的优先级相同的连续符号串就是句柄。 三、算符优先分析 ①简单优先分析法:求出文法中所有符号(终结符和非终结符)的优先关系,按这种关系求出句柄。(规范归约——从左向右的规约); ②算符优先分析法:只考虑算符(终结符)之间的优先关系,不考虑非终结符之间的优先关系。按这种关系求出最左素短语。(不规范归约) 算符优先关系的定义 实例比较 算符优先归约 (P115表6.8) 规范归约(P115表6.8) 前者(1)去掉单非终结符的归约,(2)并且在归约时不考虑非终结符的名字,因此得到的不是真正的语法树,而是语法树的框架。(比较P116 图6.7与图6.6 ) 算符优先分析法的可归约串不是句柄而是最左素短语。 P116 “算符优先分析的关键是如何找最左素短语…… ” 作业 P122 练习1、2 【算符优先文法的定义】 设有一不含?产生式的算符文法G,如果对任意两个终结符a,b之间至多只有=. ,.和.三种关系的一种成立,则称G是一个算符优先文法(也称OPG文法)。 即a =. b,a .b,a . b只有一种成立,但允许a .b,b . a同时存在。 例:E→E+E | E*E | (E) | i 证明不是OPG文法。 【算符优先文法的定义】 设有一不含?产生式的算符文法G,如果对任意两个终结符a,b之间至多只有=. ,.和.三种关系的一种成立,则称G是一个算符优先文法(也称OPG文法)。 即a =. b,a .b,a . b只有一种成立,但允许a .b,b . a同时存在。 例:E→E+E | E*E | (E) | i 证明不是OPG文法。 因为:E→E+E , E?E*E 则有 + . * 又因为:E→E*E, E?E+E 则有 + . * 所以不是算符优先文法。 + + A →aB ,a=+,B=E, B ?Cb…,b=* A →Bb , B=E , b=*, B ? … aC,a=+ 算符优先分析法的实现: # 分析程序 优先关系矩阵 # 符号栈 输入串 当栈内终结符的优先级<=栈外的终结符的优先级时,移进;栈内终结符的优先级>栈外的终结符的优先级时,归约。表明找到了素短语的尾,再往前找其头,并进行规约。 (3) 算符优先关系表 用表格形式来表示各终结符号的优先关系,这种表称为优先表。 构造优先关系表的方法:①按照定义来构造

文档评论(0)

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

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

1亿VIP精品文档

相关文档