1 / 119
文档名称:

华东师范大学计算机科学技术系.ppt

格式:ppt   页数:119
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

华东师范大学计算机科学技术系.ppt

上传人:nb6785 2015/6/17 文件大小:0 KB

下载得到文件列表

华东师范大学计算机科学技术系.ppt

文档介绍

文档介绍:第五章语法制导翻译和中间代码生成
§ 概述
语义分析包含静态语义检查和语义识别,并在此基础上对源程序(单词串形式)进行等价转换,转换为中间代码(目标代码)。
在后面的讨论中总是认为词法、语法分析已经完成,读入的是(语法正确)句子!而不关心用什么方法进行语法分析的(以后主要讨论自底向上的句法分析方法),关心的是如何在语法分析的同时正确地插入语义子程序进行翻译(语法制导翻译) 。
6/30/2017
1
华东师范大学计算机科学技术系
一、静态语义检查
称在编译时刻进行的语义检查为静态语义检查,通常可包含如下内容:
类型检查。
检查运算的合法性和参与运算的运算分量类型的一致性(相容性)。必要时进行相应的类型转换。
(2) 控制流检查。
以保证控制语句有合法的转向点,如C语言中的break语句,需寻找包含它的最小的switch、while或for语句,方可找到转向点,否则出错。不允许循环外控制转入循环内。
6/30/2017
2
华东师范大学计算机科学技术系
(3) 有关名字的匹配检查。
可以对某些程序段命名,该名字出现在程序段的开始和结束处,如同语句括号一般,应检查它们的配对。
(4) 一致性检查。
如在相同作用域中标识符只能说明一次(重复定义),case语句的标号不能相同,枚举类型的元素不能重复,没有定义数据类型等。
6/30/2017
3
华东师范大学计算机科学技术系
二、语法制导翻译
例1:对算术表达式文法G[<E>]的一个翻译方案
<E>→<E>+<T> {print “1”}
<E>→<T> {print “2”}
<T>→<T>*<F> {print “3”}
<T>→<F> {print “4”}
<F>→(<E>) {print “5”}
<F>→i {print “6”}
其中{ }括起的称为该产生式的语义子程序。
对输入串W=(i+i)*i 则W是G的一个句子。
6/30/2017
4
华东师范大学计算机科学技术系
若采用自底向上的句法分析,规定当用产生式<A>归约时,调用相应的语义子程序,则翻译结束后输出 64264154632。
若采用自顶向下的句法分析,规定当用产生式<A>推导时,调用相应的语义子程序,则翻译结束后输出 23451246466。
应根据输出(翻译)目标,配备适当的语义子程序,这就是所要做的工作。
<E>
<T>
*
<F>
<T>
<F>
<E>
)
(
+
<T>
<E>
<T>
<F>
<F>
i
i
i
6/30/2017
5
华东师范大学计算机科学技术系
三、翻译要解决的问题
翻译成什么样的目标语言的代码?
将源语言程序翻译成中间语言的程序。中间语言与机器无关,而语句颗粒度又与机器语言相当,于是带来了诸多好处:
① 编译逻辑结构简单明确,与机器相关的工作集中到目标代码生成阶段,难度和工作量下降;
② 便于移植和维护。
③ 利于优化,代码优化将分成与机器无关的中间代码优化及与机器相关的目标代码优化两个阶段,使优化更有效。
6/30/2017
6
华东师范大学计算机科学技术系
2. 何时进行这种翻译?
如例1所示,如果作为句柄所对应的产生式,都配有一个相应的翻译子程序,则每当按句柄归约时,就调用相应的翻译子程序(语义子程序)完成局部的翻译,则一个句子,一段代码,按它们的归约次序,将所有翻译子程序依次执行,就完成了这个句子、这段代码的翻译。这种翻译与语法分析紧密相关,称之为语法制导翻译:每当归约时,调用相应的语义子程序,这就是翻译的时机。
6/30/2017
7
华东师范大学计算机科学技术系
3. 如何实现这种翻译?
语法制导翻译的关键,是为每个产生式编写翻译子程序。例1中产生式所带有的这种语义子程序只能输出这类数字串。现在,要对一个有穷表示的文法的无穷多个语句,按所给出的语义子程序要完成不同语句的翻译任务,输出各自的目标代码。难点自然就集中在如何写这些语义子程序了。
采用属性翻译文法(属性文法),这是一种形式化的语义分析方法。
6/30/2017
8
华东师范大学计算机科学技术系
结论
语法制导的翻译方法就是在语法分析的同时(制导下)插入一系列的语义动作(由语义子程序提供),将源程序(单词形式)翻译成等价的中间代码。
主要考虑自底向上句法分析的方法(在归约时调用语义子程序),设计翻译方案(形成属性文法)。
6/30/2017
9
华东师范大学计算机科学技术系
§ 中间语言
常见的中间语言有很多种,一般可单独或混合使用。
一、后缀表示(逆波兰表示)
是由波兰数学家卢卡西维奇(Lukasiewicz)提出的。它是将a op b中运算

最近更新

2025年南充电影工业职业学院单招职业倾向性考.. 44页

绿色办公材料对空气质量的影响 35页

2025年南昌大学共青学院马克思主义基本原理概.. 13页

绿饮政策碳减排效应 35页

2025年卢氏县招教考试备考题库带答案解析(夺.. 31页

2025年厦门大学马克思主义基本原理概论期末考.. 13页

网络功能虚拟化升级 35页

2025年台前县招教考试备考题库带答案解析(必.. 31页

羽绒干法分离创新 34页

2025年合肥工业大学马克思主义基本原理概论期.. 13页

绿色消费理念在商超场景的应用探索 35页

胃癌干细胞与肿瘤侵袭性 35页

风热咳嗽的中医证候辨证体系 35页

2025年同济大学马克思主义基本原理概论期末考.. 13页

腹膜炎中医病因病机探讨 37页

2025年哈密职业技术学院单招职业技能测试题库.. 43页

2025年哈尔滨师范大学马克思主义基本原理概论.. 13页

缺陷传播路径分析 35页

2025年商都县招教考试备考题库及答案解析(夺.. 31页

2025年嘉黎县招教考试备考题库及答案解析(必.. 31页

2025年四川司法警官职业学院单招职业倾向性考.. 43页

风险感知影响因素 35页

高温合金强化工艺 35页

2025年四川西南航空职业学院单招职业倾向性测.. 45页

网络调查方法与数据分析 36页

2025年夏河县幼儿园教师招教考试备考题库带答.. 31页

2025年天府新区信息职业学院马克思主义基本原.. 12页

肉牛基因编辑育种模式创新 36页

聚合物地板创新 38页

钢铁产业智能化升级趋势 35页