网站大量收购独家精品文档,联系QQ:2885784924

第4章语法分析_自上而下分析.pptVIP

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

本章在编译程序中的地位;上下文无关文法的定义: 一个上下文无关文法G是一个四元式 G=(VT,VN,S,P),其中 VT:终结符集合(非空) VN:非终结符集合(非空),且VT ? VN=? S:文法的开始符号,S?VN P:产生式集合(有限),每个产生式形式为 P??, P?VN, ? ? (VT ? VN)* 开始符S至少必须在某个产生式的左部出现一次。;例 定义只含+,*的算术表达式的文法 G=({i,+,*,(,)},{E},E, P), 其中,P由下列产生式组成: E ? i E ? E+E E ? E*E E ? (E) 对句子(i+i)最左推导 E?(E)?(E+E)?(i+E)?(i+i) ;定义:假定G是一个文法,S 是它的开始符号。如果S ? ,则?称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为 L(G)。;第4章 自上而下语法分析;4.1 语法分析器的功能;4.1 语法分析器的功能;4.2 自上而下分析面临的问题;例4.1 文法???⑴ S→xAy ⑵ A→** ⑶ A→* 输入串 α=x*y,分析α是否该文法的句子?;序号 ip指向 语法树  最左推导   说明 ;序号 ip指向  语法树  最左推导   说明 ;自上而下分析; 自上而下分析;候选式的确定与回溯问题;左递归;4.2 自上而下分析面临的问题;4.2 自上而下分析面临的问题;4.3 不带回溯的自上而下分析法;4.3.1 左递归的消除;例4.2 文法G(E): E→E+T | T T→T*F | F F→(E) | i 消去直接左递归后变成: E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i ;消除下面文法的左递归 : (1) G(H): H→ H;M|M M→ d|aHb ;消除左递归 练习 2;消除直接左递归的一般方法;消除间接左递归;例4.4 有间接左递归文法: (1)A→Bb (2)B→Ac (3)B→d 也可以先将(2)(3)代入(1)得: A→Acb|db再消直接左递归, 得到不含左递归的文法: A →dbA’ A’ →cbA’|ε B现在是无用符号, 把B及其产生式删除。 说明:代入方法不同,得到的不含左递归的文法可能是不一样的,但它们等价。消左以后,可能会出现无用符号,应把它们去掉。;消除左递归算法: P70 (1)文法的所有非终结符排序为P1,P2,…,Pn; (2)将间接左递归改为直接左递归,消除之; for (i=1; i=n; i++) { for (j=1; j=i?1; j++) 把Pi→Pjγ|? 及 Pj→δ1|…|δk 改写为Pi→δ1γ|…|δkγ| ? ; 消除Pi的直接左递归; } (3)化简, 删去那些不可达的产生式。;对消除左递归算法的说明: (1)消除左递归算法有两个限制条件:文法中不含回路(P-P)和ε-生成式。 (2) 对非终结符的不同排序会导致文法形式上的不同, 但它们等价。 (3)不要改变文法的开始符号。;例4.5 考虑文法G(S) S→Qc|c Q→Rb|b R→Sa|a 令它的非终结符的排序为R、Q、S。 对于R,S的序号大于R的序号,不处理。 对于Q,R的序号小于Q的序号,把R代入到Q的 有关候选后,把Q的规则变为 Q→Sab|ab|b 此时S的序号大于Q的序号,不处理。 ;例4.5 考虑文法G(S) S→Qc|c Q→Rb|b R→Sa|a 令它的非终结符的排序为R、Q、S。 Q的规则变为 Q→Sab | ab | b 对于S, Q的序号小于S的序号,把Q代入到S的有关候选后,把S的规则变为 S→Sabc | abc | bc | c;例4.5 考虑文法G(S) S→Qc|c Q→Rb|b R→Sa|a S变成 S→Sabc | abc | bc | c 消除S的直接左递归后: S→abcS? | bcS? | cS? S?→abcS? | ? Q→Sab |ab | b R→Sa|a;上例若排序为S,Q,R, 则得文法G[S]: S→Qc | c Q→Rb | b

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档