编译原理课件.ppt

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例4.6 对于文法G(E) E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 构造每个非终结符的FIRST和FOLLOW集合: FIRST(E) ={(,i} FIRST(E?)={+, ?} FIRST(T) ={(,i} FIRST(T?)={*, ?} FIRST(F) ={(,i} FOLLOW(E) ={),#} FOLLOW(E?)={),#} FOLLOW(T) ={+,),#} FOLLOW(T?)={+,),#} FOLLOW(F) ={*,+,),#} 4.4 递归下降分析程序构造 构造不带回溯的自上而下分析程序 要消除文法的左递归性 克服回溯 构造不带回溯的自上而下分析器 分析程序由一组递归过程组成,文法中每个非终结符对应一个过程;所以这样的分析程序称为递归下降分析器。(因为文法的定义通常是递归的) 几个全局过程和变量: ADVANCE,把输入串指示器IP指向下一个输入符号,即读入一个单字符号 SYM,IP当前所指的输入符号 ERROR,出错处理子程序 例:文法G(E): E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 每个非终结符有对应的子程序的定义,首先在分析过程中,当需要从某个非终结符出发进行展开(推导)时,就调用这个非终结符对应的子程序。 例:文法G(E): E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 对应的递归下降子程序为: PROCEDURE E; BEGIN T;E? END; PROCEDURE E?; IF SYM=‘+’ THEN BEGIN ADVANCE; T;E? END PROCEDURE T; BEGIN F;T? END PROCEDURE T?; IF SYM=‘*’ THEN BEGIN ADVANCE; F;T? END; 例:文法G(E): E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 对应的递归下降子程序为: 例:文法G(E): E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 对应的递归下降子程序为: PROCEDURE F; IF SYM=‘i’ THEN ADVANCE ELSE IF SYM=‘(’ THEN BEGIN ADVANCE; E; IF SYM=‘)’ THEN ADVANCE ELSE ERROR END ELSE ERROR; 主程序: PROGRAM PARSER; BEGIN ADVANCE; E; IF SYM ’#’ THEN ERROR END; 对应的递归下降子程序为: E→TE? | BC PROCEDURE E; BEGIN IF SYM ?FIRST(TE’) THEN T;E? ELSE IF SYM ?FIRST(BC) THEN B; C ELSE ERROR END; E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | I 对应的递归下降子程序为: PROCEDURE E; BEGIN T;E? END; PROCEDURE T; BEGIN F;T? END E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | I 对应的递归下降子程序为: PROCEDURE E?; IF SYM=‘+’ THEN BEGIN ADVANCE; T;E? END ELSE IF SYM‘#’ AND SYM’)’ THEN ERROR E→TE? E?→+T

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档