- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中国科大 第五章 优先分析法 语法分析 推导: —自上而下的语法分析过程 —预测分析程序,递归下降分析法(最左推导) —注:要求文法是LL(1)文法 归约: —自下而上的语法分析过程 —简单优先分析法,算符优先分析法、LR分析法 一、自下而上的语法分析过程 1.自下而上的语法分析过程思想 —自下而上的语法分析过程是一个最左归约的过程,从输入串开始。朝着文法的开始符号进行归约,直到到达文法的开始符号为止的过程 —注意:输入串在这里是指从词法分析器送来的单词符号组成的二元式的有限序列 2.自下而上分析的PDA 一、自下而上的语法分析过程 注:1)初态时栈内仅有栈底符“#”,读头指在最左边的单词符号上 . 2)语法分析程序执行的动作: a)移进:读入一个单词并压入栈内,读头后移; b)归约:检查栈顶若干个符号能否进行归约,若能,就以产生式左部替代该符号串,同时输出产生式编号. c)识别成功:移进—归约的结局是栈内只剩下栈底符号和文法开始符号,读头也指向语句的结束符. d)识别失败. 一、自下而上的语法分析过程 例如:有文法如下: (1) S aAcBe (2) A b (3) A Ab (4) B d 问语句abbcde是不是该文法的合法语句? 二、确定的自下而上语法分析 1.优先分析器(Precedence Parser) 简单优先分析法 算符优先分析法 2.LR分析器 5.1 简单优先分析法 一、基本思想 1.相邻文法符号之间的优先关系 在句型中,句柄内各相邻符号之间具有相同的优先级,相同优先级用“ ” 由于句柄要先归约,所以规定句柄两端符号的优先级要比位于句柄之外的相邻符号的优先级高,优先级低于表示为“﹤”,优先级高于表示为“ >” 某句型中:N1…..Ni-1 Ni …… Nj > Nj+1…..Nn 5.1 简单优先分析法一、基本思想 2 优先分析法的基本思想 句型中的Ni…..Nj是句柄,语法分析程序可以通过寻找 Ni-1﹤Ni和Nj > Nj+1来确定句柄的头尾,从而确定句柄进行归约。 5.1 简单优先分析法二、简单优先文法 1. 定义:一个文法G,如果它不含e产生式,也不含任何右部相同的不同产生式,并且它的任何符号对(X,Y)——X,Y是终结符或非终结符——或者没有关系,或者存在优先级相同或低于、高于等关系之一,则这是一个简单优先文法。 5.1 简单优先分析法二、简单优先文法 5.1 简单优先分析法 PDA读入一个单词后,比较栈顶符号和该单词 的优先级,若栈顶符号优先级低于该单词,继续读入;若栈顶符号优先级高于或等于读入符号,则找句柄进行归约,找不到句柄就继续读入,直到最后栈内只剩下开始符号,输入串读到“#”为止,此时识别正确。 四、简单优先分析法的优缺点 优点:算法理解简单,技术简单 缺点:适用范围小,分析尺寸太大 5.2 算符优先分析法一、什么是算符优先分析法 1.算符优先分析法: 所谓算符优先分析法是仿效四则运算的计算过程而构造的一种语法分析方法. 2.算符优先分析法的特点: 简单直观,特别方便于表达式分析,易于手工实现,是自下而上的归约过程,但未必按照句柄归约. 3.算符优先分析法的关键: 规定算符(终结符)的优先级及结合性质 例如:8+7-6*5/3的运算 5.2 算符优先分析法 例如:表达式文法: E E+E|E-E|E*E|E/E|(E)|i 对这个二义文法可能会有好几个规范推导和归约,真正运算时也有几种不同结果,但若按算符优先顺序和结合规则的规定进行归约,句子的归约过程就是唯一的,运算结果也唯一. 注:对所有的终结符定义某种优先关系,借助这种关系找出可归约的串,进行归约,达到自下而上分析的目的. 5.2 算符优先分析法二、算符优先分析技术的改进 1、确定运算符的优先级 算符优先分析法的关键是比较两个相继出现的终结符的优先级而决定应采取的动作 要完成运算符间优先级的比较,可以先定义各种可能相继出现的运算符的优先级,并表示为矩阵的形式,使得能够在分析中通过查询矩阵元素而得到算符之间的优先关系 5.2 算符优先分析法二、算符优先分析技术的改进 2.对于任何两个可能相继出现的终结符a,b,若具有以下形式:“……..ab…….”, “….aQb….”, 其中Q是某非终结符,则a,b之间的关系为: 1) a b,a的优先级低于b 2) a b,a的优先级等于b 3) a b,a的优先级高于b 4) 若ab在任何情况下都不可能相
文档评论(0)