第5章 自顶向下语法分析方法(lly)3.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文档。上传文档
查看更多
第5章 自顶向下语法分析方法 考查重点 自上而下语法分析的基本思想 求FIRST、FOLLOW、SELECT集合的方法 提取左公因子与消除左递归的方法 递归下降分析程序的构造 LL(1)文法的判定,分析表的构造与输入串的分析过程 语法分析的任务 语法分析是编译过程的核心部分。 语法分析的作用:识别由词法分析输出的单词序列是否符合该语言的文法(?)正确句子(程序)。 分析方法 自顶向下分析法(确定与不确定 ) 从推导的角度看,从识别符号出发,试图推导出与输入符号串相同的符号串。一般来讲,推导是最左推导。 构造推导的关键问题: ????? 在构造最左推导的过程中,面对当前读入的单词符号(向前看符号)和当前被替换的非终结符两者,应该选择这个非终结符的哪条候选式去替换它(推导)。 自底向上分析法(算符优先、LR分析器) 5.1 确定的自顶向下分析思想 确定的自顶向下的分析方法 ???? 在推导过程中,可以完全根据向前看符号唯一决定选择哪个产生式往下推导,因此,分析过程是完全确定的。这种分析称为确定的自顶向下分析方法。 特征——根据下一个输入符号为当前要处理的非终结符选择产生式 要求——文法是LL(1)的 第一个L从左到右扫描输入串 第二个L?生成的是最左推导 向前看一个输入符号(lookahead) 例1: 文法G1[S]: S→pA|qB A→cAd|a B→dB|b 分析能确定推导原因: 前提:2型文法中无空产生式 在文法中,对于每个非终结符A的定义 ? A→α1|α2|...|αn? 任给i,j(1≤i,j≤n,ij),从αi和αj推导出来的第一个终结符号集合(称为开始符号集FIRST)不相交,即:FIRST(αi)∩FIRST(αj)=Φ 结论 :? 在推导过程中完全可以根据向前看符号是属于哪个产生式右部的开始符号集合而决定选择相应的产生式进行推导,因此,分析过程是完全确定的。 FIRST定义:设 G = (VT ,VN , S , P) 是2型文法, FIRST(α) = {a|α aβ,a∈ VT,α,β ∈ V*} 若α ε,则规定ε∈FIRST(α) 直观定义理解: FIRST(α)={a|α a … … ,a∈VT?} FIRST(α)包含了α对应的串的所有可能的首终结符号集(选择产生式的依据) 例3 文法G3[S]: S→aA S→d A→bAS A→ε FOLLOW(A)定义:设 G = (VT ,VN , S , P) 是上下文无关文法,A∈VN , S是开始符号。 FOLLOW(A) = {a|S ?A?且a∈FIRST(?), ?∈VT*,?∈V+ } 若S ?A?,且? ε,则规定 #∈FOLLOW(A) 直观定义理解:? FOLLOW(A)={a|S …Aa…,a∈VT?} 若S … … A,则规定 #∈FOLLOW(A) #作为输入串的结束符,或称为句子括号,如: #输入串# FOLLOW(A)表示句型中可能紧跟在A后面的终结符号 例:G3[S]: S→aA|d A→bAS|ε 求FOLLOW(A) =? 2型文法中对于 A→α A→β其中A∈VN , α,β∈VN*, 当α和β不同时推导出空时(设 α不推导出空,β推导出空),则当FIRST(α)∩(FIRST(β)∪FOLLOW(A))=Φ时,对于非终结符A的替换仍可唯一地确定候选。 SELECT定义:给定上下文无关文法的产生式A→α,A∈VN , α∈V*, 若α ε,则SELECT(A→α)=FIRST(α) 如果α ε,则 SELECT(A→α)={FIRST(α)-{ε}}∪FOLLOW(A) P72 SELECT(A→α) 表示选择此产生式得到的终结符号集 定义:一个上下文无关文法是LL(1)文法充要条件: 对每个非终结符A两个不同产生式A→α和A→β,满足:SELECT(A→α)∩SELECT(A→β)=Φ 其中α,β不能同时 ε 第一个L:自顶向下分析是从左向右扫描输入串。 第二个L:分析过程中将用最左推导。 1:只需向右看一个符号可决定选择哪个产生式进行推导。 例:文法G[S]是否是LL(1)文法? S→aA|d A→bAS|ε 例:设文法G[S] 为: S→aAS|b A→bA|ε 5.2 LL(1)文法的判别 求出能推出ε的非终结符 计算FIRST集 计算FOLLOW集 计算SELECT集 判别是否是LL(1)文法 1

文档评论(0)

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

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

1亿VIP精品文档

相关文档