[理学]第四章2 自下而上语法分析.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文档。上传文档
查看更多
[理学]第四章2 自下而上语法分析

第四章(2) 自下向上语法分析 本章要求: 1. 掌握自下向上语法分析的基本思想和基本概念 2. 了解算符优先语法分析;求FIRSTVT集和LASTVT集,构造算符优先关系表;能运用算符优先分析方法进行表达式分析(选学) 3. 掌握句柄的定义与判定 4. 理解规范归约的过程和LR分析过程中的实现 5. 掌握LR语法分析的实现过程 回顾: 归约和推导的概念 例 S ? aABe A ? Abc | b B ? d 用归约的方法对句子abbcde进行语法分析。 例 S ? aABe A ? Abc | b B ? d abbcde 例 S ? aABe A ? Abc | b B ? d abbcde aAbcde aAbcde 例 S ? aABe A ? Abc | b B ? d abbcde aAbcde aAde 例 S ? aABe A ? Abc | b B ? d abbcde aAbcde aAde aABe 例 S ? aABe A ? Abc | b B ? d abbcde aAbcde aAde aABe S 例 S ? aABe A ? Abc | b B ? d abbcde aAbcde aAde aABe S S ?rm aABe ?rm aAde ?rm aAbcde ?rm abbcde 自下而上的语法分析的一般过程 实现思想 从输入符号串开始,从左到右进行扫描,将输入符号逐个移入一个栈中,边移入边分析,一旦栈顶符号串形成某个产生式的右部时,就用该产生式的左部非终结符代替,称为归约。重复这一过程,直到归约到栈中只剩下文法的开始符号时,则分析成功, 称为“移进-归约”方法。 从语法树的角度看:从语法树的树叶开始,逐步向上归约构造分析树,直到形成根结点。是推导的逆过程。 最左推导(Left-most Derive) 每次推导都替换当前句型的最左边的非终结符。 与最右归约对应。 最右推导(Right-most Derive) 每次推导都替换当前句型的最右边的非终结符。 与最左归约(规范归约)对应,得规范句型。 “移进-归约”分析法中栈的使用 移进-归约分析器使用了一个符号栈和一个输入缓冲区 1、句型表示 3. 过程描述: do{ do { 将输入串最左边的符号移入栈内;} while (在栈里符号串中找到一个可归约串); 归约可归约串 while (文法开始符号出现在栈顶或者发现错误); 分析器的四种动作 1) 移进:读入下一个输入符号并把它下推进栈。 2) 归约:当栈顶符号串形成一个可归约的串(如:句柄)时,直接进行归约,即用产生式左侧的非终结符替换栈顶的句柄。 3) 接受:当栈底只有“#”和开始符号,而输入也已经到达右端标志符号“#”时,识别出符号串是句子,执行该动作,表示分析成功,是归约的一种特殊情况。 4) 出错:栈顶的内容与输入符号相悖,即当识别程序发现输入符号串不是句子时,进行出错处理。 注意:决定移进和归约的依据是什么? 栈顶是否出现了可归约的符号串。 “移进—归约”语法分析小结: 从输入串的开始依次读入单词(移进栈中) 。 一旦发现可归约串(某个产生式的右端)就立即归约。 归约就是将栈顶的一串符号用文法产生式的左部代替,归约可能重复多次,然后继续移进。 若最终能归约成文法的开始符号,则分析成功(接受);否则出错。 由于总是将句型的最左边的可归约串替换成非终结符,该方法通常得到是最右推导。 关键是如何识别可归约的符号串? 语法分析树的生成演示 a b b c d e 规范归约相关概念复习 有文法G,开始符号为S, 如果有S=xβy,则xβy是文法G的句型,x,y是任意的符号串 如果有S=xAy, 且有A=β,则β是句型xβy相对于非终结符A的短语 如果有S=xAy, 且有A-β,则β是句型xβy相对于A-β的直接短语 位于一个句型最左边的直接短语称为句柄. 句型--- 短语 --- 直接短语 ---句柄 回到上例用句柄对句子abbcde进行归约有: 用句柄对句子进行归约的过程与用移进-归约过程是一致的,使用归约的产生式及其顺序是一致的。 E=E+T =E+T*F =E+T*id =E+F*id =E+id*id =T+id*id =F+id*id =id+id*id 动作 栈 输入缓冲区 1) 准备 # id1+id2*id3# 2) 移进

文档评论(0)

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

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

1亿VIP精品文档

相关文档