第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文档。上传文档
查看更多
③ 构造LL(1)分析表 ④ 分析 a b c d e # S aAcBe A bA’ A’ bA’ ? B d 4、LL(1)文法 分析表有多重入口。 若一个文法G的分析表不含多重入口,则称它为LL(1)文法。 一个文法是LL(1)的,当且仅当G的每个非终结符A的任何两个侯选式α和β有 ①FIRST(α)∩FIRST(β)=? ②若ε?FIRST(β),则有FIRST(α)∩FOLLOW(A)=?   LL(1)文法的性质: LL(1)文法是无二义的 LL(1)文法不含左递归 非LL(1)文法的改造 消除左递归 提左公因子 将产生式A? ?β|?? 变换为: A? ?B B ? β|? 例1:文法G(E): E→E+T|T T→T*F|F F→i|(E) FIRST(E)={(,i} FIRST(T)={(,i} FIRST(F)={(,i} 消左递归 E – TE’ E’ – +TE’ E’ – ? 例2:S →if C t S | if C t S e S C →b 提左因子 S →if C t S A A→ e S | ? First集 Follow集 S if #,e A e, ? #, e C b t M[A,e]={A→ e S A→ ? } 4.4 递归下降分析程序构造 一、递归子程序法的原理: 对文法中每个非终结符U(它们代表一定的语法成分)都编出一个子程序,以完成该非终结符号所对应的语法成分的分析和识别任务。 每个非终结符号的子程序功能是:用该非终结符的产生式规则右部符号串去匹配输入串。注:可匹配任何终结符,但搜索指针不前进。 使用自上而下的方法时前提是:消除左递归; 提取公共左因子。 当一个文法满足LL(1)条件时,我们就可以为它构造一个不带回溯的自上而下分析程序,这个分析程序是由一组递归过程组成的,每个过程对应文法的一个非终结符。这样的一个分析程序称为递归下降分析器。 如果用某种高级语言写出所有递归过程,那就可以用这个语言的编译系统来产生整个的分析程序。 例如,考虑文法: E→TE? E?→+TE? | ? T→FT? T?→*FT? | ? F→(E) | i 它的每个非终结符都有对应的递归过程,在分 析过程中,当需要从某个非终结符出发进行展 开时,就调用这个非终结符对应的子程序。 几个全局过程和变量 ADVANCE:是指把输入串指示器IP调至指向下一个输入符号 SYM:是指IP当前所指的那个输入符号 ERROR:为出错诊察处理程序 对应的递归过程如下: 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; PROCEDURE F; IF SYM=‘i’ THEN ADVANCE ELSE IF SYM=‘(’ THEN BEGIN ADVANCE; E; IF SYM=‘)’ THEN ADVANCE ELSE ERROR END ELSE ERROR; 二、文法的另一种表示法 在元符号“→”和“|”的基础上,扩充几个元语言符号: 1. 用花括号{?}表示闭包运算?*。 2. 用 {?}n0表示?可任意重复0次至n次。 3. 用方括号[?]表示{?}10 ,即表示?的出现可有可无(等价于?|?)。 引入上述元符号的文法亦称扩充的巴科斯范 式。 例如,通常的“实数”可定义为: decimal→[sign]integer.{digit}[exponent] exponent→E[sign]integer integer→digit{digit} sign→ + | - 用扩充的巴科斯范式来描述语法的好处是,直观易懂,便于表示左递归消去和因子提取。对于构造自上而下分析器来说,采用这种定义系统描述文

文档评论(0)

南非的朋友 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档