第四章__语法分析和语法分析程序.pptVIP

  1. 1、本文档共94页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章__语法分析和语法分析程序

句 柄 对于文法G[S], 短语:S αAδ且A b则称b是句型αbδ相对于非终结符A的短语。 直接短语:若有A ? b则称b是句型αbδ相对于A的直接短语。 句 柄:一个句型的最左直接短语称为该句型的句柄。 由于从左至右扫描符号串,因此在被归约句型中找句柄进行归约。 所以归约总是执行规范(最左)归约。 例: S ? aABe A ? Abc | b B ? d 符号串abbcde是否为该文法句子 abbcde aAbcde aAde aABe S S ?rm aABe ?rm aAde ?rm aAbcde ?rm abbcde 最左归约是最右推导的逆过程 从输入串开始,进行最左归约,直到到达文法的开始符号为止。 大致过程:把输入符号逐个移进到一个栈里,当栈顶形成某个产生式的右部( 句柄)时,把栈顶的这一部分替换成(归约为)它的左部符号。称作“移进—归约”分析。 § 4.3.1 自下而上分析过程 语法分析程序 查找规约串依据 a+b……# 输出带 # 步骤 栈 输入 动作 G[s]: S?aAcBe A ?b?Ab B ?d,串abbcde (1) # abbcde # 移进 (2) #a bbcde # 移进 (3) #ab bcde# 归约, ? A b (4) #aA bcde# 移进 (5) #aAb cde# 归约,A ? Ab (6) #aA cde# 移进 (7) #aAc de# 移进 (8) #aAcd e# 归约, B ? d (9) #aAcB e# 移进 (10) #aAcBe # 归约, S aAcBe ? (11) #S # 接受 “移进-归约”分析对符号栈的使用有四类操作:移进、归约、接受和出错处理。 “移进一归约”分析器使用一个栈和一个存放输入符号串w的缓冲器。 工作过程:自左至右将串w 的符号依次入栈,一旦栈顶形成句柄即归约。归约可持续多次,直至栈顶不再呈现句柄为止。然后,继续移进符号,重复这个过程,直至最终形成如下格局: ??栈???????? 输入 ????????????#S???????? # 分析过程的每一步,栈中符号串与剩余输入符号串恰是一个规范句型。且栈中符号串为该句型的一个活前缀。 总 结 活前缀:是 规范句型的一个前缀,且不含句柄之后的任 何符号?,则称为该规范句型的一个活前缀。 FIRST(E)=FIRST(T) =FIRST(F)={(,i} FIRST(E?)= {+,?} FRIST(T?)= {*,?} FOLLOW(E)={ ),#} FOLLOW(E)=FOLLOW(E) FOLLOW(T?)=FOLLOW(T) =FIRST(E’)∪FOLLOW(E’) = { +,),#} FOLLOW(F)= FIRST(T’)∪FOLLOW(T) ={+,*,),#} 例2:E→E+T|T T→T*F|F F→i|(E) 判定i+i*i E ? TE ? E ? ? + TE ? | ? T ? FT ? T ? ? * FT? | ? F ? (E) | i 1) 消除左递归 i+i*i 判定过程: E?TE’ E ? TE? ?FT’E’ T ? FT? ?iT’E’ F ? i ?i?E’ ? ∈FRIST(T?), +∈FOLLOW(T’) ?i+TE’ E? ? + TE ? ?i+FT’E’ T? FT? ?i+iT’E’ F ? i ?i+i*FT’E’ T? ? * FT? ?i+i*iT’E’ F ? i ?i+i*i?E’ ? ∈FRIST(T?), #∈FOLLOW(T?) ?i+i*i?? ? ∈FRIST(E?), #∈FOLLOW(E?) E ? TE ? E ? ? + TE ? | ? T ? FT ? T ? ? * FT? | ? F ? (E) | i FIRST FOLLOW E {(,i} { )

文档评论(0)

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

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

1亿VIP精品文档

相关文档