- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例如: 有算术表达式文法G[E],构造其LR(0)项目规范簇和SLR(1)分析表。G[E]: E→E+T?T T→T*F?F F→(E) ? i 3、解决冲突 那么,当在状态I面临某输入符号为a时,则动作可由下述规定决策: 1)若a = b,则移进。 2)若a ∈ FOLLOW(A),则用产生式A→?归约。 3)若a ∈ FOLLOW(B),则用产生式B→?归约。 一般地,对于LR(0)规范族的一个项目集I可能含有多个移进项目和多个归约项目,我们可假设项目集I中有m个移进项目: A1→?1. b1?1, A2→ ?2. b2?2, …, Am→ ?m. bm?m;同时含 有n个归约项目:B1→?1. , B2→ ?2. ,…, Bn→ ?n. ,只要集合 {b1, b2,…bm}和FOLLOW(B1),FOLLOW(B2),…,FOLLOW(Bn) 两两交集都为空,则我们仍可用上述归则来解决冲突: 1)若a∈{b1, b2,…,bm},则移进。 2)若a∈FOLLOW(Bi),i=1,…,n,则用Bi→ ?i进行归约。 3)此外,则报错。 所以,我们只须把构造LR(0)分析表算法中的规则(2),即: (2)若Ii中有归约项目A→?. ,设A→?为文法第j个产生式,则对 文法的任何终结符和“#”(均记为a)置ACTION[i,a]=Rj 。 修改为: 即: (1)对于每一项目集Ii中形如A.X的项目,且有GO(Ii,X)=Ij, 若X为一终结符号a时,则置ACTION[I,a]=S; 若X为一非终结符号时,则仅置GOTO[i,X]=j; (2)若归约项目A→?.属于Ii,设A→?为文法第j个行产生式,则 对任何属于FOLLOW(A)的输入符号a,置ACTION[i,a]=Rj; (3)若接受项目S → S.属于Ii ,则置ACTION[i,#]=acc。 (4) 在分析表,凡不能按上述规则填入信息的元素,均置为“出错”。 (2)若归约项目A→?.属于Ii,设A→?为文法第j个行产生式,则对任何属于FOLLOW(A)的输入符号a,置ACTION[i,a]=Rj 。 其余的规则不变,就得到了构造SLR(1)分析表的算法。 解:1、拓广文法为G[S] : (0) S→E E→E+T E→T T→T*F T→F F→(E) F→i * 第六章 LR 分析法 1965年,D.knuth首先提出了LR(K)文法及LR(K)分析技术。 LR(K)分析是指自左向右扫描和自底向上的语法分析,且 在分析的每一步,只须根据分析栈中当前已移进和归约出的 全部文法符号,并至多再向前查看K个输入符号,就能确定 相当于某一产生式右部符号的句柄是否已在分析栈的顶部形 成。从而也就可以确定所应采取的分析动作(是移进输入符号 还是按某产生式进行归约)。 当前扫描到Xn+1,向前查看k个符号,来确定是把 Xn+1移进栈,还是把Xi…Xn作为句柄进行归约。 1) 要归约时,则根据某产生式U→XiXi+1…Xn进行归约: #X1X2…Xi-1UXn+1Xn+2…Xn+k…# 例:#X1X2…Xi… Xn Xn+1Xn+2…Xn+kXn+k+1…# 栈顶 (续页) LR(0) 表示在每一步分析时都不用向前输入符号 LR(1) 表示在每一步分析时都向前看一个输入符号来决定当 前的动作。 SLR(1) 表示简单的LR(1),即只在动作不唯一的地方向前看一 个符号,在动作唯一时则不向前看输入符号。 2) 要移进时,即把Xn+1进栈,并读下一符号: #X1X2…Xi…XnXn+1 Xn+2…Xn+k…# 在栈中 当前扫描符 栈顶 6.1 LR分析概论 一 .LR分析器的逻辑结构及工作过程 从逻辑上来说,一个LR分析器如图: 输入串 # … ai … a1 Sp→ X1 # S1 S0 ┋ ┋ ┋ ┋ Xm Sm 总 控 程 序 输出 ACTION 表 GOTO 表 其中S栈为状态栈 X栈为符号栈 栈 即一个LR(k)分析器主要由:总控程序,分析栈(状态栈和符号栈)输入队列和分析表组成。一般来说所有LR分析器的总控程序基本上是大同小异。只有分析表各不相同。一般主要讨论三种不同的分析表的构造方法。 第一种称为规范LR分析表构造法。用此法构造的分析表功能最强而且也适合于很多文
您可能关注的文档
最近下载
- TB-T 2491-1994 扣件组装疲劳试验方法.pdf VIP
- 短节段融合内固定治疗成人退变性脊柱侧凸并发症-中国骨与关节杂志.pdf VIP
- 2025年银行纪检笔试题目及答案.doc VIP
- 《企业经营决策讲义》课件.ppt VIP
- 中小学生牛奶配送项目 投标方案.docx
- 2024年贵州省黔东南苗族侗族自治州凯里市鸭塘镇招聘社区工作者真题及参考答案详解.docx VIP
- 样板工程验收记录.docx
- YY_T 0466.1-2023 医疗器械 用于制造商提供信息的符号 第1部分通用要求.pdf
- 七年级数学新课标下的单元教学设计实践研究.docx VIP
- 燃气发生器结构和系统详解.ppt VIP
文档评论(0)