第四章_语法分析(5)精选文档.ppt
《第四章_语法分析(5)精选文档.ppt》由会员分享,可在线阅读,更多相关《第四章_语法分析(5)精选文档.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章_语法分析语法分析(5)本讲稿第一页,共五十五页2022/10/1912022/10/19编译原理编译原理2LR Parsing本讲稿第二页,共五十五页2022/10/19编译原理编译原理3LR(0)项目项目q在产生式右部加上,表示分析过程中的状态,指示产生式右部符号已经被识别了多少。A XYZq由X推导出的子串已经分析过,X出现在栈中,下一步希望看到YZ推导出的子串。本讲稿第三页,共五十五页2022/10/19编译原理编译原理4闭包运算闭包运算closureq若项目集I中有项目A B,且有产生式B ,则下一步希望看到由B推导出的子串,那么等同于希望看到,因此将项目B 加入 clo
2、sure(I)本讲稿第四页,共五十五页2022/10/19编译原理编译原理5有效项目有效项目q有效项目:有效项目:如果存在规范推导 S*Aw 12w,则说项目A1 2对活前缀 1 是有效的。代表某一时刻,栈中的内容是1(活前缀)。一个活前缀的有效项目集就是从DFA的初态出发,沿着标记为的路径到达的那个项目集(状态)。本讲稿第五页,共五十五页2022/10/19编译原理编译原理6q项目决定了动作:移进或归约q希望同一个项目集中的若干个项目没有动作冲突qSLR(1)分析方法若有A 在Ii中,那么对FOLLOW(A)中的所有a,actioni,a为rj更好的避免冲突的方法本讲稿第六页,共五十五页20
3、22/10/19编译原理编译原理7LR(1)分析法分析法q需要更多的信息,指出A 句柄之后紧跟哪个终结符才能归约S*Aaw aw,q让项目带上搜索符,LR(1)项目由LR(0)项目和一个lookahead符号组成:A ,a搜索符a的集合总是Follow(A)的子集。本讲稿第七页,共五十五页2022/10/19编译原理编译原理8活前缀的有效活前缀的有效LR(1)项目项目qLR(1)项目A,a对活前缀有效,如果存在着推导S*rm Aw rm w,其中:1.=;2.a是w的第一个符号,或者w为且a是$。本讲稿第八页,共五十五页2022/10/19编译原理编译原理9构造有效的构造有效的LR(1)项目集
4、项目集q项目A B,a对活前缀有效,必定存在S*rm Aax rm Bax,其中=。q假设ax能推出by,那么,B,b对有效,b是从 能推出的开始符号,或当 可空时,b就是a。bFIRST(a)。本讲稿第九页,共五十五页2022/10/19编译原理编译原理10wA wALL分析方法和分析方法和LR分析方法的比较分析方法的比较qA ,LL(1)向前看下一个输入根据FIRST()确定使用哪条产生式推导;而LR(1)是在识别出整个后,再往前看1个符号,然后确定使用哪条产生式归约。SS本讲稿第十页,共五十五页2022/10/19编译原理编译原理11在下面的推导中,最后一步用的是A LL(1)决定用该决
5、定用该产生式的位置是产生式的位置是First()LR(1)决定用该决定用该产生式的位置产生式的位置LL分析方法和分析方法和LR分析方法的比较分析方法的比较本讲稿第十一页,共五十五页2022/10/19编译原理编译原理12非非LR结构结构q例:L=wwR wa,b*S aSa bSb 本讲稿第十二页,共五十五页2022/10/19编译原理编译原理13LL分析方法和LR分析方法的比较qLL(k)文法都是LR(k)文法。LR文法比LL文法描述的语言更多。本讲稿第十三页,共五十五页2022/10/19编译原理编译原理14LR(1)方 法 LL(1)方 法 建立分析树的方式 自 下 而 上 自 上 而
6、下 归约还是推导 规 范 归 约 最 左 推 导 决定使用产生式的时机 看见产生式整个右部推出的东西后才能决定用哪个产生式进行归约 看见产生式右部推出的第一个终结符后便确定用哪个产生式进行推导 LR分析方法和LL分析方法的比较本讲稿第十四页,共五十五页2022/10/19编译原理编译原理15LR(1)方 法 LL(1)方 法 对文法的显式限制 对文法没有限制 无左递归、无公共左因子 分析表比较 状态文法符号 分析表大 非终结符终结符分析表小 分析栈比较 状态栈,通常状态比文法符号包含更多信息 文法符号栈 LR分析方法和分析方法和LL分析方法的比较分析方法的比较本讲稿第十五页,共五十五页2022
7、/10/19编译原理编译原理16LR(1)方 法 LL(1)方 法 确定句柄 根据栈顶状态和下一个符号便可以确定句柄和归约所用产生式 无句柄概念 语法错误 不会将出错点后的符号移入分析栈 和LR一样,不会读过出错点而不报错 LR分析方法和分析方法和LL分析方法的比较分析方法的比较本讲稿第十六页,共五十五页2022/10/19编译原理编译原理17本讲稿第十七页,共五十五页2022/10/19编译原理编译原理18CFG classificationLL(1)LR(0)SLRLALR(1)LR(1)本讲稿第十八页,共五十五页2022/10/19编译原理编译原理1948 二义文法的应用二义文法的应用q
8、任何二义性的文法都不是LR文法。q二义文法的特点:简洁、自然例如,表达式文法二义文法:E E+E|E*E|(E)|id非二义的文法:E E+T|TT T*F|FF (E)|idq语法分析的效率高(基于消除二义后得到的分析表)本讲稿第十九页,共五十五页2022/10/19编译原理编译原理204.8.1 使用文法以外信息解决分析动作使用文法以外信息解决分析动作冲突冲突优先级和结合规则例:规定:*优先级高于+,两者都是左结合E E+E|E*E|(E)|id本讲稿第二十页,共五十五页2022/10/19编译原理编译原理21拓广文法的拓广文法的LR(0)项目集项目集I0:E E E E+E E E*E
9、E (E)E idI1:E E E E +E E E *EI2:E (E)E E+E E E*E E (E)E idI3:E idI4:E E+E E E+E E E*E E (E)E idI5:EE*E EE+E EE*E E(E)E idI6:E(E)EE+E EE*EI7:EE+E EE+E EE*EI8:EE*E EE+E EE*EI9:E(E)FOLLOW(E)=$,+,*,)移进移进-归约冲突归约冲突本讲稿第二十一页,共五十五页2022/10/19编译原理编译原理22本讲稿第二十二页,共五十五页2022/10/19编译原理编译原理23SLR分析表(存在冲突)分析表(存在冲突)本讲稿
10、第二十三页,共五十五页2022/10/19编译原理编译原理24使用文法以外信息来解决分析动作冲突使用文法以外信息来解决分析动作冲突考虑考虑id+id+id 和和id+id*id 形成格局形成格局 栈栈输入输入0E1+4E7*id$面临+,归约面临*,移进面临)和$,归约I7:EE+E EE+E EE*E本讲稿第二十四页,共五十五页2022/10/19编译原理编译原理254.8.2 悬空悬空else的二义性的二义性S SS iSeS|iS|a本讲稿第二十五页,共五十五页2022/10/19编译原理编译原理26I0:S S S iSeS S iS S aI1:S S I2:S i SeS S i
11、S S iSeS S iS S aI3:S a I4:S iS eS S iS I5:S iSe S S iSeS S iS S aI6:S iSeS FOLLOW(S)=i,e移进-归约冲突根据最近匹配原则选择移进动作本讲稿第二十六页,共五十五页2022/10/19编译原理编译原理27本讲稿第二十七页,共五十五页2022/10/19编译原理编译原理28I0:S S S iSeS S iS S aI1:S S I2:S i SeS S i S S iSeS S iS S aI3:S a I4:S iS eS S iS I5:S iSe S S iSeS S iS S aI6:S iSeS FO
12、LLOW(S)=i,e移进-归约冲突根据最近匹配原则选择移进动作本讲稿第二十八页,共五十五页2022/10/19编译原理编译原理29根据最近匹配原则选择移进动作 图图4-49 LR分析表分析表本讲稿第二十九页,共五十五页2022/10/19编译原理编译原理304.8.4LR分析的错误恢复qLR分析器在什么情况下发现错误访问动作表时若遇到出错条目,就检测到一个错误访问转移表时它决不会遇到出错条目SLR和LALR分析可能会在报错之前执行几步归约,但决不会把不正确的后继移进栈规范的LR分析器甚至在报告错误之前决不做任何无效归约本讲稿第三十页,共五十五页2022/10/19编译原理编译原理31紧急方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 语法分析 精选 文档
限制150内