编译原理ch5 自下而上语法分析-part2.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理ch5 自下而上语法分析-part2

SLR(1)分析表的构造: 5.6 LR(1)分析 构造以LR(1)项目子集为状态的识别可归前缀的有穷自动机 LR(1)分析表 LR(1)分析表构造 文法5.10的LR(1)分析表: LR(1)项目集规范族 * * ☆ 分析表 是一个矩阵: 行---分析器的状态 列----文法符号 状态 符号 E T F S0 S1 S2 : Sn GOTO表 a. 状态转移表 (GOTO表) * * GOTO[Si-1, Xi]=Si Si-1 ---当前状态(栈顶状态) Xi --- 新的栈顶符号 Si ------ 新的栈顶状态(状态转移) Si需要满足条件是: 若X1X2…. Xi-1是由S0到Si-1所识别的规范句型的活前缀,则X1X2…. Xi是由S0到Si所识别的规范句型的活前缀 #S0X1S1X2...... Xi-1Si-1 XiSi 状态 符号 E T F S0 S1 S2 : Sn GOTO表 * * 通过对有穷自动机的了解,我们可以看出: 状态转移函数GOTO定义了一个以文法符号集为字母表的有穷自动机,该自动机识别文法所有规范句型的活前缀及可归前缀。 M=(S, V, GOTO, S0, Z) S0 S1 Si-1 S2 Si X1 X2 Xi-1 Xi * * b. 分析动作表(ACTION表) Sn 状态s 输入符号a i + * ( ) # S0 S1 S2 : ACTION表 ACTION[Si,a]=分析动作 a∈VT 识别为活前缀的,则移进;识别为可归前缀的,则归约。 * * 分析动作: 1)移进(Shift) ACTION[Si,a]=Sj 动作:将a推进栈,并设置新的栈顶状态Sj Sj=GOTO[Si,a],将指针指向下一个输入符号 2)规约(Reduce) ACTION[Si,a]=rd d:文法规则编号 (d) A→β 动作:将符号串β(假定长度为n)连同状态从栈内弹出把A推进栈,并设置新的栈顶状态Sj , Sj=GOTO[Si-n,A] 3)接受(accept) ACTION[Si,#]=accept 4)出错(error) ACTION[Si,a]=error * * ☆ 控制程序:(Driver Routine) 1) 根据栈顶状态和现行输入符号,查分析动作表(ACTION表),执行有分析表所规定的操作; 2) 并根据GOTO表设置新的栈顶状态(即实现状态转移) 构造LR分析器的关键是构造其分析表 构造LR分析表的方法是: (1)根据文法构造识别规范句型活前缀的有穷自动机DFA (2)由DFA构造LR分析表 * * 5.4 LR(0)分析 * * 1. 构造DFA (1) DFA是一个五元式 M=(S, V, GOTO, S0, Z) S:有穷状态集 在此具体情况下,S=LR(0)项目集规范族。 LR(0)项目集规范族:由项目集构成的集合. V:文法字汇表 VN∪VT S0:初始状态 GOTO:状态转移函数 GOTO[Si,X]=Sj Si ,Sj∈S Si ,Sj为项目集合 X∈VN∪VT 表示当前状态Si面临文法符号为X时,应将状态转移到 Sj Z:终态集合 * * 1) 确定S集合,即LR(0)项目集规范族,同时确定S0 2) 确定状态转移函数GOTO ∴构造DFA方法: 确定状态集合 每一个状态对应文法中某一个产生式规则的某一个项目 每一个产生式规则的每一个项目代表一个活前缀的识别状态 产生式规则的项目? * * LR(0)分析 * * 项目:文法G的每个产生式(规则)的右部添加一个圆点就构成一个项目。 例:产生式:A→XYZ 项 目: A→.XYZ A→X.YZ A→XY.Z A→XYZ. 产生式:A→ε 项 目: A→. 项目的直观意义:指明在分析过程中的某一时刻已经归约的部分和等待归约的部分。 其中, ε、 X、XY、 XYZ为活前缀,XYZ是可归前缀。 * * 例如:产生式S?aAcBe对应有6个项目。 [0] S?·aAcBe [1] S?a·AcBe [2] S?aA·cBe

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档