语义分析和中间代码生成.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3) 间接三元式 在三元式代码表的基础上另设一张表,该表按运算的次序列出相应三元式在三元式表中的位置,这张表称为间接码表。三元式表只记录不同的三元式语句,而间接码表则表示由这些语句组成的运算次序。 例如对于表达式:A+B*(C-D)+E/(C-D)^N的三元式与间接码表为: 每生成一条指令,先检查已生成的间接三元式序列,若已有,不再生成,只把序号列入间接码表中。 第五十五页,本课件共84页 在三元式表示中,每个语句的位置同时有两个作用:一是可作为该三元式的结果被其它三元式引用;二是三元式位置顺序即为运算顺序。在代码优化阶段,需要调整三元式的运算顺序时会遇到困难,这是因为三元式中的arg1、arg2也可以是指向某些三元式位置的指针,当这些三元式的位置顺序发生变化时,含有指向这些三元式位置指针的相关三元式也需随之改变指针值。因此,变动一张三元式表是很困难的。 第五十六页,本课件共84页 对四元式来说,引用另一语句的结果可以通过引用该语句的result(通常是一个临时变量)来实现,而间接三元式则通过间接码表来描述语句的运算次序。这两种方法都不存在语句位置同时具有两种功能的现象,代码调整时要做的改动只是局部的,因此,当需要对中间代码表进行优化处理时,四元式与间接三元式都比三元式方便得多。 第五十七页,本课件共84页 写中间语言:练习 写出表达式:A+B*(C-D)-E/F↑G 的逆波兰表示、三元式表示、四元式表示。 解: 四元式表示: ① ( - , C , D , T1 ) ② (* , B , T1, T2 ) ③ ( + , A , T2, T3 ) ④ (↑ ,F , G , T4 ) ⑤ ( / , E, T4, T5 ) ⑥ ( - , T3, T5, T6 ) 解: 三元式表示: ① ( - , C , D ) ② (* , B , ① ) ③ ( + , A , ② ) ④ (↑ ,F , G ) ⑤ ( / , E, ④ ) ⑥ ( - ,③ , ⑤ ) 解:逆波兰表示: ABCD -*+EFG↑/ - 第五十八页,本课件共84页 语法制导翻译 翻译的任务:首先是语义分析和正确性检查,若正确,则翻译成中间代码或目标代码。 第五十九页,本课件共84页 例如,简单算术表达式求值的属性文法如下: 规则 语义规则 (1) ?S→E print (E.val) (2) ?E→E(1)+T E.val=E(1).val+T.val (3) ?E→T E.val=T.val (4) ?T→T(1)*F T.val=T(1).val*F.val (5) ?T→T(1) T.val=T(1).val (6) ?F→(E) F.val=E.val (7) ?F→i F.val=i.lexval 第二十三页,本课件共84页 上面的一组规则中,每一个非终结符都有一个属性val来表示整型值,如E.val表示E的整型值,而i.lexval则表示i的整型内部值。与规则关联的每一个语义规则的左部符号E、T、F等的属性值的计算由其各自相应的右部符号决定,这种属性也称为综合属性。与规则S→E关联的语义规则是一个函数print(E.val),其功能是打印E规则的值。S’在语义规则中没有出现,可以理解为其属性是一个虚属性。 第二十四页,本课件共84页 简单变量类型说明的文法G[D]如下: G[D]:D→int L∣float L L→L, id∣id 其对应的属性文法为: 规则 语义规则 (1) ?D→TL L.in=T.type (2) ?T→int T.type=int (3) ?T→float T.type=float (4) ?L→L(1),id L(1).in=L.in; addtype(id.entry,L.in) (5) ?L→id addtype(id.entry,L.in) 注意到与文法G[D]相应的说明语句形式可为 int id1,id2,…,idn 或者 float id1,id2,…,idn 第二十五页,本课件共84页

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档