语法分析5学习.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《语法分析5学习.pptx》由会员分享,可在线阅读,更多相关《语法分析5学习.pptx(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/3/261LR(0)项目在产生式右部加上,表示分析过程中的状态,指示产生式右部符号已经被识别了多少。A XYZ由X推导出的子串已经分析过,X出现在栈中,下一步希望看到YZ推导出的子串。第1页/共71页2023/3/262闭包运算closure若项目集I中有项目A B,且有产生式B ,则下一步希望看到由B推导出的子串,那么等同于希望看到,因此将项目B 加入 closure(I)第2页/共71页2023/3/263有效项目有效项目:如果存在规范推导 S*Aw 12w,则说项目A1 2对活前缀 1 是有效的。代表某一时刻,栈中的内容是1(活前缀)。一个活前缀的有效项目集就是从DFA的初态出
2、发,沿着标记为的路径到达的那个项目集(状态)。第3页/共71页2023/3/264项目决定了动作:移进或归约希望同一个项目集中的若干个项目没有动作冲突SLR(1)分析方法若有A 在Ii中,那么对FOLLOW(A)中的所有a,actioni,a为rj更好的避免冲突的方法第4页/共71页2023/3/265LR(1)分析法需要更多的信息,指出A 句柄之后紧跟哪个终结符才能归约S*Aaw aw,让项目带上搜索符,LR(1)项目由LR(0)项目和一个lookahead符号组成:A ,a搜索符a的集合总是Follow(A)的子集。第5页/共71页2023/3/266活前缀的有效LR(1)项目LR(1)项
3、目A,a对活前缀有效,如果存在着推导S*rm Aw rm w,其中:1.=;2.a是w的第一个符号,或者w为且a是$。第6页/共71页2023/3/267构造有效的LR(1)项目集项目A B,a对活前缀有效,必定存在S*rm Aax rm Bax,其中=。假设ax能推出by,那么,B,b对有效,b是从 能推出的开始符号,或当 可空时,b就是a。bFIRST(a)。第7页/共71页2023/3/268LALR分析表的构造1.先构造文法的LR(1)项目集族C=I0,I1,In;2.再合并C中的同心集,得到C=J0,J1,Jm;由此得到的识别活前缀的DFA实际上和LR(0)项目的DFA相同,但带上了
4、搜索符第8页/共71页2023/3/269wAwALL分析方法和LR分析方法的比较A ,LL(1)向前看下一个输入根据FIRST()确定使用哪条产生式推导;而LR(1)是在识别出整个后,再往前看1个符号,然后确定使用哪条产生式归约。SS第9页/共71页2023/3/2610在下面的推导中,最后一步用的是ALL(1)决定用该产生式的位置是First()LR(1)决定用该产生式的位置LL分析方法和LR分析方法的比较第10页/共71页2023/3/2611非LR结构例:L=wwR wa,b*S aSa bSb 第11页/共71页2023/3/2612LL分析方法和LR分析方法的比较LL(k)文法都是
5、LR(k)文法。LR文法比LL文法描述的语言更多。第12页/共71页2023/3/2613LR(1)方 法 LL(1)方 法 建立分析树的方式 自 下 而 上 自 上 而 下 归约还是推导 规范 归 约(最右推导的逆过程)最 左 推 导 决定使用产生式的时机 看见产生式右部推出的全部内容后再决定用哪个产生式进行归约 看见产生式右部推出的第一个终结符后就确定用哪个产生式进行推导 LR分析方法和LL分析方法的比较第13页/共71页2023/3/2614LR(1)方 法 LL(1)方 法 对CFG的显式限制 没有限制 无左递归、无公共左因子 分析表比较 状态文法符号 分析表大 非终结符终结符分析表小
6、 分析栈比较 状态栈,通常状态比文法符号包含更多信息 文法符号栈 LR分析方法和LL分析方法的比较第14页/共71页2023/3/2615LR(1)方 法 LL(1)方 法 确定句柄 根据栈顶状态和下一个符号便可以确定句柄和归约所用产生式 无句柄概念 语法错误 不会将出错点后的符号移入分析栈 和LR一样,不会读过出错点而不报错 LR分析方法和LL分析方法的比较第15页/共71页2023/3/261648 二义文法的应用任何二义性的文法都不是LR文法。二义文法的特点:简洁、自然例如,表达式文法二义文法:E E+E|E*E|(E)|id非二义的文法:E E+T|TT T*F|FF (E)|id语法
7、分析的效率高(基于消除二义后得到的分析表)第16页/共71页2023/3/26174.8.1 使用文法以外信息解决分析动作冲突优先级和结合规则例:规定:*优先级高于+,两者都是左结合E E+E|E*E|(E)|id第17页/共71页2023/3/2618拓广文法的LR(0)项目集I0:EEE E+EE E*EE(E)E idI1:EEE E+EE E*EI2:E(E)E E+EE E*EE(E)E idI3:E idI4:E E+EE E+EE E*EE(E)E idI5:EE*EEE+EEE*EE(E)EidI6:E(E)EE+EEE*EI7:EE+EEE+EEE*EI8:EE*EEE+EE
8、E*EI9:E(E)FOLLOW(E)=$,+,*,)移进-归约冲突第18页/共71页2023/3/2619第19页/共71页2023/3/2620SLR分析表(存在冲突)第20页/共71页2023/3/2621使用文法以外信息来解决分析动作冲突考虑id+id+id 和id+id*id 形成格局栈输入0E1+4E7*id$面临+,归约面临*,移进面临)和$,归约I7:EE+EEE+EEE*E第21页/共71页2023/3/26224.8.2 悬空else的二义性S SS iSeS|iS|a第22页/共71页2023/3/2623I0:SSS iSeSS iSS aI1:SSI2:SiSeS S
9、iSS iSeSS iS SaI3:SaI4:S iS eSS iS I5:SiSe S S iSeSS iS SaI6:SiSeS FOLLOW(S)=i,e移进-归约冲突根据最近匹配原则选择移进动作第23页/共71页2023/3/2624第24页/共71页2023/3/2625I0:SSS iSeSS iSS aI1:SSI2:SiSeS SiSS iSeSS iS SaI3:SaI4:S iS eSS iS I5:SiSe S S iSeSS iS SaI6:SiSeS FOLLOW(S)=i,e移进-归约冲突根据最近匹配原则选择移进动作第25页/共71页2023/3/2626根据最近匹
10、配原则选择移进动作 图4-49 LR分析表第26页/共71页2023/3/2627处理iiaea的语法分析动作第27页/共71页2023/3/26284.8.3 LR分析的错误恢复LR分析器在什么情况下发现错误访问动作表时若遇到出错条目,就检测到一个语法错误访问转移表时不会遇到出错条目若发现当前已扫描的输入不可能存在正确的后续,LR语法分析器立刻报错(决不做任何无效归约)SLR和LALR分析可能会在报错之前执行几步归约,但决不会把不正确的后继移进栈第28页/共71页2023/3/2629紧急方式错误恢复(panic mode)退栈,直至出现状态s,它有预先确定的A的转移;抛弃若干个输入符号,直
11、至找到a,它是A的合法后继;再把A和状态gotos,A压进栈,恢复正常分析。第29页/共71页2023/3/2630s.栈.a.A发现错误s:C AA b.C A.AAb.b第30页/共71页2023/3/2631s.栈.a.A发现错误sgoto(s,A).栈.a.A继续分析第31页/共71页2023/3/2632例4.49 E E+E|E*E|(E)|ide1:id(状态)3进栈,缺少运算对象e2:从输入删除“)”,右括号不匹配e3:+(状态)4进栈,缺少操作符e4:)(状态)9进栈,缺少右括号第32页/共71页2023/3/2633输入id+)的分析和出错恢复分析栈输入串动作和错误信息0i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内