第8章语法制导翻译中间代码生成.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文档。上传文档
查看更多
第8章语法制导翻译中间代码生成

第八章 语法制导翻译和中间代码生成;概述 语义处理;概述;属性文法 ; 操作语义;公理语义; ;指称语义; ; Valuation[101] 表示把Valuation施用于101 Valuation[N] ------ 把它施用于N 定义: Valuation(用四个方程)因为有四个形式numeral Valuation[0] ?0 Valuation[1] ?1 Valuation[N0] ?2?Valuation [N] Valuation[N1] ?2?Valuation [N]+1 所以: Valuation[110]=2 ? Valuation[11] = 2 ? (2 ? Valuation[1]+1) =2 ?(2 ? 1+1) =6 ;属性文法和语法制导翻译 ;属性文法;属性有两种 继承的和综合的属性;; ;设表达式为3*5+4,则语义动作打印数值19;继承属性; ;例8.3;var x;var y;x:=e;;语法制导的翻译;语法制导的翻译; ; ; ; ; ;语义制导翻译中的规则A??,?;语法制导翻译实现;依赖图;依赖图----例8.2 ;例8.2 Real id1,id2,id3分析树的依赖图;;良定义的属性文法。 ;属性的计算顺序;; 属性计算方法;例:定义定点二进制数的CFG:; 非终结符N表示整个二进制数的数值,综合属性v附加在N上:N v 非终结符B 表示一个二进制数字,它有自己的值v ,但该值分配给N的值与它的位置有关,是与2成比例,比例因子f是从S继承的属性,所以:B v f 非终结符S 表示一个二进制数字串,它也有值,但该值与串的位置有关,与f有关与串的长度l有关: S f v l ;构造数值的属性断言可以如下:; N ?v ?S ? i1 ? l1 “?” S ? i2 ? l2 [v= i1+ 2-l2 ? i2 ] S ? i ? l ? S ? i1 ? l 1 B?i2 [ i =2 i1+ i2; ;l=l1+1] ? B ? i [l=1] B ? i ?“0” [i =0] ?“1” [i =1]; ;S-属性文法的自下而上计算;; 2+3*5的分析和计值过程;BOTTOM—UP 语义处理是作类型检查,对二目运算符的运算对象进行类型匹配审查。 (LR分析):增加语义栈 归约时进行语义动作. 例8.7G[E]: (1) E ?T+T (2) E ?T or T (3) T ?n (4) T ?b ;; G[E]: (1) E ?T+T (2) E ?T or T (3) T ?n (4) T ?b;;L-属性文法和自顶向下翻译;例(中缀表达式翻译成相应的后缀表达式) E→TR R→addop T {print(addop. Lexeme)} R1|ε T→num {print(num.val)} ;输入串9-5 + 2的语法树,每个语义动作都作为相应产生式左部符号的结点的儿子,按深度优先次序执行图中的动作后,打印输出95-2+。;L-属性文法在自顶向下分析中的实现 ;消除左递归的同时考虑属性,构造新的翻译模式 ;计算表达式9-5+2;;;转换左递归翻译模式的方法推广到一般 ;; A→A1Y {A.a: = g(A1。a, Y.y)} A→X {A.a: = f(X.x)} ; A→X{R.i: = f(X.x)} R→Y {R1.i: = g((R.i),Y.y)} R {A.a: =R.s} R1{R.s: = R1.s} ;思考问题-把建立

文档评论(0)

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

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

1亿VIP精品文档

相关文档