编译原理第二章PPT.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理第二章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)

yaocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档