编译原理课件-(7).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理课件-(7).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件
- 资源描述:
-
1、湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月第7章 自下而上的LR(k)分析方法LR(k)分析器是这样一种分析程序:它总是按从左至右方式扫描输入串,并按自下而上方式进行规范归约。在这种分析过程中,它至多只向前查看k个输入符号就能确定当前的动作是移进还是归约;若动作为归约,则它还能唯一地选中一个产生式去归约当前已识别出的句柄(这里称为活前缀)。若该输入串是给定文法的一个句子,则它总可以把这个输入串归约到文法的开始符号;否则报错,指明它不是该文法的一个句子。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月7.1 LR(k)文法和LR(k)分析方法7.2 LR(0
2、)分析表的构造7.3 SLR分析表的构造7.4 规范LR(1)分析表的构造7.5 LALR分析表的构造7.6 无二义性规则的使用7.7 小结湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月7.1 LR(k)文法和LR(k)分析器 给定文法G,S是其开始符号。考虑该文法中一个终结符号串w的一个规范推导 S=w1=w2=w 假定 uAv=uxv 是上述推导中的一个推导步。A:=x是用于该推导步的产生式。 对于每一个这样的推导和推导步,仅通过扫描ux和查看v中开始的k个符号就能唯一确定选用产生式A:=x,我们就称G为LR(k)文法。湖北大学数计学院计科系湖北大学数计学院计科系 200
3、8年年3月月 LRLR分析器的逻辑结构分析器的逻辑结构 一个输入、一个输出、一个栈、一个驱动程序和一张分析表。 id+id*id$ SmXmSm-1Xm-1S0LR驱动程序动作 转移action goto输出湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月分析动作表(ACTION): 移进 ai 和s=gotosm,ai进栈actionsm,ai=归约 rj : A:=Xm-r+1Xm-r+2Xm 接收 s=gotosm-r , A 错误处理LR分析器的分析表:分析动作表和goto函数表GOTO函数表:GOTOsi,xj规定了当状态si面临文法符号xj时所应到达的下一状态。湖北
4、大学数计学院计科系湖北大学数计学院计科系 2008年年3月月格局(构形):(栈中符号序列,剩余输入符号串) 开始:(s0, a1 a2 an$) 中间:(s0 x1s1x2s2xmsm ,aiai+1an$)LR分析器的工作过程1. 若actionsm ,ai=si 则把ai,si=actionsm ,ai推进栈。格局:(s0 x1s1x2s2xmsm aisi , ai+1an$)湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月2. 若actionsm ,ai=r (A:=xm-r+1xm-r+2xm) ,则格局:(s0 x1s1x2s2xm-rsm-r As , ai ai
5、+1an$)其中,s=gotosm-r ,A3.若actionsm ,$=accept,则分析结束。4 .若actionsm,ai=error,则转出错处理程序。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月状态ACTIONGOTOid+*()ETF0S5S41231S6acc2R2S7R2R23R4R4R4R44S5S48235R6R6R6R66S5S4937S5S4108S6S119R1S7R1R110R3R3R3R311R5R5R5R51 E:=E+T2 E:=T3 T:=T*F4 T:=F5 F:=(E)6 F:=id湖北大学数计学院计科系湖北大学数计学院计科系 20
6、08年年3月月7.2 LR(0)分析表的构造 LR分析方法的基本原理是:把每个句柄(某个产生式的右部)的识别过程划分为若干状态,每个状态从左至右识别句柄中的一个符号,若干个状态就可识别句柄左端的一部分符号。识别了句柄的这一部分就相当于识别了当前规范句型的左起部分规范句型的活前缀。因而,对句柄的识别就变成了对规范句型活前缀的识别。 LR(0)分析程序,即在分析的每一步,仅根据当前的栈顶状态就能确定应执行何种分析动作,而无须向前查看任何输入符号。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月规范句型的活前缀 活前缀(Viable Prefix)是指规范句型的一个前缀,它不包含该句
7、型的句柄右边的任何符号。活前缀和句柄的关系:1. 活前缀不含有句柄的任何符号, ;2. 活前缀含有句柄的部分符号, 1 ;3. 活前缀已含有句柄的全部符号, 。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月LR(0)项目 用圆点“ ”表示识别一个产生式右部符号到达的位子,若有规则 AXYZ,则有下面四个项目: A XYZ A X YZ A X Y Z A X YZ 另:A, A 以上项目称作LR(0)项目。项目指明在分析过程的某一时刻,已经看到一个产生式的多少。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月文法G的拓广文法 给定文法G,S是其开始符号,我们构
8、造一个与S相关的文法G:它包含整个G,而且外加一个新产生式S:=S。其中,S是G的开始符号,称G为G的拓广文法。A a aVT 移进项目A B BVN 待归约项目A 归约项目SS 接收项目湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月CLOSURE(I)函数设I是文法G的一个LR(0)项目集合 closure(I)是从I出发用下面三个规则构造的项目集: 1I中每一个项目都属于closure(I)。 2若项目AB closure(I)且BP 则将B加进closure(I)中。 3重复执行(2)直到closure(I)不再增大为止。 湖北大学数计学院计科系湖北大学数计学院计科系
9、2008年年3月月goto(I,X)函数若I是G的一个LR(0)项目集, X VTVN 则 goto(I,X)=closure(J) 其中, J=AX|当AX I时 goto(I,X)称为转移函数。项目AX称为AX的后继。I:AXJ:AXX湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月LR(0)项目集规范族LR(0)项目集规范族的构造 PROCEDURE ITEMS(G ); BEGIN C:=closure( S S) ; REPEAT FOR IC 和 X VT VN 把goto(I,X) 加入到C中 UNTIL C不再增大 END;最后得到的C就是拓广文法G的LR(0)
10、项目集规范族。DFA m=(VTVNS, Q项目集规范族, q0= closureS S,Q,=go(I,X) )它识别文法G的所有活前缀。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月有效项目 一个项目Ax.y称为对某个活前缀ux是有效的,当且仅当存在某个规范推导 S=uAv=uxyv其中,xy是规范句型uxyv的句柄,v是一个终结符号串。* 项目Ax.y对活前缀ux有效的情况可用于判断:当发现ux已呈现于栈顶时,是应该进行归约还是进行移进。湖北大学数计学院计科系湖北大学数计学院计科系 2008年年3月月 一个活前缀w的有效项目集正是从项目集规范族对应的DFA初态出发,经由
展开阅读全文