编译原理-第4章+语法讲述.ppt

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

第四章 语法分析 §4.1 引言 §4.2 自顶向下语法分析 §4.3 自底向上语法分析 §4.4 语法分析程序的自动生成 §4.1 引言 一、语法分析任务 1.语法检查 2.根据语法符号进行一定处理加工 二、语法分析方法 1.自顶向下语法分析方法 2.自底向上语法分析方法 一、语法分析任务 词法分析阶段,主要介绍了单词符号的结构、识别(用状态转换图),描述(通过正规式)以及有限自动机DFA和NFA。 在一个编译程序对某个源程序完成了词法工作以后,就进入了语法分析阶段。由词法分析程序所产生的单词符号流,作为语法分析程序的输入串,按文法规则分析检查是否构成了合法的句子。 首先来了解一下语法分析的任务。 二、语法分析方法 语法分析方法很多,但能够产生计算机程序并能得到广泛应用的主要有两大类,按照生成语法树的顺序,分别称为自顶向下和自底向上分析方法。 §4.2 自顶向下语法分析 一、消除左递归 二、消除回溯 三、递归下降分析法 四、LL(1)分析法 一、消除左递归 就一般而言,关于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′|ε 上述两种方法可消除任意直接左递归,但不能消除间接左递归 例如,有文法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∷=ε这样规则,算法思想如下: ①将文法G的所有非终结符整理成某种顺序U1,U2,…Un ②从U1开始消除U1规则的直接左递归 ③用左部为U1的所有规则右部替换左部为U2,右部以U1开始的规则中的U1,并消除U2规则的直接左递归。 ④用类似的方法用U1,U2的右部替换左部为U3,右部以U1,U2开始的规则中,消除U3规则中的直接左递归。 ⑤重复上一步,直到最后把左部为U1,U2,…Un-1的右部带入Un规则中,并消除Un中的直接左递归。 ⑥消除多余规则 ① 将文法G的所有非终结符整理成某种顺序U1,U2,…Un,然后按此顺序执行下一步; ② 执行循环语句: FOR i:=1 TO n DO BEGIN FOR j∶=1 TO i-1 DO BEGIN 把形如 Ui∷=Ujy的规则改写成 Ui∷=x1y|x2y|…|xky 其中Uj∷=x1|x2|…|xk 是Uj的所有规则 END 消除关于Ui规则中直接左递归 END ③ 去掉多余规则(如果有的话) 例4.2设有文法G[S] S∷=Aa|b A∷=Ac|Sd|e 应用上述算法,将非终结符排列S,A。然后执行循环语句 FOR i∶=1 TO 2 DO BEGIN FOR j∶=1 TO i-1 DO BEGIN … END 消除Ui规则中直接左递归 END 当i=1时,上述语句对文法G不产生影响。 当i=2时,应改写规则A∷=Sd, 因为S∷=Aa|b, 所以A∷=Aad|bd, 此时文法G变换成为 S∷=Aa|b A∷=Ac |Aad|bd|e 消除关于A的直接左递归即可。 S∷=Aa|b A∷=bdA’|eA’ A’∷=cA’

文档评论(0)

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

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

1亿VIP精品文档

相关文档