4语法分析汇编.ppt

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

第4章 语法分析 4.1 语法分析程序的功能 4.2 自上而下分析方法 4.3 自下而上分析方法的一般原理 4.4 LR分析法 4.2 自上而下分析方法 自上而下分析就是从文法的开始符出发并寻找这样一个推导序列:推导出的句子恰为输入符号串;或者说,能否从根结点出发向下生长出一棵语法树,其叶结点组成的句子恰为输入符号串,则证明输入符号串为文法的一个句子;否则,输入符号串不是文法的句子。 1.自上而下分析存在的不确定性 假定文法G[S]为: S→xAy ? A→ab∣a 语法树的每一步生长(或每一步推导)都以能否与输入符号串匹配为准。(最左推导) 若输入串为xay,分析过程如下: (1) 首先建立根结点S。 (2) 文法关于S的产生式只有一个,由S生长的语法树如图4–1(a)所示,它的第一个终结符x与输入串待分析的字符x匹配。下一个待分析的字符为a,期待着它与语法树中在x右侧且与x相邻的叶结点A匹配。 (3) 非终结符A有两个候选式,先选用第一个候选式生长的语法树(如图4–1(b)所示);这时语法树的第二个叶结点a恰与待分析的字符a匹配。 (4) 输入串中下一个待分析的字符为y,它期待与第三个叶结点b匹配,但匹配时发现这两个字符是不同的,即匹配失败。 (5) 因不匹配而将A所生成的这棵子树注销,即把匹配指针回退到输入串的第二个字符a,也就是恢复与A匹配时的现场,即(3)之前。 (6) 此时A选用第二个候选式并生长语法树如图4–1(c)所示,这时第二个叶结点a与输入串的第二个叶结点a匹配。 图4–1 试探分析对应的语法树 (7) 此时输入串的下一个待分析字符指向y,而语法树的下一个未匹配的叶结点也为y,两者恰好匹配。因此,图4–1(c)的语法树即为输入串xay的语法树。 上述分析过程是一个不断试探的过程;即在分析过程中,如果出现多个产生式(即候选式)可供选择,则逐一试探每一候选式进行匹配,每当一次试探失败,就选取下一候选式再进行试探;此时,必须回溯到这一次试探的初始现场,包括注销已生长的子树及将匹配指针调回到失败前的状态。 带回溯的自上而下分析方法是一种穷举的试探方法,其分析效率极低,在实用的编译程序中很少使用。 2.文法的左递归性和回溯的消除 实现确定的(即无回溯的)自上而下分析,要求文法满足下述两个条件: (1) 文法不含左递归,即不存在这样的非终结符号A:有A→A…存在或者有A =+ Aα; (2) 无回溯,对文法的任一非终结符号,当其产生式右部有多个候选式可供选择时,各候选式所推出的终结符号串的首字符集合要两两不相交。 左递归是程序语言的语法规则中并不少见的形式,例如规则 E→E+T 如果采用自上而下分析法,即首先以“E+T”中的E为目标对“E+T”进行试探,进而又以其中的E为目标再对选择“E+T”进行试探;也即 E+T=E+T+T=E+T+T+T = … 陷入无限循环。 当试图用E去匹配输入符号串时会发现:在没有吃进任何输入符号的情况下,又得重新要求E去进行新的匹配。 由于回溯的存在,可能在已经做了大量的语法分析工作之后,才发现走了一大段错路而必须回头,就要把已经做的一大堆语义工作(指中间代码产生工作和各种表格的簿记工作)推倒重来。 回溯使得自上而下语法分析只具有理论意义而无实际使用价值。因此,要使自上而下语法分析具有实用性就要消除回溯。 消除左递归 设关于非终结符A的直接左递归的产生式形如 A→Aα∣β 其中α、β是任意的符号串且β不以A开头。 方法是引入一个新的非终结符,可将A的产生式改写为如下的右递归形式:

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档