编译第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文档。上传文档
查看更多
编译第4章

4.1 语法分析器的功能   语法分析是编译过程的核心部分,它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。   语法分析器工作本质:按文法的产生式,识别输入符号串是否为一个句子,判断是否能从文法的开始符号出发推导出这个输入串。 语法分析方法种类 (按语法分析树建立方法)         自上而下分析--------- 递归下降分析、预测分析      自下而上分析----------- 算符优先分析、LR分析 三. LL(1)分析条件 第一个L表示从左到右扫描,第二个L表示最左推导,1表示分析时,每步只需向前查看一个符号 First(α)和Follow(A)定义 (1)First(α) 令G是一个不含左递归的文法,对G的所有非终结符的每个候选α定义它的终结首符集First(α)为 若 ,规定ε∈First(α) (2)Follow(A) 假定S是文法G的开始符号,对于G的任何非终结符A. 定义: 若 ,则规定#∈Follow(A)  即 Follow(A)是所有句型中出现在紧接A之后的终结符或”#” 2. LL(1)文法 三个条件: (1)文法不含左递归 (2) 对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交,若A→α1|α2|…|αn,则 First(αi)∩First(αj) = (其中i不等于j) (3) 对文法中每个非终结符A,若它存在某个候选首符集包含ε First (A)∩Follow (A)= 如果一个文法G满足以上条件,则称该文法G为LL(1)文法 3. LL(1)分析 假设要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为A→α1|α2|…|αn (1)若a∈First(αi),则指派αi去执行匹配任务 (2)若a不属于First(αi)(i=1,2,…,n),则 若ε∈First(αi) 且a∈Follow(A),则让A与ε自动匹配 否则,a的出现是一种语法错误 4.4 递归下降分析程序构造 当一个文法满足LL(1)条件时,可为它构造一个不带回溯的自上而下分析程序,这个分析程序由一组递归过程组成,每个过程对应文法的一个非终结符,这样的分析程序称为递归下降分析器。 实现思想:对文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选时能够按LL(1)形式唯一地确定选择某个候选进行推导。 限制:对文法要求高,必须满足LL(1)文法; 由于递归调用多,速度慢,占用空间多。 尽管这样,它还是许多高级语言的编译系统 经常采用的语法分析方法。 具体做法: 对文法的每一个非终结符都编一个分析程序,当根据文法和当时的输入符号预测到要用某个非终结符去匹配输入串时,就调用该非终结符的分析程序。 例如设计文法 E→TE′ E′→+TE′|ε T→FT′ T′→*FT′|ε F→(E)|i 的递归子程序。 void match (token t) { if (lookahead == t) lookahead = nexttoken; else error (?); } void E( ) { T( ); E( ); } void E( ) { if (lookahead = = +) { match (+); T( ); E( ); } } void F(?) { if (lookahead = = i) match (i); else if (lookahead = =() { match ((); E( ); if (lookahead = =)) match ()); else error (?); } error (?); } 4.5 预测分析程序 一、预测分析程序思想 二、First(α)和Follow(A)的求法 三、预测分析表的构造 四、预测分析程序的总控程序 五、实例 二、 First(α)和Follow(A)的求法 1. FIRST(α)的求法 定义: FI

文档评论(0)

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

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

1亿VIP精品文档

相关文档