- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 2 数组元素的翻译 设数组元素为: A[ E1,E2,......En], 要取得该元素值,首先要计算 出该元素的地址: addr=conspart+varpart conspart =a -c varpart = {(...((E1d2+E2)d3+E3)d4+E4)......) dn + En } conspart 的 a c 已经通过数组说明语句的翻译登记在内 情向量表中; 而 varpart 中含有未知数,只能在程序运行时通过如 下算法实现: * varpart:=E1;k:=1; while kn do { varpart:=varpart*dk +1 + Ek +1; K:=k+1 } 下面是包含数组元素的变量的文法: V→i | i [ E1,E2,....En] 为了便于翻译上面的算法,文法改为如下形式: V→i | Elist] Elist→i [E | Elist1,E V 有两个值 : V.place , V.off 对于简单变量 , V.place = entry(i),V.off=0; 对于数组变量 , V.place = a -c , V.off=varpart; * Elist 有三个值 : Elist.array // i 在符号表中的位置 Elist.dim // i 的维数 Elist.place // 存放 varpart 的中间结果 语义子程序如下: V→i { V.place:=entry(i); V.off:=0; } Elist→i [E { Elist.array:=entry(i); Elist.place:=E.place; Elist.dim:=1 } * Elist→ Elist1,E {Elist.place:=newtemp( ); Elist.array:= Elist1.array ; Elist.dim:= Elist1.dim+1; dk:=get_dk(Elist.array, Elist.dim); gen(* , Elist1.place,dk, Elist.place); gen(+ , E.place,Elist.place, Elist.place); } V→ Elist] { V.place:=newtemp( ); gen(-,Elist.array.a, Elist.array.c,V.place) V.off:=Elist.place } * 3 含数组元素的赋值语句的翻译 赋值语句的文法扩充如下:(对比前面的赋值语句) S→V:=E E→E+E | E-E | E*E | E/E | (E) |V 只考虑如下两个产生式的语义子程序: S→V:=E {若V.off=0 则 gen(:=,E.place, , V.place) 否则 gen(:=,E.place, , V.place[V.off] } E→ V {若V.off=0 则 E .place:= V.place 否则{ E.place:=newtemp( ); gen(:=, V.place[V.off], , E.place) } } * 本章习题 P175 4. 5. 7. 12 * * 第五章 中间代码生成 源语言 目标语言 源语言 1) 2) 目标语言 中间代码 中间代码的特点: 结构简单,功能明确,易于优化,易于翻译. * 第一节 中间代码简介 1) 逆波兰表示法 运算量在前,运算符在后的后缀式表示法. 例如: 表达式 后缀式 a+b ab+ (a+b)*c ab+c* a*(b+c) abc+* (a+b)*(c+d) ab+cd+* * 2) 三元式表示法 三元式就是三元组: ( 操作符,操作数1,操作数2) 例如: 语句 D:=A+B*C 可翻
您可能关注的文档
- 2013年名校名师指导高考志愿填报【志愿填报】.ppt
- 2013年高考生物专题—图表专题.ppt
- 2013年年度工作总结通用.ppt
- 2013年商场中秋活动方案策划.ppt
- 2013年蛇年大吉喜庆PPT模版.ppt
- 2013年数学高考总复习重点精品课件:四种命题间的相互关系.ppt
- 2013年数学高考总复习重点精品课件:_《1.2_独 立性检验的基本思想及其初步应用》课件3_新人教A版选修1-2.ppt
- 2013年数学高考总复习重点精品课件:_《1.1回归分析的基本思想及其初步应用》课件_新人教A版选修1-2.ppt
- 2013年元旦晚会_喜庆.ppt
- 2013年双十一电商焦点图赏析(主要是服饰类,包括传统品牌和淘品牌).ppt
文档评论(0)