com0305-07西安电子科技大学编译原理课件.pptVIP

com0305-07西安电子科技大学编译原理课件.ppt

  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文档。上传文档
查看更多
com0305-07西安电子科技大学编译原理课件

上次课程内容回顾 3.5 自下而上语法分析 3.5.1 自下而上分析的基本方法 3.5.1.1 规范归约与“剪句柄”(续1) 3.5.1.1 规范归约与“剪句柄”(续2) “剪句柄”: 3.5.1.1 规范归约与“剪句柄”(续3) 3.5.1.2 移进-归约分析器工作模式 3.5.1.2 移进-归约分析器工作模式(续1) 3.5.1.2 移进-归约分析器工作模式(续2) 3.5.2 LR分析 3.5.2.1 LR分析与LR文法 3.5.2.1 LR分析与LR文法(续1) 3.5.2.1 LR分析与LR文法(续2) 3.5.2.1 LR分析与LR文法(续3) 结 束(2005年4月4日) 上次课程内容回顾 3.5.2.2 构造SLR(1)分析器 3.5.2.2 构造SLR(1)分析器(续1) 3.5.2.2 构造SLR(1)分析器(续2) 3.5.2.2 构造SLR(1)分析器(续3) 3.5.2.2 构造SLR(1)分析器(续4) 3.5.2.2 构造SLR(1)分析器(续5) 3.5.2.2 构造SLR(1)分析器(续6) 3.5.2.2 构造SLR(1)分析器(续6) 3 如何识别活前缀 3.5.2.2 构造SLR(1)分析器(续7) 3 如何识别活前缀(续1) 3 如何识别活前缀(续2) 3 如何识别活前缀(续3) 结 束(2005年4月11日) 上次课程内容回顾 4 SLR分析表的构造 分析表的构造 4 SLR分析表的构造(续1) 3.5.2.3 非SLR(1)文法 2 不是二义文法的非SLR(1)文法 3.5.2.4 基于LR分析的语法分析器生成器简介(略) 3.6 本章小结 3.6 本章小结(续1) 3.6 本章小结(续2) 本章结束 closure(I)的计算(教材79页) for 每个状态转移Dtran[i,x]=j loop if x∈T then action[i,x]:=Sj; else goto[i,x]:=j; end if; end loop; for 状态i的每个可归约项A→α. loop if S→ S. then action[i, #]:=acc; else for 每个a∈FOLLOW(A) loop action[i,a]:=Rk; end loop; end if; end loop; 10 9 8 7 6 5 4 3 2 1 0 F T E # * - id 1 2 3 s4 s5 s6 s7 s4 s5 s4 s5 8 9 3 10 acc r2 r2 r4 r4 r4 r6 r6 r6 r5 r5 r5 r1 r1 r3 r3 r3 s7 s4 s5 1 二义文法不是SLR(1)文法 经过路径iCtS达到的状态中存在移进/归约冲突,因为同时有项目:S→.eS S→. “悬空”else文法: A→S S→iCtSS|a S→eS|ε C→b 因为e属于FOLLOW(S) 所以冲突无法解决。(不是SLR(1)文法) FIRST(C) ={b} FIRST(S) ={e,ε} FIRST(S) ={i, a} FIRST(A) ={i, a} FOLLOW(A) ={#} FOLLOW(S) ={#, e} FOLLOW(S)={#, e} FOLLOW(C) ={t} 文法:S→L=R|R L→*R |id R→L 识别活前缀的DFA: 考察I4: 存在移进/归约冲突,不是LR(0)文法; 又由于=属于FOLLOW(R),故也不是SLR(1)文法。 非二义文法:可以增加向前看终结符个数解决冲突,如LL(2)或LR(2); 二义文法:无论向前看多少个终结符,也无法解决二义性。 结论:二义文法不是上下文无关文法。 利用YACC设计语法分析器,关键也是了解和掌握两点: ① YACC提供什么形式的产生式,如何运用它们设计语法分析器所需的文法; ② YACC提供什么样的机制支持语义动作的嵌入,如何运用这些机制进行语义处理,如算术表达式值的计算、构造所分析句子的语法树等。 1 程序设计语言与文法 正规式与正规文法 上下文无关文法: CFG=(S, N, T, P) 文法分类:0型、1型、2型和3型 产生语言的基本方法-推导:句子与句型、直接推导与推导、最左推导与左句型 分析树与语法树: 分析树记录推导过程并反映语言结构 语法树仅反映语言结构而忽略推导过程(树中没有非终结符) 二义性与二义性

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档