04第4章语法分析-自顶.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文档。上传文档
查看更多
04第4章语法分析-自顶

第四章 语法分析——自顶向下分析 ;4.1自顶向下的分析方法 ;4.2.1 FIRST集合定义及构造方法;对于文法G的任一符号串α=X1X2…Xn可按下列步骤构造其FIRST(α)集合: 1)置FIRST(α)=φ 2)将FIRST(X1)中的一切非ε符号加进FIRST(α); 3)若ε∈FIRST(X1),将FIRST(X2)中的一切非ε符号加进FIRST(α);若ε∈FIRST(X1)和FIRST(X2),将FIRST(X3)中的一切非ε符号加进FIRST(α);余类推。 4)若对于一切1≤i≤n,ε∈FIRST(Xi),则将ε符号加进FIRST(α)。 ;4.2.1 FIRST集合定义及构造方法;4.2.2 FOLLOW集合定义及构造方法 ;4.2.2 FOLLOW集合定义及构造方法;4.3 递归下降分析 ;4.3.1 递归下降分析的基本方法;过程U;4.3.2 递归下降分析中存在的问题及解决方法 ;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析??存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;4.3.2 递归下降分析中存在的问题及解决方法;对于规则A ::= c{aB} , 分析程序如图4.3(b)所示。 对于规则B ::= a(A|ε) , FIRST(A)={c},分析程序如图4.3(c)所示。;4.3.3 TEST语言的递归下降分析实现;第四章 语法分析——自顶向下分析 ;第四章 语法分析——自顶向下分析 ;第四章 语法分析——自顶向下分析 ;第四章 语法分析——自顶向下分析 ;4.4 LL(1)分析方法 ;4.4.1 LL(1)分析的基本方法;1) 分析开始时,首先将符号#及文法的开始符号S依次置于分析栈的底部,并把各指示器调整至起始位置,如图4.5所示。然后,反复执行第二步的操作。 ;(1)若Xm∈Vn,则查分析表的Xm行ai列,假设M[Xm,ai]为POP,PUSH(WVU),则将Xm出栈,并将WVU反序入栈,这意味着使用了规则Xm→UVW,如图4.7;若M[Xm,ai]为空或ERROR,则出错。 ;;例4.7,根据表4.1给出的分析表,对符号串i+i*i进行分析。 解:根据分析表以及LL(1)的工作过程,对符号串i+i*i的分析过程在表4.2中列出。;4.4.2 LL(1)分析表的构造方法 ;4.4.2 LL(1)分析表的构造方法 ;4.4.2 LL(1)分析表的构造方法 ;4.2.3 LL(1)分析的主要问题及解决方法 ;2、解决分析表多重定义问题 若一个LL(1)文法的分析表不出现多重定义,当且仅当对于文法G的每个非终结符A的任何两条不同规则A→α|β ,下面条件成立: ?FIRST(α)∩FIRST(β)=φ 即头符号集不相交。 ?假若β==*ε,那么,FIRST(α)∩FOLLOW(A)=φ,即α所能推出的符号串的头符号集中的元素不能出现在FOLLOW(A)中。 如果出现了相交的情况,那么分析表必然有多重定义。这个问题有时可通过提取公因子,增加新的非终结符号来解决(见递归下降的问题解决方法)。 ;4.2.3 LL(1)分析的主要问题及解决方法 ;4.2.3 LL(1)分析的主要问题及解决方法 ;习题 ;4.4 有文法G[A]:A::=aABe|ε B::=Bb|b 1)求每个非终结符号的FOLLOW集。 2)该文法是LL(1)文法吗? 3)构造LL(1)分析表。 4.5 若有文法A→(A)A|ε, 1)为非终结符A构造First集合和Follow集合。 2)说明该文法是LL(1)的文法。 4.6 利用分析表4.1识别以下算术表达式,请写出分析过程: 1) i + i * i + i 2) i * (i +i + i );4.7 考虑下面简化了的C声明文法: 声明语句→类型变量表; 类型→int|float|char 变量表→ID,变量表|ID 1)? 在该文法中提取左因子。 2)? 为所得的文法的非终结符构造First集合和Follow集合。 3)? 说明所得的文法是LL(1)文法。 4)? 为所得的文法构造LL(1)分析表。 5)? 假设有输入串为:char x,y,z ,写出相对应的LL(1)分析过程。;4.8 修改语法分析程序,使该程序能分析do语句和逻辑表达式,有关文法规则如下: statement::= if_stat|whil

文档评论(0)

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

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

1亿VIP精品文档

相关文档