- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Iwillgreetthislecturewithloveinmyheart.主讲人:韩士元Email:shiyuanhan@126.comTel:+86非终结符号集合FIRST(x)定义:FIRST(x)={a|x?a…,a?VT},特别地,若x?ε成立,则规定ε?FIRST(α)**如果非终结符A的任何两个候选式αi和αj(不考虑ε的情况),有FIRST(αi)∩FIRST(αj)=Φ,那么要求A匹配输入串时,A就能根据它所面临的第一个输入符号a,准确的指派某个候选去执行匹配任务。4.2.1LL(1)文法FIRST集合4.2.1LL(1)文法文法G=({S,A},{x,y,z,*},{S?xAy|z,A?*|ε},S)xySxAyε当前输入符号为a,A?α1|α2|…|αn,a?FIRST(αi),ε?FIRST(αj),是否可以用ε匹配A?只有a是跟在A后面的终结符时,才能运行A自动匹配,否则,a在这里的出现就是一种语法错误。定义:FOLLOW(A)={a|S?…Aa…,A?VN,a?VT,S是开始符号},特别地,若S?…A,则#?FOLLOW(A)。**4.2.1LL(1)文法当前输入符号为a,A?α1|α2|…|αn,a?FIRST(αi),ε?FIRST(αj),是否可以用ε匹配A?(1)若a?FOLLOW(A),则可以用ε匹配A(2)若a?FOLLOW(A),则不可以用ε匹配AFOLLOW集合4.2.1消除回溯、提左因子为了消除回溯就必须保证:对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务,并且此候选的工作结果应是确信无疑的。A→?1|?2|…|?nSa….IPA......4.2.1消除回溯、提左因子P?αA1|αA2|…|αAn|β1|β2|…|βmP?αA|β1|β2|…|βmA?A1|A2|…|An例:S?ifBthenS1elseS2;|ifBthenS1;S?ifBthenS1S3S3?elseS2;|;例:S?ifBthenS1elseS2|ifBthenS1S?ifBthenS1S3S3?elseS2|ε经过反复提取左因子,就能够把每个非终结符(包括新引进者)的所有候选首符集变成为两两不相交。(1)文法不含左递归。(2)对每个非终结符A,若A?α1|α2|…|αn,有FIRST(αi)∩FIRST(αj)=Φ(i≠j)。(3)对每个非终结符A,若A?α1|α2|…|αn,ε?FIRST(αi),有FIRST(αi)∩FOLLOW(A)=Φ。如果文法G满足以上条件,则该文法称为LL(1)文法。第一个L表示从左到右扫描输入串,第二个L表示最左推导,1表示分析时每步只需向右查看一个符号。构造不带回溯的自上而下分析的文法条件:4.2.1LL(1)文法构造无回溯文法算法的问题如何构造FIRST(α)?如何构造FOLLOW(A)?如何根据当前输入符号a决定A的匹配式?文法G[S]中的产生式S?xAyS?zA?*A?εx*ySxAy**y(a)若x?VT,则FIRST(x)={x};(b)若x?VN,且有产生式x?a…,a?VT,则a?FIRST(x);当产生式为x?ε时,ε?FIRST(x);(c)若x?Y…,Y?VN,则FIRST(Y)-{ε}?FIRST(x);若x?Y1Y2…Yk,且对1≤j≤i-1,都有Yj?ε,则FIRST(Yi)-{ε}?FIRST(x);特别地,若Y1Y2…Yk?ε,则ε?FIRST(x)。**4.2.2求FIRST(x)4.2.2求FIRST(x)(1)若x?(VN∪VT)(a)若x?VT,则FIRST(x)={x};(b)若x?VN,且有产生式x?a…,a?VT,则a?FIRST(x);当产生式为x?ε时,ε?FIRST(x);(c)若x?Y…,Y?VN,则FIRST(Y)-{ε}?FIRST(x);若x?Y1Y2…Yk,且对1≤j≤i-1,都有Yj?ε,则FIRST(Yi)-{ε}?FIRST
原创力文档


文档评论(0)