分析表的构造(编译原理)综述.pptxVIP

  1. 1、本文档共32页,可阅读全部内容。
  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文档。上传文档
查看更多
分析表的构造(编译原理)综述

LR(0)分析表的构造 步骤一: 构造识别文法活前缀的确定有穷自动机(DFA) 步骤二: 根据DFA构造相应的LR(0)分析表 识别活前缀的确定的有穷自动机 方法1:根据形式定义求出活前缀的正规表达式,然后由此正规表达式构造NFA再确定化为DFA ε,a,ab ε,a,aA,aAb ε, a,aA,aAc,aAcd ε, a, aA,aAc,aAcB,aAcBe ε,S 对于一个适用的高级语言的文法,用方法1构造识别活前缀的有限自动机从理论的角度讲是很严格的,实现起来却是很复杂的。 识别活前缀的确定的有穷自动机 方法2:求出文法的所有LR(0)项目,按一定规则构造识别活前缀的NFA再确定化为DFA 例如,文法G: E → aA|bB A → cA| d B → cB| d 步骤一: 用增广文法表示成 文法G’: S’→E E → aA|bB A → cA| d B → cB| d 文法G’的项目有: 1.S’→·E 2.S’→E · 3.E →·aA 4.E →a·A 5.E →aA· 6. A →· cA 7. A → c·A 8. A → cA· 9. A → ·d 10. A → d · 11. E →·bB 12. E →b·B 13. E →bB· 14. B →· cB 15. B → c·B 16. B → cB· 17. B →·d 18. B → d· 1 * 步骤三: 初态(初始项目) 句子识别态(接受项目) 句柄识别态(规约项目) 文法G’的项目有: 1.S’→·E 2.S’→E · 3.E →·aA 4.E →a·A 5.E →aA· 6. A →· cA 7. A → c·A 8. A → cA· 9. A → ·d 10. A → d · 11. E →·bB 12. E →b·B 13. E →bB· 14. B →· cB 15. B → c·B 16. B → cB· 17. B →·d 18. B → d· 1 * E 3 4 a A 6 7 c A 9 d 11 12 b B 14 15 c B 17 d 步骤四: 找源自同一产生式的项目,添加状态间的连线 文法G’的项目有: 1.S’→·E 2.S’→E · 3.E →·aA 4.E →a·A 5.E →aA· 6. A →· cA 7. A → c·A 8. A → cA· 9. A → ·d 10. A → d · 11. E →·bB 12. E →b·B 13. E →bB· 14. B →· cB 15. B → c·B 16. B → cB· 17. B →·d 18. B → d· 1 * E 3 4 a A 6 7 c A 9 d 11 12 b B 14 15 c B 17 d ε ε ε ε ε ε ε ε ε ε 步骤四: 1.找待约项目 2.与以其后的非终结符作为产生式头的圆点在最左的项目,用空弧与之连接 T0= { 1, 3, 11} T1= {2} T2= {4, 6, 9} T3= { 12, 14, 17} T4= {6, 7, 9} T5= { 14, 15, 17} T6= { 5 } T7= { 13 } T8= { 8 } T9= { 16 } T10= { 10 } T11= { 18} 状态 输入符号 a b c d A B E T0 T2 T3 ? ? ? ? T1 T1 ? ? ? ? ? ? ? T2 ? ? T4 T10 T6 ? ? T3 ? T7 T5 T11 ? ? ? T4 ? ? T4 T10 T8 ? ? T5 ? ? T5 T11 ? T9 ? T6 ? ? ? ? ? ? ? T7 ? ? ? ? ? ? ? T8 ? ? ? ? ? ? ? T9 ? ? ? ? ? ? ? T10 ? ? ? ? ? ? ? T11 ? ? ? ? ? ? ? 步骤五:运用子集法将其确定化 0 E 确定化的DFA 4 2 3 5 a b c d A c A d b d c d B c * E 2 a b c d A c A d b d c d B c S’→·E E →·aA E →·bB A →· cA A → c·A A → ·d E →a·A A →· cA A → ·d S’→E · E →b·B B →· cB B →·d B → c·B B →· cB B →·d A → cA· A → d · E →aA· E →bB· B → d· B → cB· 步骤六:把每个子集所含状态集对应的项目写在新的状态中,得到识别活前缀的有限自动机DFA * 使用方法2构造识别活前缀的DFA,需要列出拓广文法的所有项目,按规定规则构造其NFA,然后再确定化为DFA,

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档