- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章小结 例3 设有文法G[S]: 试证明该文法是SLR(1)文法,但不是LR(0)文法。 解:首先将文法拓广,并对规则进行编号 直接构造LR(0)项目集如下: S →aSb | aSd |ε 0. S →S 1. S →aSb 2. S →aSd 3. S →ε 本章小结 I0: S →·S S →·aSb S →·aSd S →· I1: S′→S· I2: S →a·Sb S →a·Sd S →·aSb S →·aSd S →· I3: S →aS·b S →aS·d I4: S →aSb· I5: S →aSd· 0. S →S 2. S →aSb 1. S →aSd 3. S →ε 确定的自上而下分析法 自下而上分析法 递归下降分析法 预测分析法 本章小结 本章介绍了四种典型的语法分析方法 算符优先分析法 LR分析法 LR(0)分析法 SLR(1)分析法 LR(1)分析法 LALR(1)分析法 确定的自上而下分析法要求描述 语言的文法是 LL(1)文法。 1. LL(1)文法的判别方法。 (1) 求文法每个产生式右部符号串的 FIRST集。 (2)?求文法各个非终结符的FOLLOW集。 本章小结 一.确定的自上而下分析法 (3)?求文法每个产生式的SELECT集。 (4)?求相同左部产生式的SELECT交集。 对文法G的每一个非终结符A的产生式 SELECT(A→ αi)∩SELECT(A→ αj)=Φ (i≠j) 则文法G是一个LL(1)文法 本章小结 A → α1 | α2 |…| αn 下面条件成立: 2. LL(1)文法是无左递归、无二义性文 法。 3. 将非LL(1)文法改写为LL(1)文法的方 法。 (1) 消除文法直接左递归 P→Pα | β?? 改写为 P→βP , P→ αP | ε 或 P→β{α} 本章小结 (2) 提取公共左因子 本章小结 若 A→ αβ1 | αβ2 | …| αβn 提取公共左因子将文法改写成: A → αA A → β1| β2| …| βn 4.根据文法规则构造递归下降分析程序 和预测分析表的方法 5. 注意LL(1)分析法与LR分析法的区别 本章小结 LL(1)分析法(预测分析法)是自上而下的语法分析法,要求文法为LL(1)文法 LR分析法是自下而上的语法分析法, 只要文法是上下文无关文法 例1 设有文法G[E]: 为消除文法直接左递规,请改写文法,改 写后的文法为: 本章小结 E→ E+T | E-T | T T→ T*F | T/F | F F→ (E) | id T { +T | -T } E →? 本章小结 E→ E+T | E-T | T T→ T*F | T/F | F F→ (E) | id F { *F | /F } T →? (E) | id F →? 例2 设有文法G[S] S→aAbDe | d A→BSD | e B→SAc | cD | ε D→Se | ε 本章小结 1. 计算文法G[S]每个非终结符的FIRST集 和FOLLOW集 。 2. 判断文法G[S] 是否LL(1)文法。 本章小结 对每一文法符号X∈V, 求FIRST(X)的规则: FIRST(α) = { a | α ?a…且 a∈VT } * ,则规定 ε∈ FIRST(α) 若α ? ε * 1. 若 X∈VT , 则FIRST(X) ={X} 2. 若 X∈VN 且有 X→ a…, 则把 a 加入 FIRST(X)中 ,若 X→ε , 则把 ε 加入FIRST(X)中 3. 若 X→Y…, Y∈VN ,则把 FIRST(Y)中所有 非 ε 元素加入FIRST(X)中 FIRST(S)=FIRST(aAbDe)∪FIRST(d)={ a,d } 本章小结 FIRST(A)=FIRST(B)∪FIRST(e) =FIRST(S)∪FIRST(cD)∪{e}={ a,d,c,e } S→aAbDe | d A→BSD | e B→SAc | cD | ε D→Se | ε 问: 能否∪ ε 因为从 A ? * / ε , 所以 ε ? FIRST(A) FIRST(B)=FIRST(S)∪FIRST(cD)∪{ε}={ a,d,c,ε} FIRST(D)=FIRST(Se)∪{ε}={ a, d, ε} 本章小结 FOLLOW(A) ={ a | S ? …Aa …且
文档评论(0)