![第五章 LR(0)方法_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/fc73442a-c665-46cd-b540-ac0b64436bce/fc73442a-c665-46cd-b540-ac0b64436bce1.gif)
![第五章 LR(0)方法_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/fc73442a-c665-46cd-b540-ac0b64436bce/fc73442a-c665-46cd-b540-ac0b64436bce2.gif)
![第五章 LR(0)方法_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/fc73442a-c665-46cd-b540-ac0b64436bce/fc73442a-c665-46cd-b540-ac0b64436bce3.gif)
![第五章 LR(0)方法_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/fc73442a-c665-46cd-b540-ac0b64436bce/fc73442a-c665-46cd-b540-ac0b64436bce4.gif)
![第五章 LR(0)方法_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/13/fc73442a-c665-46cd-b540-ac0b64436bce/fc73442a-c665-46cd-b540-ac0b64436bce5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、l5.1 自底向上的语法分析方法概述自底向上的语法分析方法概述l5.2 LR(0)分析的有限自动机分析的有限自动机l5.3 LR(0) 分析分析l5.4 SLR(1) 分析分析l5.5 LR(1) 分析分析l5.6 LALR(1) 分析分析l5.7 LALR(1) 语法分析器的自动生成器语法分析器的自动生成器 (YACC)l自底向上的分析过程自底向上的分析过程lLR分析机制分析机制lLR分析的关键问题分析的关键问题 P:(1) Z ABb(2) A a (3) A b(4) B b(5) B c(6) B bBa b c b输入输入符号栈符号栈动作动作abcbabcb移入移入a abcbbcb
2、归约归约(2)(2)A Abcbbcb移入移入AbAbcbcb移入移入AbAbc cb b归约归约(5)(5)AbAbB Bb b归约归约(6)(6)ABABb b移入移入归约归约(1)(1)ABbABbZ Z成功成功自底向上分析过程是从所给自底向上分析过程是从所给输入串输入串出发,对其进行出发,对其进行最左归约最左归约的过程。的过程。分析栈分析栈输入输入#aLR驱动程序驱动程序: - shift(移入移入) :移入型规范活前缀移入型规范活前缀 - reduce(归约归约):可归约规范活前缀可归约规范活前缀 LR分析表分析表规范活规范活前缀前缀l如何判定规范活前缀如何判定规范活前缀?l如何判定
3、移入型规范活前缀如何判定移入型规范活前缀?l如何判定归约规范活前缀以及用哪一如何判定归约规范活前缀以及用哪一个产生式归约个产生式归约?l如何判定分析结束如何判定分析结束?LR(k)自动机可以解决这些问题自动机可以解决这些问题!l构造构造LR(0)自动机的依据自动机的依据 - 派生定理派生定理 l应用派生定理的例子应用派生定理的例子lLR(0)自动机自动机 LR(0) item (项项)LR(0) automatal构造构造LR(0)自动机的过程自动机的过程l派生定理派生定理: 给出了对任意一个给出了对任意一个CFG构造归约构造归约规范活前缀的方法规范活前缀的方法11* * 把把CFGCFG扩展
4、为增广文法扩展为增广文法 , Z , Z S S; ;2 2 文法开始符文法开始符Z Z或或S S是归约规范活前缀是归约规范活前缀; ;3 3 如果如果 A A 是一个是一个归约规范活前缀归约规范活前缀, , 且有产生且有产生式式A A, ,那么那么, , 也是一个也是一个归约规范活前缀归约规范活前缀; ; ( ( , , 和和 是由终极符和非终极符构成的符号串是由终极符和非终极符构成的符号串, ,也可以是空串也可以是空串) )4 4 任何一个归约规范活前缀都是按照任何一个归约规范活前缀都是按照33方式方式派生出来的派生出来的; ;(证明略)l1 Sl2 S和和S aAc产生产生aAcl3 a
5、Ac和和A Abb产生产生aAbbl4 aAc和和A b产生产生abl5 aAbb和和A Abb产生产生aAbbl6 aAbb和和A b产生产生abl7最后最后,合起来得到合起来得到 S, aAc, aAbb, abVT = a, b, cVN = S, AS = SP: S aAc A Abb A bl1 Sl2 S和S aAc产生aAcl3 aAc和A ABb产生aABbl4 aAc和A a产生aal5 aABb和B bB产生aAbBl6 aABb和B b产生aAbl7 aAbB和B bB产生aAbbBl8 aAbB和B b产生aAbblVT = a, b, cVN = S, A, BS
6、= SP: S aAc A ABb A a B bB B blLR(0) 项目项目:带圆点的产生式带圆点的产生式,圆点只能出现圆点只能出现在产生式的右部符号串的任意位置在产生式的右部符号串的任意位置;产生式产生式SaAc,LR(0)项目:项目:lS aAclS a AclS a A clS a Ac 特别地,空产生式特别地,空产生式: S , 对应对应LR(0)项目项目S lLR(0)项目集合项目集合IS关于符合关于符合X的投影的投影IS 是一个是一个LR(0)项目的集合项目的集合;X 是一个符号是一个符号(终极符或非终极符终极符或非终极符);IS(X)表示项目集表示项目集IS关于符号关于符号
7、X的投影的投影:IS(X) = S X | S X IS, X VT VNIS(x)只对只对IS中圆点后面是中圆点后面是X的项目起作用,所起的项目起作用,所起的作用就是将圆点从的作用就是将圆点从X的前面移到的前面移到X的后面的后面lIS = A A Bb, B a , B b B , Z cBlX = BlIS(B) = A AB b, B bB lLR(0)项目集合的闭包项目集合的闭包IS 是 LR(0)项目的集合;CLOSURE(IS)也是一个LR(0)项目集合, 按照下面的步骤计算:l1 初始, CLOSURE(IS) = ISl2 对于CLOSURE(IS)中没有处理的LR(0)项目,
8、l 如果该项目的圆点后面是一个非终极符A, l 而且A的全部产生式是A1, , Anl 则增加如下LR(0)项目到CLOSURE(IS)l A 1, , A nl 3 重复2直到 CLOSURE(IS)收敛;VT = a, b, cVN = S, A, BS = SP: S aAc A ABb A Ba B bIS = S aAcCLOSURE(IS) = S aAcIS = S aAcCLOSURE(IS) = S aAc, A ABb, A Ba, B b lgoto函数IS 是 LR(0)项目集合;X 是一个符号(VT or VN终极符或非终极符);goto(IS, X) = CLOSU
9、RE(IS(x) lCFG G=VT, VN, S, P 的LR(0)自动机l(,SS,S0,TS, ) 是否需要是否需要 增广产生式增广产生式 Z S ? = VT VN#S0 = CLOSURE(Z S) SSTS 构造构造 LR(0)自动机的过程中逐步生成的。自动机的过程中逐步生成的。1增广产生式增广产生式 Z S2 = VT VN #3S0 = CLOSURE(Z S)4SS = S05对于对于SS中的每一个项目中的每一个项目IS, 和每个符号和每个符号X , 计算计算IS = goto(IS, X), 如果如果IS不为空不为空, 则则 建立建立 IS IS, 如果如果IS不为空且不为
10、空且IS不属于不属于SS,则把则把IS加入加入SS;6重复重复5直到直到SS收敛收敛;7终止状态终止状态:包含形如包含形如A 项目的项目集合项目的项目集合;XVT = a, b, cVN = S, A, BS = SP: S aAc A ABb A Ba B b Z SS aAc Z S Sa S a AcA ABb A BaB b A S aA c A A BbB b bB A B aa A Ba B b S aAc cB A AB bb A ABb b0*VT = a, b, cVN = S, A, BS = SP: S aAc A ABb A Ba B Z SS aAc Z S Sa S
11、 a AcA ABb A BaB A S aA c A A BbB B A B bb A Bb S aAc cB A AB b A ABb b0*l1 Sl2 S和S aAc产生aAcl3 aAc和A Abb产生aAbbl4 aAc和A b产生abl5 aAbb和A Abb产生aAbbl6 aAbb和A b产生abl7最后,合起来得到 S, aAc, aAbb, abVT = a, b, cVN = S, AS = SP: S aAc A Abb A bVT = a, b, cVN = S, AS = SP: S aAc A Abb A b Z S S aAcS Z S a S a Ac A
12、Abb A bA S aA cA A A bbbbb A b c S aAc b A Ab b b b A Abb LR(0)自动机接受的语言恰好是归约规范活前缀的集合:S,aAc,aAbb,abVT = a, b, cVN = S, A, BS = SP: S aAc A ABb A a B bB B bl1 Sl2 S和S aAc产生aAcl3 aAc和A ABb产生aABbl4 aAc和A a产生aal5 aABb和B bB产生aAbBl6 aABb和B b产生aAbl7 aAbB和B bB产生aAbbBl8 aAbB和B b产生aAbblVT = a, b, cVN = S, A, B
13、S = SP: S aAc A ABb A a B bB B b Z S S aAcS Z S a S a Ac A ABb A aA S aA cA A BbB bBB ba A a c S aAc bB b BB b B bBB bB B bB B A AB b b b A ABb bl结论结论:一个一个CFG的的LR(0)自动机接受的是该自动机接受的是该CFG的所有的所有LR0归约规范活前缀归约规范活前缀;l5.1 自底向上的语法分析方法概述自底向上的语法分析方法概述l5.2 LR(0)分析的有限自动机分析的有限自动机l5.3 LR(0) 分析分析l5.4 SLR(1) 分析分析l5.5
14、 LR(1) 分析分析l5.6 LALR(1) 分析分析l5.7 LALR(1) 语法分析器的自动生成器语法分析器的自动生成器 (YACC)l派生定理派生定理lLR(0)项目项目lLR(0)项目集的闭包项目集的闭包lLR(0)项目集关于符号项目集关于符号X的投影的投影lLR(0)自动机的构造过程自动机的构造过程lLR(0) 自动机的相关概念自动机的相关概念lLR(0) 文法文法lLR(0) 语法分析方法语法分析方法LR(0) 分析表分析表LR(0) 分析的驱动程序分析的驱动程序lLR(0) 分析过程分析过程l移入项目移入项目: A a , a VTl归约项目归约项目: A ,l接受项目接受项目
15、: Z S , (Z S是增广产生式是增广产生式)l移入状态移入状态:包含移入项目的状态包含移入项目的状态l归约状态归约状态:包含归约项目的状态包含归约项目的状态l冲突状态冲突状态(同一个状态中同一个状态中):包含不同的归约项目,则称该状态存在包含不同的归约项目,则称该状态存在归约归约-归约冲突归约冲突 ;既包含移入项目,又包含归约项目,则称该状态存在既包含移入项目,又包含归约项目,则称该状态存在移移入入-归约冲突归约冲突l给定一个上下文无关文法给定一个上下文无关文法 GlLR0 是是G的的LR(0)自动机自动机l如果如果LR0的任意一个状态都不存在冲突的任意一个状态都不存在冲突(归归约约-归
16、约冲突、移入归约冲突、移入-归约冲突归约冲突), 则则G称为称为LR(0)文法文法;l可以推知:在可以推知:在LR(0)文法中,文法中,任意状态或者是移入状态任意状态或者是移入状态,或者是归约状态或者是归约状态如果是归约状态如果是归约状态,一定存在一个一定存在一个唯一唯一的归约项的归约项目目,该归约项目对应一个产生式该归约项目对应一个产生式p,因此因此, 该归约该归约状态称为状态称为p-归约状态归约状态StackInput#aLR驱动程序驱动程序: - shift(移入移入) : 移入型规范活前缀移入型规范活前缀 - reduce(归约归约): 归约规范活前缀归约规范活前缀 LR分析表分析表规
17、范活规范活前缀前缀状态栈状态栈action表表goto表表LR(0)驱动程序驱动程序VT = a, b, cVN = S, A, BS = SP: (1) S aAc (2)A ABb (3)A Ba (4)B b Z SS aAc Z S Sa S a AcA ABb A BaB b A S aA c A A BbB b bB A B aa A Ba B b S aAc cB A AB bb A ABb b0123567894P: (0) Z S (1) S aAc (2)A ABb (3)A Ba (4)B ba b a c符号栈输入流分析动作 abac#移入abac#移入abac#归约
18、(4)aBac#移入aBac#归约(3)aAc#移入aAc#归约(1)S#归约(0)Z#接受状态状态栈栈符号符号栈栈输入输入流流分析动作分析动作0abac# 移入移入02abac#移入移入027abac#归约归约 (4)025aBac#移入移入0256aBac#归约归约(3)023aAc#移入移入0234aAc#归约归约(1)01S#归约归约(0)01Z#接受接受P: (0) Z S (1) S aAc (2)A ABb (3)A Ba (4)B ba b a claction表表lgoto表表laction表 终极符终极符状状 态态 a1#S1Sn action(Si,a) = Sj, 如果
19、Si到Sj有a输出边 action(Si,c) = Rp, 如果Si是p-归约状态,cVt # action(Si,#) = accept, 如果Si是接受状态 action(Si,a) = error, 其他情形lgoto表 非终极符非终极符状状 态态 A1S1Sngoto (Si, A) = Sj, 如果Si到Sj有A输出边 goto (Si, A) = error,如果Si没有A输出边VT = a, b, cVN = S, A, BS = SP: (1) S aAc (2)A ABb (3)A Ba (4)B b Z SS aAc Z S Sa S a AcA ABb A BaB b A S aA c A A BbB b bB A B aa A Ba B b S aAc cB A AB bb A AB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理运营合作合同范本
- 购物广场门面房租赁合同范本
- 园林绿化养护协议书范本
- 电梯维护保养协议书
- 生态旅游区改造合同样板
- 食品添加剂危险品运输合同
- 2025年度数据中心弱电布线与网络安全保障合同
- 矿石运输途中检验协议
- 高速公路居间合同
- 养殖场转让合同协议
- 2024年04月浙江义乌农商银行春季招考笔试历年参考题库附带答案详解
- 涉密计算机保密培训
- 挂靠免责协议书范本
- 2024年浙江省五校联盟高考地理联考试卷(3月份)
- 在线心理健康咨询行业现状分析及未来三至五年行业发展报告
- 电动三轮车购销合同
- 淋巴瘤的免疫靶向治疗
- 炎症性肠病的自我管理
- 国防动员课件教学课件
- 《地理信息系统GIS》全套教学课件
- 技术序列学习地图(2023年)
评论
0/150
提交评论