- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 语法分析—自底向上分析(P78) 5.1 规范推导、规范句型和规范归约 5.2自底向上分析方法的一般过程 5.2自底向上分析方法的一般过程 5.3 LR分析方法 5.4 LR(0)分析方法 5.4 LR(0)分析方法 5.5 SLR(1)分析器 5.5 SLR(1)分析器 5.5 SLR(1)分析器 5.6 LR(1)分析器 小 结 例5-5(P86) 有文法 S→E ,E→T|E+T|E-T ,T→i|(E),列出该文法的所有项目,并找出对活前缀E-有效的项目。 解:首先列出每条规则对应的多个项目: 对S→E,有项目: S→.E S→E. 对E→T,有项目: E→.T E→T. 对E→E+T, 有项目: E→.E+T E→E.+T E→E+.T E→E+T. 对E→E-T,有项目: E→.E-T E→E. –T E→E-.T E→E-T. 对T→i,有项目: T→. i T→i. 对T→(E) ,有项目: T→.(E) T→(.E) T→(E.) T→(E). 5.4 LR(0)分析方法 例5-5(P86) 有文法 S→E ,E→T|E+T|E-T ,T→i|(E),列出该文法的所有项目,并找出对活前缀E-有效的项目。 5.4 LR(0)分析方法 ∵S? E? E-T ∴项目E→E-.T对E-是有效的。 ∵ S? E ? E-T? E-i ∴项目T→.i对E-也是有效的。 ∵ S? E ? E-T ? E-(E) ∴项目T→.(E)对E-也是有效的。 由上可知,E→E-.T,T→.i和T→.(E)是活前缀E-的有效项目集。 上例中,当符号栈内容为E-时,有项目E→E-.T、T→.i和T→.(E)对E-有效,则将来形成的句柄一定是E→E-T,T→i和T→(E)这几条规则之一的右部。究竟会形成哪条规则的右部取决于下一个读入的符号,如果下一个符号是i,则形成句柄i;如果下一个符号是(,则将等待形成句柄(E)。 5.4 LR(0)分析方法 设I为一项目集,I的闭包运算CLOSURE(I) 定义如下(P87): (1) I中的每一个项目都属于CLOSURE(I)。 (2) 如项目A→α1·Xα2属于CLOSURE(I),且X为非终结符号,则将形式为X→.λ的项目添加到CLOSURE(I)中。 (3) 重复(1)和(2),直到CLOSURE(I)封闭为止。 5.4 LR(0)分析方法 例5-6(P87) 有文法:E′→E,E→ E+T,E →T,T→T*F,T→F,F→(E),F→i,设项目集I={E′→.E},求CLOSURE(I)。 解:根据闭包运算的第1条,CLOSURE(I)={ E′→.E } 根据第2条,E是非终结符号,则将规则E::=E+T和 E::=T形成的项目E→.E+T和E→.T,加进CLOSURE(I)中,即CLOSURE(I)={ E′→.E,E→.E+T,E→.T } 因为T是非终结符号,则将T→.T*F和T→.F,加进CLOSURE(I)中,即CLOSURE(I)={E’→.E,E→.E+T,E→.T,T→.T*F,T→.F } 因为F是非终结符号,所以将F→.(E)和F→. i,加进CLOSURE(I)中,即CLOSURE(I)={E′→.E,E→.E+T,E→.T,T→.T*F,T→.F,F→.(E),F→.i } 至此,CLOSURE(I)封闭。 设I是一个项目集,X是任一文法符号,则项目集之间的转换用GO[I,X]函数表示,定义为(P87): GO[I,X]=CLOSURE(J) 其中J={任何具有[A→αX.β]的项目|[A→α.Xβ] ∈ I },即对项目集I中所有的项目进行读X操作的结果。 I J X CLOSURE(J)为对J进行了闭包运算得到的项目集,称为I的后继项目集。令状态I代表项目集I,状态J代表后继项目集CLOSURE(J),用状态图表示则为: 5.4 LR(0)分析方法 解:在I中挑出圆点后是+的项目有:E→ E.+T,将圆点移到+后面得J={E→E+.T},对J进行闭包运算得: CLOSURE(J)={E→E+.T,T→.F,T→.T+F, F→.(E),F→.i} ∴ GO[I,+] ={E→E+.T,T→.F,T→.T+F, F→.(E), F→.i} I:E′→ E. E→ E.+T J:E→ E+.T,T→.F T→.T+F, F→.(E),F→.i 例5-7(P88) 已知文法
文档评论(0)