编译原理陈火旺版7章7
第七章语义分析和中间代码生成1、 编译程序的任务是把源语言程序翻译成目标程序, 有些编译程序在编译过程中,不产生中间语言,而 是直接从源语言程序翻译成目标语言程序。
源程序
编译程序
目标代码
以上编译过程省略了中间语言,它不利于编译所产生的目 标代码的优化.为了产生高质量的代码,可以将源语言程序首 先翻译成一种特殊形式的中间语言代码形式,并对其进行优化, 然后再将它翻译成最终的目标代码。
源程序
语法分析
中间代码
优化
优化后中间代码
目标代码
代码生成
中间代码中间代码也叫中间语言 (Intermediate code /language)是:源 程序的一种内部表示,不依赖目标机的结构, 复杂性介于源语言和机器语言之间。
中间代码的优点1、逻辑结构清楚; 2、利于不同目标机上实现同一种语言; 3、利于进行与机器无关的优化;
语义分析在词法分析和语法分析之后,编译 程序要完成语义分析和翻译工作。由 于编译器完成的分析是静态定义的,所 以,语义分析也可称作静态语义分析 (static semantic analysis)。
语义分析的具体工作1、类型检查;
2、控制流检查;3、一致性检查;
4、相关名字检查
语法制导翻译对文法中的每个产生式都附加一个语义动作或 语义子程序,且在语法分析过程中,每当需要使用 一个产生式进行推导或规约时,语法分析程序除执 行相应的语法分析动作之外,还要执行相应地语义 动作或语义子程序。每个语义子程序都指明了相应 产生式中各个符号的具体含义,并规定了使用该产 生式进行分析时所应采取的语义动作。由此可见:抽象文法符号的具体语义信息,是在语法分析同 步的语义处理过程中获取和加工的。
属性文法将语义以“属性”的形式附加到各 文法符号上,再根据产生式所蕴含的语 义,给出每个文法符号的属性的求值规 则,从而形成一种带有语义属性的前后 文无关文法,即属性文法。
属性一个文法符号X的语义信息我们称之为语义 属性或简称为属性(Atrributes)X.TYPE表示为X的类型 X.VAL表示为X的值
例:对于文法: E →E+T | T T→ digit产生式 语义子程序
1、E→ E(1)+T {E.Val=E(1).Val+T.Val 2、E→ T {E.Val=T.Val} 3、T→ digit {T.Val=digit}
例语法分析栈 语义信息栈 T + E … # T.Val ‘ +’ E(1).Val … E … E.Val …
#
语法制导翻译的实质根据文法中每个产生式所蕴含的语义, 为其配备一个(或多个)语句或子程序, 对所要完成的功能进行描述,在语法分 析过程中,当分析器使用该产生式进行 语法分析时(不论是推导还是规约), 除完成语法分析动作之外,还将调用为
其配备的语义子程序,进行相应地语义 处理,完成语义翻译工作。
中间代码常见的几种形式1、后缀式 2、图表示法 抽象语法树、DAG图 3、三地址代码 三元式、四元式、间接三元式
后缀式后缀式是波兰逻辑学家卢卡西维奇 (J.Lukasiewicz)提出的一种对表达式的 表示方法:每一运算符都置于其运算对象之 后,即操作数写在前面,算符写在后面。 它的特点是:表达式中各个运算是按运算符 出现的顺序进行的,故无需用括号来指示运 算顺序,因而又称为无括号式。
实例表达式(中缀式): A+B*(C-D)+E/(C-D) 后缀式: A B CD- * + E CD- /+ 表达式(中缀式):
(a=0∧ b>3)∨ (e ∧x >y) ∧∨ 后缀式: a0=b3 > ∧ e xy >
结论从以上两个例子我们可得出: 1、在两种表示中,运算对象出现的顺序相同; 2、在后缀表示中,运算符按实际计算顺序 从左到右排列,且每一运算符总是跟在运算 对象之后。 翻译成后缀式的语义描述见P167表7.1。
后缀式的推广 条件语句的翻译: If e THEN S1 else S2
…… 此处隐藏:1字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [幼儿教育]【完整版】2019-2025年中国药物发现外
- [幼儿教育]2018-2019年初中信息技术广东初一竞赛
- [幼儿教育]最新外研版(一起)小学英语五年级上册《
- [幼儿教育]农业推广与创新管理专业 -中农大毕业论
- [幼儿教育]2017-2022年中国更年期用药行业市场深
- [幼儿教育]数学1.1.2第1课时棱柱、棱锥和棱台的结
- [幼儿教育]二年级群文阅读课例欣赏
- [幼儿教育]2010-2015年中国保险行业投资分析及深
- [幼儿教育]厄运打不垮的信念第一课时
- [幼儿教育]巧用文本,让表达在言语中绽放论文
- [幼儿教育]中学生百科知识竞赛题及答案
- [幼儿教育]八大菜系英文简介
- [幼儿教育]中国男装牛仔裤市场发展研究及投资前景
- [幼儿教育]远程数字视频监控系统在银行的应用
- [幼儿教育]光纤光缆制造工艺及设备
- [幼儿教育]国家安全法试题及答案
- [幼儿教育]2011高中提前招生及竞赛试题(物理卷1)
- [幼儿教育]宁夏第三产业房地产业、科学研究和技术
- [幼儿教育]中兴通讯 ME3000模块用户硬件设计手册_
- [幼儿教育]紫外线灯管的辐照强度问题
- 苏联东欧剧变的原因和历史教训浅析
- 人工智能导论实验报告(学生)
- 思科ITE章考试原题及答案
- 《学习雷锋好榜样》主题班会教案
- 加油站建设项目安全评价报告
- 剖析社保卡管理系统
- 2017-2018年影视剧新媒体版权运营行业
- 2017-2018学年四川省成都市高一上学期
- 2019最新高中数学 第三章 3.2.1 几类不
- 2011-2015年中国基酸市场调查及行业前
- 人教版新课标选修八Unit 1 课件Warming
- 郭溪燎原小学辅导学生记录表
- 教师资格证统考综合素质写作秘笈
- 国外校园绿色建筑研究方向与建设实践
- 15.1 动物运动的方式 课件(北师大版八
- 民用飞机空调系统
- 长安侠文化传统与唐诗的任侠主题
- 《中国近现代史纲要》名词解释
- 11金本《保险学概论》复习资料
- 民用建筑机电安装工程专业施工图图纸会




