编译原理第三章文法和语言续.ppt

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

* 北京化工大学信息科学与技术学院计算机系 * ( 3 ) 语法树与推导 句型推导过程==句型语法树的生长过程 从识别符号开始,自右向左建立推导序列。 由根结点开始,自上而下建立语法树。 2.4.1 推导与语法树 由推导构造语法树 1 * 北京化工大学信息科学与技术学院计算机系 * 例:G[无符号整数] 句型10 [无符号整数] 无符号整数 数字串 数字串 == 数字串 数字 数字串 数字 == 0 数字串 0 == 数字 数字 0 == 1 10 == 规范推导 * 北京化工大学信息科学与技术学院计算机系 * 由语法树构造推导 2 自下而上地修剪子树的末端结点,直至把整棵树剪掉(留根),每剪一次对应一次规约。 从句型开始,自左向右地逐步进行规约, 建立推导序列。 2.4.1 推导与语法树 定义12. 对句型中最左简单短语(句柄)进行的规 约称为规范规约。 * 北京化工大学信息科学与技术学院计算机系 * [无符号整数] 数字串 数字 数字串 数字 0 1 无符号整数 == 数字串 数字 == 数字串 0 == 10 数字 0 == 数字串 == 规范规约与规范推导互为逆过程 * 北京化工大学信息科学与技术学院计算机系 * 定义13. 通过规范推导或规范规约所得到的句型 称为规范句型。 在上例中,数字数字 就不是规范句型,因为: 无符号整数== 数字串 == 数字串 数字 == 数字 数字 不是规范推导 2.4.1 推导与语法树 * 北京化工大学信息科学与技术学院计算机系 * 3.4.2 文法的二义性 定义14.1 若对于一个文法的某一句子存在两棵不同的 语法树,则该文法是二义性文法,否则是无二义性文法。 换而言之,无二义性文法的句子只有一棵语法树,尽管推导过程可以不同。 3.4 语法树与二义性文法 * 北京化工大学信息科学与技术学院计算机系 * 对于句子S=i+i * i ∈ L(G[E] ),存在不同的规范推导: (1) E==E+E==E+E*E ==E+E*i ==E+i*i == i+i * i (2) E== E*E == E*i == E+E*i == E+i*i == i+i * i 例:一个二义性文法的例子: G[E]: E:= E+E | E*E | (E) | i Vn={E} Vt={ +, * , ( , ) , i } * 北京化工大学信息科学与技术学院计算机系 * E E E + E E * i i i E E E * E E + i i i 这两种不同的推导对应了两种不同的语法树。 对于句子S=i+i * i ∈ L(G[E] ),存在不同的规范推导: (1) E==E+E==E+E*E ==E+E*i ==E+i*i == i+i * i (2) E== E*E == E*i == E+E*i == E+i*i == i+i * i * 北京化工大学信息科学与技术学院计算机系 * 定义14.2 若一个文法的某句子存在两个不同的规范 推导,则该文法是二义性的,否则是无二义性的。 3.4.2 文法的二义性 若文法是二义性的,则在编译时就会产生不确定性,遗憾的是在理论上已经证明:文法的二义性是不可判定的,即不可能构造出一个算法,通过有限步骤来判定任一文法是否有二义性。 * 北京化工大学信息科学与技术学院计算机系 * 现在的解决办法是:提出一些限制条件,称为无二义性的充分条件,当文法满足这些条件时,就可以判定文法是无二义性的。 由于无二义性文法比较简单,我们也可以采用另一种解决办法:即不改变二义性文法,而是确定一种编译算法,使该算法满足无二义性充分条件。 3.4.2 文法的二义性 * 北京化工大学信息科学与技术学院计算机系 * 例:算术表达式的文法 E::= E+E | E*E | (E) | i E::= E+T | T T ::= T*F | F F ::= (E) | i 无二义性的文法 * 北京化工大学信息科学与技术学院计算机系 * 任务:给定G[Z]: S ∈ Vt*, 判定是否有 S ? L (G[Z] ) ? 这是词法分析和语法分析所要做的工作, 将在第四、五章中详细介绍。 3.5 句子的分析 * 北京化工大学信息科学与技术学院计算机系 * 3.6 有关文法的实用限制 若文法中有如U::=U的规则,则这就是有害规则, 它会引起二义性。 例如存在U:

文档评论(0)

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

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

1亿VIP精品文档

相关文档