- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7 中间代码
第七章 语义分析及中间代码生成 语义分析的工作有:类型检查、控制流检查,一致性检查,作用域分析等。 可以在语法分析的基础上加上语义规则,直接产生机器语言或汇编语言形式的目标代码。但这种编译方式不利于优化和移植,目标代码质量不高。 现在的编译系统,一般都是将源程序先翻译为某种中间代码,然后再将中间代码翻译成目标代码。这样使得编译程序在逻辑结构上更简单,同时也为代码优化和移植创造了条件。 本章各种语句的代码生成将结合SPL代码生成的方式对照分析,开展课堂讨论。 四元式与三元式和间接三元式作一些比较 四元式之间的联系是通过临时变量实现的。这一点和三元式不同。要更动一张三元表是很困难的,它意味着必须改变其中一系列指示器的值。但要更动四元式表是很容易的,因为调整四元式之间的相对位置并不意味着必须改变其中一系列指示器的值。因此,当需要对中间代码进行优化处理时,四元式比三元式要方便得多。 对优化这一点而言,四元式和间接三元式同样方便。 本章重点 了解各种中间代码形式,掌握四元式; 掌握拉链返填技术; 掌握控制语句的四元式生成。 了解说明语句的处理和类型检查 标号和转移语句: ………. goto L; ………. goto L; ………. goto L; ………. L: ……….. 拉链 返填 goto nil ………... L goto ………... goto L: ……….. 与拉链返填技术相关变量和函数: nextquad指示器:指向下一个将要形成但尚未形成的四元式的地址. nextquad初值为1,每执行一次emit之后, nextquad将自动增加1. merge(p1,p2)://函数过程,把p1,p2为链首的两条链合并为一,返回链首p2(p1); POINTER PROCEDURE merge(p1,p2); IF p2=0 THEN merge:=p1 ELSE BEGIN p:=p2; WHILE 四元式p的第四区段的内容不为0 DO P:=四元式p的第四区段的内容; //找p2尾把p1填进四元式p的第四区段; merge:=p2 END makelist(i):创建一个仅包含i的新表,i是四元式数组的一个索引(下标),或说i是四元式代码序列的一个标号。 backpatch(p,t): //过程”回填”,把p所链接的每个四元式的第四区段都填为t; PROCEDURE backpatch(p,t); BEGIN Q:=p; WHILE Q≠0 DO BEGIN q:=四元式Q的第四区段的内容; 把t填进四元式Q的第四区段; Q:=q END OF WHILE END 自下而上分析中使用回填翻译布尔表达式 布尔表达式文法: (1)E→E1 or M E2 (2) |E1 and M E2 (3) |not E1 (4) |(E1) (5) |id1 rop id2 (6) |true (7) |false (8)M→ε 插入非终结符号M是为了引入一个语义动作,以便在适当的时候获得即将产生的下一个四元式的序号。 使用一遍扫描的布尔表达式的翻译模式: // M.quad记录E2代码序列的第一条四元式序号。 E?E1 or M E2 {backpatch(E1.falselist,M.quad); E.truelist:=merge(E1.truelist,E2.truelist); E.falselist:=E2.falselist } E?E1 and M E2 {backpatch(E1.truelist,M.quad); E.truelist:=E2.truelist; E.falselist:=merge(E1.falselist,E2.falselist);} E?not E1 { E.truelist:=E1.falselist; E.falselist:=E1.truelist } E ?( E ) { E.truelist:= E1.truelist; E.fal
您可能关注的文档
- 6.耳鼻喉解剖及耳部疾病护理.ppt
- 6_商务谈判策略.ppt
- 604班家长会.ppt
- 6_古代世界的战争与征服.ppt
- 6_我的老师.ppt
- 6S全面培训管理方法.ppt
- 6、优秀作文集锦2012.4.3整理.doc
- 6、动量守恒定律应用(二)(人船模型).ppt
- 6、《飞吧海鸥》.ppt
- 6—2学会调控情绪.ppt
- 2025年超临界辣椒精项目市场调查研究报告.docx
- 2025年电动机驱动工程切割机项目市场调查研究报告.docx
- 2025安徽蚌埠五河农村商业银行校园招聘15人笔试历年典型考题及考点剖析附带答案详解.docx
- 2010-2023历年上海市上海理工大学附属中学高一上期期末考试历史卷(带解析).docx
- 2025至2030年中国家用型全自动软水器市场分析及竞争策略研究报告.docx
- 2025年中国自动锅炉数据监测研究报告.docx
- 2025至2030年中国双孔石英管市场分析及竞争策略研究报告.docx
- 2025年带射灯照明欧式烟机控制器项目市场调查研究报告.docx
- 2025年出口型开具车项目市场调查研究报告.docx
- 保健食品生产监督检查操作指南.docx
文档评论(0)