第5章节 自上而下语法分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章节 自上而下语法分析

第5章 自上而下语法分析 消除左递归方法 LL(K)文法 确定的LL(1)分析器的构造 递归下降分析程序、设计 带回溯的分析方法 小结 语法分析 文法的左递归性 用扩展的BNF表示法消除左递归 {} :{x}表示符号串出现零次或多次。 {} :n表示符号串可以重复出现的最大次数,m表示符号串可以重复出现的最小次数。 [] :[x]=x或? ,表示符号串x可以出现一次或不出现,[]表示可选项。 () :可以提出一个非终结符的多个产生式右部的公共因子。 例5.2 直接改写法 产生式直接左递归形式可以改写为一个等价的非直接左递归形式。 U?Ux|y 可改写为: U ?yU’ U’?xU’|? 一般地 U?Ux1|Ux2 |Ux3… |Uxm|y1|y2|… |yn 其中xi? ?, yi的头字符都不是U (i=1,2,…,m. j=1,2,…,n) 可改写为: U ?y1U’|y2U’|…|ynU’ U’ ?x1U’|x2U’|…|xmU’| ? 消除左递归算法 例5.4 设文法G24[A]: A?Bcd B?Ce|f C?Ab|c LL(k)文法 First和Follow集定义 设?是文法G的一个符号串, ??(VN?VT)*, First(?)={a|? ?* a?, a?VT, ??(VN?VT)*},特别地,若有? ?* ?,则??First(?)。 设S是文法的识别符号(开始符号), U?VN Follow(U)={b|S ?* xUby, b?VT, x,y?(VN?VT)*} 例5.5 LL(1)文法的判断条件 First集的构造 (1)设X?(VN?VT),First(X)的构造 若X?VT,则First(X)={X}; 若X?VN,如果有产生式X?a…, a?VT,则a?First(X);如果有产生式X?? ,??First(X) 若X?VN,如果有产生式X?Y…, Y?VN,则First(Y)-{?}?First(X); 如果有产生式X?Y1Y2…Yk(其中Y1Y2…Yi-1都是非终结符并且Y1Y2…Yi-1?*?) ,则First(Yi)-{?}?First(X),如果Y1Y2…Yk?*?,则? ?First(X) First集的构造(续) (2)设??(VN?VT)*,?= X1 X2…Xn, First(?)的构造 若?= ? ,First(?)={?}; 若?? ? ,First(X1)-{?}?First(?);如果有产生式X?? ,??First(X) 如果X1X2…Xi-1?*?, First(Xi)-{?}?First(?); X1X2…Xn?*?, ? ?First(X) Follow集的构造 (3)设U?VN,Follow(U)的构造 若U是文法的识别符号,则??Follow(U); 若有产生式A?xUy, First(y)-{?}?Follow(U) 若有产生式A?xU,或A?xUy,y?*?,则 Follow(A)?Follow(U) SELECT集的构造 (4)集合Select(U??)的构造 Select (U??)= LL(1)文法判断条件 对于文法G的每一个非终结符U的产生式 U??1|?2|…|?n如果 Select(U??i)?Select(U??j)=? (i?j, i,j=1,2,…,n),则文法G是一个LL(1)文法 例5.6 设文法G27[S]: S?A A ?BA’ A’?iBA’|? B ?CB’ B’ ?+CB’|? C ? )A*|( 构造分析表M的算法 构造分析表M的算法过程 对文法的每一条产生式U??,若a?First(?),则M[U,a]=‘U??’; 若??First(?),则M[U,b]=‘U??’,其中b; ?Follow(U); 分析表的其他元素均为出错标记error,通常用空白表示。 例5.7 以例5.6中的文法G27[S]为例 S?A A ?BA’ A’?iBA’|? B ?CB’ B’ ?+CB’|? C ? )A*|( G27[S]分析表 LL(1)分析器的总控算法 符号串‘(i(’的分析过程 递归下降分析程序 子程序 子程序(续) 例5.9 文法G28[S]: S?(A)|aAb A

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档