- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 第6章-LR分析-小结
* Compiler Construction Principles * Formal Languages and Automata LR分析法 大多数用上下文无关文法描述的语言都可以用相应的LR分析器予以识别。 1. LR分析法是一种规范归约分析法, 2. 从给定的上下文无关文法构造LR分析表的方法是: 对LR(1)或 LALR(1)分析表,构造 LR(1)项目集规范族。 (1)对LR(0)或 SLR(1)分析表,构造 LR(0)项目集规范族; (2)构造识别文法规范句型活前缀的DFA。 (3)将DFA转换成相应的LR分析表。 注意文法一定要拓广。 四种分析表的构造基本相同,仅对含归约项目的项目集构造分析表元素不同。 3. 四种LR文法的判别方法 (1)任何的二义性文法都不是LR类文法。 ② SLR(1)文法是LR(0)项目集中所有含冲突的项目集都能用SLR规则解决冲突。 (或SLR(1)分析表中不含多重定义) (2)根据项目集中是否含冲突项目或相应分析表中是否含多重定义元素进行判断: ① LR(0)文法是所有的LR(0)项目集中没有移进一归约冲突或归约一归约冲突。(或LR(0)分析表中不含多重定义) SLR规则: I: { A→α .bβ B 1→ γ1. B2 → γ2. } {b} ∩FOLLOW(B1)=Φ FOLLOW(B1)∩FOLLOW(B2)=Φ {b} ∩FOLLOW(B2)=Φ a ∈ {b} 移进 a ∈ FOLLOW(B1) 用B 1→ γ1 归约 a ∈ FOLLOW(B2) 用B2 → γ2 归约 ③ LR(1)项目集中无移进一归约冲突或归约一归约冲突。(或LR(1)分析表中不含多重定义) ④?LALR(1)项目集中无归约一归约冲突。(或LALR(1) 分析表中不含多重定义) 4.四种LR类文法之间的关系 注意展望符只对归约项目起作用。 例1 设有文法G[S]: S →(S) |ε 试判断该文法是否SLR(1)文法,若不是,请说明理由;若是,请构造SLR(1)分析表。 解:首先将文法拓广,并给出每条规则编号 0. S′→S 1. S →(S) 2. S →ε I0: S′→·S S →·(S) S →· I3: S →(S·) 构造该文法的LR(0)项目集族和转换函数如下图所示。 该文法不是LR(0)文法。因为I0,I2中含有移进—归约的冲突。 I1: S→S. I2: S →(·S) S →·(S) S →· I4: S →(S)· S ( S ( ) 0. S →S 1. S →(S) 2. S →ε 见表 但是I0,I2中的移进—归约的冲突可以用SLR(1)方法解决: FOLLOW(S)={), #}∩{(}=? 所以该文法是SLR(1)文法。 其SLR(1)分析表如下表: ACTION GOTO ( ) # S O 1 2 3 4 S2 r2 r2 acc 1 S2 r2 r2 3 S4 r1 r1 文法G[S]的SLR(1)分析表 0. S →S 1. S →(S) 2. S →ε 见图 例2 设有文法G[S]: 试证明该文法是SLR(1)文法,但不是LR(0)文法。 解:首先将文法拓广,并对规则进行编号 直接构造LR(0)项目集如下: S →aSb | aSd |ε 0. S →S 1. S →aSb 2. S →aSd 3. S →ε I0: S →·S S →·aSb S →·aSd S →· I1: S′→S· I2: S →a·Sb S →a·Sd S →·aSb S →·aSd S →· I3: S →aS·b S →aS·d I4: S →aSb· I5: S →aSd· 0. S →S 2. S →aSb 1. S →aSd 3. S →ε 检查每个项目集可知,项目集I0和I2中有移进一归约冲突,因此该文法不是LR(0)文法。 又因为 所以项目集I0和I2中移进一归约冲突可以用SLR(1)方法解决。因此该文法是SLR(1)文法,但不是LR(0)文法。 FOLLOW(S)={b,d,#}∩{a}= Φ 例3 设有文法G[S]: 2.试判断该文法是否SLR(1)文法, 若不是, 请说明理由;若是,请构造出SLR(1)分析表, 并给出符号串(( ))#的分析过程。 1.构造识别文法规范句型活前缀的DFA( LR(0)项目集族和GO函数 )。 S →S(S) |ε
您可能关注的文档
- 纬度与纬线.ppt
- 纵波演示仪生产厂家.pptx
- 线性代数 对角化.ppt
- 线性代数(各版通用)20讲非齐次方程组.ppt
- 线性代数(各版通用)21讲几何应用,习题课.ppt
- 纽约古根汉姆博物馆.ppt
- 线性代数与空间几何ch1-1讲义.ppt
- 线性代数与解析几何1-3.ppt
- 线性代数实践5章(试点班2).ppt
- 纸船浮力科学报告.ppt
- 白天晚上教学课件.ppt
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题带答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解一套.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及完整答案详解1套.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及参考答案详解1套.docx
- 2025年山东菏泽市事业单位招聘急需紧缺岗位目录(第一批)笔试模拟试题参考答案详解.docx
- 2025年山东菏泽市牡丹区中医医院引进急需紧缺专业技术人才30人笔试模拟试题及答案详解1套.docx
- 画西瓜教学课件.ppt
文档评论(0)