- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译方法中国人民大学信息学院陈文萍1第一页,共三十二页。
第四章 语法分析——自上而下分析4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1) 分析法4.4 递归下降分析程序构造4.5 预测分析程序4.6 LL(1) 分析中的错误处理2第二页,共三十二页。
4.1 语法分析器的功能语法分析器的地位分类自上而下分析自下而上分析词法分析器语法分析器编译程序后续部分符号表源程序单词符号取下一个单词符号语法分析树3第三页,共三十二页。
4.2 自上而下分析定义:也称面向目标的分析方法,从文法的开始符号出发企图推导出与输入的单词串完全相匹配的句子。主旨:对任何输入串,试图用一切可能的办法,从文法开始符号着手,自上而下地为输入串构造一棵语法树。本质上是一个试探过程,反复使用不同的产生式谋求匹配输入串的过程。4第四页,共三十二页。
自上而下分析的问题(1)左递归例:例文法G0[S]:(1) S→Sa(2) S→b分析baa是不是文法的句子按照自上而下的分析思想,选用产生式(1)来推导S?Sa,语法树末端结点最左符号为非终结符,所以选用(1)继续推导S?Sa?Saa此时语法树末端结点最左符号为非终结符,所以选用(1)继续推导S?Sa?SSa ?SSSa 试图用S匹配输入串时,出现:在没有识别任何输入符号的情况下,又得重新要求S去进行新的匹配,分析过程陷入无限循环5第五页,共三十二页。
自上而下分析的问题(2)回溯例:G[S]: S→xAy, A→ab|a 若当前输入串为xay,首先构造的推导S?xAy ? 匹配 ?进一步推导对A可选择A→ab替换,得S?xAy ?xaby xay xaby ? 匹配 ?xa都已匹配,当前面临输入符为y与b不能匹配,所以将输入串指针退回到a,对A的替换重新选用下一个产生式A→a进行试探, S?xAy ?xay输入串中当前符a得到匹配,指针向前移动到y,与语法树中y匹配,匹配成功。由于相同左部的产生式的右部开始符号相同而引起回溯。6第六页,共三十二页。
自上而下分析的问题(3)分析过程中,匹配成功可能是暂时的。最终分析不成功,很难知道输入串中出错的确切位置。带回溯,效率低,代价高7第七页,共三十二页。
4.3 LL(1) 分析法左递归的消除消除回溯LL(1) 分析条件8第八页,共三十二页。
直接左递归的消除左递归:一个文法是含有左递归的,如果存在非终结符P, P =+ Pα形如:P → Pα|β,其中α不为? ,β不以P打头 消除直接左递归改写为:P →βP’,P’→αP’| ?一般来说,若P → Pα1|Pα2|…|Pαm|β1|β2|…|βn,αi不为? ,βi不以P打头,消除直接左递归就把规则改写为: P → β1P’|β2P’|…|βnP’ P‘ → α1P’|α2P’|…|αmP’| ?例:E → E+T|T,T →T*F|F,F →(E)| i 消除直接左递归后变为: E → TE’ E’ → +TE’| ? T → FT’ T’ → *FT’| ? F → (E)|i9第九页,共三十二页。
文法左递归的消除消除一个文法左递归:对文法的要求无回路( )不含以?为右部的产生式消除左递归算法:(1)以某种顺序将文法非终结符排列P1 ,P2 ……Pn (2) for i:=1 to n do begin for j:=1 to i-1 do 用Pi--?1r| ?2r…| ? k r替代形如Pi-- Pjr的规则 其中Pj-- ?1| ?2…| ?k是关于Pj的全部产生式; 消除Pi规则的直接左递归; end (3)化简由2得到的文法10第十页,共三十二页。
左递归的消除例,文法S →Qc|c,Q→Rb|b, R→Sa|a1,非终结符排序为:S,Q,R2,替换规则对于S,无需替换,S →Qc|c对于Q,无需替换,Q →Rb|b关于R,替换为,R →Rbca|bca|ca|a,消除直接左递归为 R →bcaR’|caR’|aR’,R’ →bcaR’| ? 非终结符的顺序不同,文法的形式可能不同,但都是等价的11第十一页,共三十二页。
消除回溯不回溯,对文法的要求设G是一个不含左递归的文法,对G的所有非终结符的每个候选?,它的终结首符集FIR
原创力文档


文档评论(0)