自下而上语法分析.docVIP

  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文档。上传文档
查看更多
自下而上语法分析 对于产生语言来讲,白上而下分析的方法是白然的。对于分析语言来讲,H下而上分析的 方法更白然,因为语法分析处理的对象一开始都是终结符组成的输入序列,而不是文法的开始 符号。同时,白下而上分析中最一般的方法,LR方法的能力比白上而下分析的LL方法要强, 从而使得LR分析成为最为实用的语法分析方法。 1自下而上分析的基本方法 思路:从句子3T?始,从左到右扫描3反复用产生式的左部替换产生式的右部、谋求对3 的匹配,最终得到文法的开始符号,或者发现一个错误。 1.1规范归约与“剪句柄” 定义3. 13设咿是文法G的一个句型,若存在S=aA 则称魄句型邛湘对于A的 短语,特别的,若有A-B则称幌句型叩湘对于产生式A-郎J直接短语,一个句型的最左一直 接短语被称为句柄。 ## 直观上,句型是一个完報结构,短语是句型屮的某部分。S是一个句型,而不是一个短 语。 短语形成的两个要素: 1从S可以推导出A,即S^ciA§ 2从A至少一次推导出B即 特征: 短语:以非终结符为根的了树屮所有从左到右排列的叶子; 直接短语:只有父子关系的树屮所有从左到右排列的叶子(树高为2); 句柄:最左边父子关系树屮所有从左到右排列的叶子(句柄是唯一的)。 问题:H1+H2是句型H1+H2*H3的一个短语吗? 答案:不是。因为: 没有一个E的子树,它的全部叶子是H1+H2或者 找不到某个E,使得E=*E*E3 E=4~ H1+H2 定义3. 14若(焊文法G的句子且满足下述条件,则称序列5 ???,%是(的一个最左归约。 L 2 Oo=S ( S是G的开始符号) 3对任何igM=n),呜是从对巴句柄替换为相应产生式左部非终结符得到的。 ## 注意:最左归约的逆过稈是一个最右推导,分别称最右推导和最左归约为规范推导和规范归 约。 需要解决的问题: 确定右句型屮将要归约的了串(确定句柄); 确定如何选择正确的产生式进行归约。 3. 5. 1.2移进-归约分析器工作模式 解决方法:移进廿1约分析 用一个栈“记住”将要归约句柄的前缀,旬柄未形成前移 进,形成后归约。 移进-归约分析器的工作模式:(不同的分析表决定了不同的分析方法) 输入记号流_iptop输出移进约 分析表符号状态找驱动器 输入记号流_ip top 输出 移进约 分析表 符号状态找 驱动器 图3. 17移进-归约分析器模型 工作方法:放幻灯,每个幻灯片是一个格局。 格局:(斗栈,当前剩余输入苑 改变格局的动作) 改变格局的动作: 移进(曲血:输入序列屮的终结符进栈。(匹配终结符) 归约(reduce):将栈顶句柄替换为对应的非终结符。(归约产生式) 接受(accept):宣告分析成功。 报错(eni)D :发现语法错误,调用错误恢复例稈。 从移进-归约分析过程中可以看出: 句柄总是在栈顶形成。这是因为在分析的过程屮一旦形成某产生式的右部就立即进行归 约,而从左到右扫描输入,最早形成的白然是最左的直接短语; 栈屮保留的总是一个右句型的前缀(加上若干终结符形成句型),称为活前缀; 如果将毎次归约逻辑上认为是构造对应产生式的树,则分析的全过程逻辑上就是从下到 上构造一棵分析树;反Z,如果将每次归约逻辑上认为是剪去假想分析树上对应产生式的孩 了,则分析的全过稈逻辑上就是从下到上为分析树剪句柄。 需要解决的问题:(由分析表确定) 如何保证栈屮总是活前缀正确移进); 如何确定栈顶已经形成句柄并选择正确的产生式进行归约正确归约)。 3. 5. 2 LR 分析 LR分析的特点: 采用最一般的无冋溯移进坍约方法; 可分析的文法是LL文法的真超集; 能够及时发现错误,快到从左到右扫描输入序列的最大可能; 分析表较复杂,难以手工构造。 2.1 LR分析与LR文法 1移进-归约分析表 LR分析器的核心是LR分析表和丞动器。 文法:E-ETJT ZT疥 |F | id id — * E T F 0 s4 s5 1 2 3 1 s6 acc 2 r2 s7 r2 3 rd rd rd 4 r6 r6 r6 5 s4 s5 8 6 s4 s5 9 3 7 s4 s5 10 8 r5 r5 r5 9 rl s7 rl 10 r3 r3 r3 actbn goto 动作表(action)与转移表(goto):两者都是二维数纽.,且行下标由称Z为状态的整型 数统一表示。动作表以终结符作为列下标,转移表以非终结符作为列下标。 action根据输入确定改变格局的动作,而got。仅指示非终结符的状态转移°故仅有动作 表与输入有关。 2格局与改变格局的动作 开始格局:(#Q (曲 第一个动作) 结朿格局:(#0S #,接受) 出错格局:(#§曲报错) 改变格局的四个动作: actbn af= si终结符进栈并转向状态i(移进) =

文档评论(0)

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

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

1亿VIP精品文档

相关文档