编译原理-第4章+语法分析PPT.ppt

  1. 1、本文档共236页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理-第4章语法分析PPT

第四章 语法分析;§4.1 引言 一、语法分析任务 1.语法检查 2.根据语法符号进行一定处理加工 二、语法分析方法 1.自顶向下语法分析方法 2.自底向上语法分析方法;一、语法分析任务 词法分析阶段,主要介绍了单词符号的结构、识别(用状态转换图),描述(通过正规式)以及有限自动机DFA和NFA。 在一个编译程序对某个源程序完成了词法工作以后,就进入了语法分析阶段。由词法分析程序所产生的单词符号流,作为语法分析程序的输入串,按文法规则分析检查是否构成了合法的句子。 首先来了解一下语法分析的任务。;1.语法检查 根据语法规则对各种语法成分进行分析,确定它们的语法关系以检查语法上的正确和错误,并指出错误的性质和出错位置。 如:if B then S1 else S2 若写成 if B then else S2 就错了(then后少一个S1) ;2. 根据语法符号进行一定语义处理加工 如语法分析过程得到一个合法的句子时,往往同时进行必要的语义分析等 如:当遇到处理表达式a+b*c时,若该表达式语法关系正确,就可以进行语义处理加工,可将该表达式变成中间语言,以便以后生成目标程序;2.自底向上语法分析方法;§4.2 自顶向下语法分析 一、消除左递归 二、消除回溯 三、递归下降分析法 四、LL(1)分析法 ;一、消除左递归;若文法具有间接左递归,即有 U?+U… 那么,也会发生上述问题。; 例如:已知文法G[S] S ∷=AB A ∷=bB|Aa (存在直接左递归) B ∷=Sb|a 现分析符号串baabaab是否是文法G的句子。;(2) 消除左递归方法 1)用重复表示法(扩充的BNF表示法)改写语法规则 假定一个文法中有关于非终结符的规则为 A∷=Aα|β 其中α非空,β不以A开头,则等价地改写为 A∷=β{α} ;例如,下述直接左递归规则: E∷=E+T|T 可改写为 E∷=T{+T} ;同样,规则 T∷=T*F|T/F|F;2)改写方法规则消除直接左递归 还可用另一种方法来改写形如文法规则A∷=Aα|β的直接左递归。对A引入一个新的非终结符A′,将A∷=Aα|β等价写成 A∷=βA′ A′∷=αA′|ε 由于β不以A开头,α不以A′开头,因此改写后两条规则不是直接左递归。同样可以证明这种形式和原来形式是等价的。;A;就一般而言,关于A的规则具有下面形式: A∷=Aα1|Aα2|…|Aαn|β1|β2|…|βn 这时可改写成如下形式: A∷=A(α1|α2|…|αn|) |β1|β2|…|βn 由消除直接左递归方法,得 A ∷= (β1|β2|…|βn)A′ A′∷= (α1|α2|…|αn)A′|ε;例如:A ∷=Ac|Aad|bd|e 等价于A ∷=A(c|ad)|bd|e , 所以可以改写成: A ∷=(bd|e)A’ A’ ∷=(c|ad)A’| ε;例如:有文法 E∷=E+T|T, T∷=T*F|F, F∷=(E)|i 用上述方法可改写成: E∷=TE′, E′∷=+TE′|ε T∷=FT′, T′∷=*FT′|ε, F∷=(E)|i; 上述两种方法可消除任意直接左递归,但不能消除间接左递归 例如,有文法G[S] S∷=Qc|c Q∷=Rb|b R∷=Sa|a 该文法无直接左递归,但有间接左递归,例如有 S? Qc ? Rbc ? Sabc 即S?+Sabc;3)消除间接左递归 对于间接左递归先将间接左递归变成直接左递归,然后再消除直接左递归 例如;A ∷=aB|Bb (1) B ∷=Ac|d (2) 先将(1)代入(2)中,得 B ∷=Bbc|aBc|d (3) 由此将(3)改写为; B ∷=(aBc|d)B’ B’∷=bcB’|? 加入文法开始符号的产生式得消除左递归后的等价文法为: A ∷=aB|Bb B ∷=(aBc|d)B’ B’∷=bcB’|?;4) 消除文法递归的一般算法 要求:文法不含形如A? +A的推导,也不存在A∷=ε这样规则,算法思

文档评论(0)

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

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

1亿VIP精品文档

相关文档