- 1、本文档共71页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7讲--中间代码翻译
第七讲 语义分析和中间代码产生;
静态语义检查和中间代码产生在编译程序中的位置如图所示:;◇ 虽然源程序可以直接翻译为目标语言代码,但是通常编译程序还是采用了独立于机器的、复杂性介于源语言与机器语言之间的中间语言。这样做的好处是:
(1)便于进行与机器无关的代码优化;
(2)使编译程序改变目标机更容易;
(3)使编译程序的结构在逻辑上更为简单明确,以中间语言为界面,编译前端和后端的接口更清晰。;§1. 语义分析概述; 二、语义分析的范围
1.确定类型:确定标识符所关联的数据类型。
2.类型检查:按语言的类型规则,检查运算的合法性与运算分量类型的一致性,必要时作类型转换。
3.识别含义:根据语言的语义定义(形式或非形式),识别程序中各构造成分组合到一起的含义,并作相应的语义处理(生成中间代码或目标代码)。;4.控制流检查:控制流语句必须转移到合法的地方。
如C中,break语句规定跳出最内层的循环或switch语句。
5.一致性检查:在很多场合要求对象只能被说明一次。如:pascal语言规定同一个标识符在一个分程序中只能被说明一次等。
6.相关名字检查:如:Ada,循环或块可以有一个名字,它出现在这些结构的开头或结尾。编译程序必须检查这两个地方用的名字是否相同。
其它:如名字的作用域分析等也是语义分析的工作。;三、语义描述工具和语义分析方法
语义描述工具
目前流行:用属性文法作为描述语义的工具。
语义分析方法
根据描述属性文法的语义规则的方式不同分为:
语法制导定义
翻译方案;属性文法形式定义:一个属性文法是一个三元组A=(G,V,F)
其中:G为一个上下文无关文法;
V 表示属性的有穷集合;
F表示属性的断言或谓词的有穷集。
语义规则
在对文法符号属性处理过程中,为文法的每一产生式定义一组属性的计算规则,称为语义规则。
; 3.语法制导翻译
所谓语法制导翻译是指:对文法中的每个产生式都附加上一个语义动作或语义子程序。伴随着语法分析,每当使用一条产生式进行推导或归约时,就执行相应产生式的语义动作(包括:查填表格,改变变量的求值,诊察与报告错误,生成中间代码等),从而完成预定的翻译工作。
;§2.几种常用的中间语言形式; 二、图表示法
这里要介绍的图表示包括DAG与我们前面介绍过的抽象语法树。
1. 无循环有向图(DAG)
DAG与抽象语法树基本上一样,对表达式中的每个子表达式,DAG中都有一个结点。一个内部结点表示一个操作符,它的孩子表示操作数。
两者所不同的是,在一个DAG中代表公共子表达式的结点具有多个父结点,而在一棵抽象语法树中公共子表达式被表示为重复的子树。如下例:;assign; 2.再来看A*B+C*D的树、后缀式; 3.树表示的翻译法:
例: 产生式 语义动作
(1)E→E1 op E2 {E.val:=NODE(op,E1.val,E2.val)}
(2)E→(E1) {E.val:=E1.val}
(3)E→-E1 {E.val:=UNARY(@E1.val)}
(4)E→i {E.val:=LEAF(i)}; 三、三元式
1.三元式由三个部分组成:
算符:OP
第一运算分量:ARG1
第二运算分量:ARG2
2.各种语句都可表示成一组三元式
例1: OP ARG1 ARG2
x+y*z (1) * y z
(2) + x (1)
这儿实际实现时x,y,z也都是指示器,指向这些变量在符号表中的位置。算符OP一般用整数编码,而且可以加进一些诸如类型之类的信息。 ; 对于一目运算符,我们可以规定只用ARG1,而多目运算符可以用若干条相继的三元式来表示。
OP ARG1 ARG2
例2:-x+y*z (1) @ x --
(2) * y z
(3) + (1) (2)
例3:赋值语句的三元式表示
OP ARG1
您可能关注的文档
- 益生菌讲座_PPT.ppt
- 第6章_堆排序.ppt
- 第6章 洗衣房管理.ppt
- 第6章商务谈判礼仪.ppt
- 第6章半导体结型器件.ppt
- 第6章—航空器的腐蚀与控制.ppt
- 监狱基础知识试卷及答案整理打印版.doc
- 第6章-第1节--人体对外界环境的感知.ppt
- 益生菌-3_9版.ppt
- 第6章设备方案的工程经济分析.ppt
- 旅游目的地文化与景点知识练习题.doc
- 初中阶段亲社会行为培养的心理健康教育改革教学研究课题报告.docx
- 高中化学实验技能国家课程校本化教学案例教学研究课题报告.docx
- 小学语文核心素养培养下的阅读策略探究报告教学研究课题报告.docx
- 《智能建筑能源管理系统在建筑能耗管理标准体系构建中的应用》教学研究课题报告.docx
- 初中阶段围棋教学对学生逻辑思维与策略形成的影响研究教学研究课题报告.docx
- 初中信息技术课程中编程语言教学实践研究教学研究课题报告.docx
- 小学音乐教学中的乐理知识与曲目演奏教学研究课题报告.docx
- 2025届河南省商丘市睢县育才九年一贯制学校五年级数学第二学期期末学业水平测试试题含答案.doc
- 农业采摘园的创业计划.pptx
文档评论(0)