编译原理第二章PPT.pptVIP

  • 93
  • 0
  • 约3.72千字
  • 约 24页
  • 2018-04-13 发布于湖北
  • 举报
编译原理第二章PPT

编译器前端的模型 产生式 也称重写规则或规则。 通常写作: U ::= u 或 U ? u 其中: U是一个符号,称为左部或头 u是有穷符号串,称为右部或体 例: sentence ? subject verb sentence ? subject verb complement 上下文无关文法 是一个四元组,包括: 终结符集 文法所定义的语言的基本符号的集合 仅出现在产生式右部(体) 非终结符集 在某个产生式的左部出现过的文法符号 产生式集 开始符 两种说明方式: 明确指出 第1条产生式规则左部的文法符号 上下文无关文法(例) list ? list + digit list ? list - digit list ? digit digit ? 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 推导 从开始符出发,不断将某个非终结符替换为该非终结符的某个产生式的右部。 推导的符号: ? 语言:从开始符出发,利用推导能得到的所有终结符号串的集合。 上下文无关文法生成的语言称为上下文无关语言 推导(例) list ? list + digit ? list - digit + digit ? digit - digit + digit ? 9 - digit + digit ? 9 - 5 + digit ? 9 - 5 + 2 语法分析树 以图形方式展现推导过程 给定一个上下文无关文法,该文法的一棵语法分析树是具有以下性质的树: 根节点是开始符 叶节点是终结符( token) 或 ε 内部节点(非叶结点)是非终结符 如果应用了规则A ? x1x2…xn, 则A是内部结点; x1 , x2 , … , xn是子结点 综合例 考虑以下文法:S? SS+ | SS* | a 1)试说明如何使用该文法生成串aa+a* S ? SS* ? SS+S* ? aS+S* ? aa+S* ? aa+a* 2)试为这个串构造一棵语法分析树 3)该文法生成的语言是什么? 后缀表达式 二义性 对于一个文法,若有多棵分析树生成同一个终结符号串,则此文法具有二义性。 有时可以基于优先级和结合性来构建无二义的文法 四则运算存在两个优先级,所以可引入两个非终结符expr和term来对应不同的运算层次 四则运算均为左结合,故规则中更为抽象的非终结符应位于左边 最左推导与最右推导 最左推导(Leftmost derivation) : 总是首先替换最左边的非终结符 最右推导(rightmost derivation) : 总是首先替换最右边的非终结符 最左(右)推导与分析树一一对应 可以通过说明对于某个串存在两个不同的最左推导来证明文法二义 可以通过说明对于某个串存在两个不同的最右推导来证明文法二义 串 符号的有穷序列 串的表示: a2表示aa a2b2表示aabb 闭包:a*表示{ε,a,aa,aaa,aaaa,….} 正闭包:a+表示{a,aa,aaa,aaaa,…} 设A={a,b,c},则A*表示{ε,a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc,aaa,…} 语言 推导长度:执行一步推导的次数 一步推导? 大于等于1步的推导? 大于等于0步的推导? 对于上下文无关语言G[S]: 如果S ??,则?为文法G的句型 如果S ?W (W?T*), 则W为文法G的句子。 一个文法的句子集合称为语言。 文法S? 0S1 | 01生成什么语言?给出证明。 本文法对应的语言为{0m1m|m0}。 证:对推导长度n进行归纳证明。 当n=1时,S可以推导出的句子为01,即0111。 设n不大于k时,得到的串为0n1n。则当n=k+1时,第一步进行的推导应该是S?0S1。而对于句型0S1中的S进行k步推导,会得到句子为0k1k,故k+1步推导得到的句子为0k+11k+1。 综合(1)(2)可知,对于任意的n0,n步推导所得的句子为0n1n,本文法对应的语言为{0m1m|m0}。 作业1 1、先分别用以下文法推导出id+id+id*id,并画出推导过程对应的分析树;最后比较三个文法生成的语言有什么不同。 文法1:E? E+T | T T ? T*F | F F ? id 文法2:E? T+E | T T ? F*T | F F ? id 文法3:E? E*T | T T ? T+F | F F ? id 作业1 2、指出下列错误可在编译的哪个阶段被发现 (1)关键字拼写错误 (2)缺少运算对象 (3)实参与形参的类型不一致 (4)所引用的变量没有定义 (5)数组下标越界 (6)本应为常数,但却在数中出

文档评论(0)

1亿VIP精品文档

相关文档