编译原理(第1章)解读

上传人:最**** 文档编号:117950491 上传时间:2019-12-11 格式:PPT 页数:44 大小:1.73MB
返回 下载 相关 举报
编译原理(第1章)解读_第1页
第1页 / 共44页
编译原理(第1章)解读_第2页
第2页 / 共44页
编译原理(第1章)解读_第3页
第3页 / 共44页
编译原理(第1章)解读_第4页
第4页 / 共44页
编译原理(第1章)解读_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《编译原理(第1章)解读》由会员分享,可在线阅读,更多相关《编译原理(第1章)解读(44页珍藏版)》请在金锄头文库上搜索。

1、* 编译原理 1 授课教师:贺辉 619412 课程简介 教学方式:理论(40)+实验(14) 考核方式:期中考试(20%)+平时成绩(30%) +期末考试(40)+平时考核(10% ) 课程学分:3 答 疑: 励耘楼A209 周一 5-6节 教材及参考书籍: 编译原理(本科教学版) 赵建华等(译),机械 工业出版社 Compilers: Principles,Techniques, 编译原理课程的学习有利于加深对程序语言 的理解,可以帮助你更加快速的掌握新的语 言工具; 课程中包含了很多软件技术,程序设计语言 编译程序构造的基本原理和实现方法是软 件的核心技术之一,这对于以后从事软件设 计是

2、很有帮助的. * 编译原理 4 为什么要学习编译原理 与课程有关的问题 u 先修课程: u编程语言、离散数学、汇编语言、数据结构 、形式语言与自 动机 u 应用 p编译器的设计 p一般软件的设计 a) 文本编辑器、信息检索系统、模式识别器 b) 排版、绘图等 p本课程的基本要求 通过对本课程的学习,对形式语言有初步了解,并能对编译 程序的整个结构有较清楚地了解,熟悉和掌握几种主要编译 方法。 修养“问题形式化描述计算机化” 的问题求解过程 * 编译原理 5 实验要求 实验形式 分析、设计、编写、调试、测试程序 撰写实验报告 答辩 实验内容 程序设计复习 2学时 编码完成扫描程序(词法分析)2学

3、时 语法分析器的设计与实现 4学时 使用Lex自动生成一个编译器 6学时 *6 学习中应注意的问题 l 一定要预习,每人都请准备一个笔记本! l 认真听课,积极思考,积极发言,认真理解 l 重视习题:按时完成课堂作业及课堂的测试 l 在理解的基础上记忆,把编译的每个阶段放到整 个编译程序背景中学习 l 理论结合实践,重视实验 要敢于犯错误 学习的一种方法,经常还是唯一的方法,就在于首 先犯错误。我们在学习,多数时间在通过犯错误 学习。 急功近利是学习的一大敌人! * 编译原理 7 寄语 要主动学习 不要苛求课程、老师和环境,他/她/它们只是资源 目标确定后要善于利用各种资源 注重对自己能力的培

4、养 学会做人,乐于助人,多为别人着想,可以获取友谊 朋友是资源,可以终生受益 学会安排自己的时间 时间就像海绵里的水,只要肯挤,总会有的。贵在恒。 学会利用各种资源提高自己 学校的、家庭的、社会的 上学期间利用资源的唯一目的就是提高自己 不要沉迷于网络聊天(微信 微博)与游戏 * 8 各章节内容安排 第一章 引论 第二章 高级语言及其语法描述 第三章 词法分析 第四章 语法分析【自顶向下(递归 下降语法分析、LL(1))、自底向上 (LR(1)】 第五章 语义分析【语法制导的翻译 】 第六章 中间代码及目标代码生成 * 编译原理 9 程序设计语言 机器语言: 能够被计算机的硬件系统直接执行的指

5、令程序 。 由二进制(0、1序列)组成 难读、难写、易出错。 汇编语言:用记忆符表示指令的操作码。 面向机器语 言(低级语 言) 按机器指令的工作方式来思考问题 assume cs:code, ds:data data segment dw 1234h,5678h data ends code segment start:mov ax, data mov ds, ax mov ax, ds:0 mov bx, ds:2 mov cx, 0 add cx, ax add cx, bx mov cx, ds:4 mov ax, 4c00h int 21h code ends end start 程

6、序设计语言 高级语言(面向人类的语言): 便于人类的理解和使用 语言的结构符合人的思维方式:如直接使用表达式进 行计算. 具有高抽象度:如 类 等机制 强调逻辑过程,事情的前因后果,不仅是做什么,而 且是怎么做? int main int a,b,c; a=1234h; b=5678h; c=a+b; return 0; 翻译程序 机器只能理解和执行机器语言高级语言需转换成机器 语言才能执行如何转换? 翻译 解释 翻译程序:是指能够把某种语言的程序(源语言程序) 转换成另一种语言的程序(目标语言程序),而后者 与前者在逻辑上是等价的。 编译程序:源语言程序为高级语言程序,目标语言程序 是低级语

7、言程序的翻译程序。 汇编程序:源语言程序为汇编语言程序,目标语言程序 为机器语言程序的翻译程序。 如何执行一个源程序 先编译后执行-编译程序编译出目标程序,系 统执行。 目标机 宿主机 编译程序 运行系统目标程序P 输入数据 计算结果源程序P 交叉编译程序:宿主机和目标机的指令系统不同 诊断编译程序:侧重于帮助程序开发和调试 优化编译程序:着重于提高目标代码的效率 运行编译程序的计算机运行产生的目标代码的计算机 如何执行一个源程序 边解释边执行-解释程序边解释边执行 源程序本身,不产生目标程序。 解释程序源程序 输入数据 计算结果 什么是编译程序 * 编译原理 15 编译原理这门课程主要介绍设

8、计 和构造编译程序的基本原理和常用的 技术和方法。 本章重点介绍编译程序的基本概念。 n n 编译的过程编译的过程 n n 编译程序的结构编译程序的结构 1.1 什么是编译程序 * 编译原理 16 翻译程序是指这样一个程序,它把 一种语言(称作源语言)所写的程序(源 程序)翻译成等价的另一种语言(称作 目标语言)的程序(目标程序)。世界上 第一个编译程序FORTRAN是在20世纪50 年代中期研制成功的。花费了18年的 时间。 高级语言程序机器语言程序翻译程序 * 编译原理 17 编译程序是一种翻译程序,它将 高级语言所写的源程序翻译成等价的 机器语言或汇编语言的目标程序。 源程序 高级语言程

9、序 编译程序目标程序 汇编语言或者 机器语言程序 (*.C / *.PAS) (*.OBJ / *.EXE) * 编译原理 18 采用编译方式在计算机上执行用高级 语言编写的程序,需分阶段进行。 第一种情况: 源程序 编 译 程 序 机器语言 目标程序 初始数据 运行系统 结果 编 译 阶 段运 行 阶 段 高级语言 程序 * 编译原理 19 第二种情况: 源程序 编 译 程 序 机器 语言 目标 程序 初始数据 运行系统 结果 编 译 阶 段运行阶段 汇 编 程 序 汇编 语言 目标 程序 汇 编 阶 段 高级语言 程序 1.2 编译程序的基本结构 * 编译原理 20 例:将英文句子 “I

10、wish you success ” 翻译成中文句子的大致过程是: q 词法分析 q 语法分析 q 语义分析 q 修饰工作 q 翻译成文 * 编译原理 21 编译程序是将一种语言形式翻译成 另一种语言形式,因此,其工作过程一 般可划分为如下五个阶段: q 词法分析 q 语法分析 q 语义分析和中间代码生成 q 代码优化 q 目标代码生成 * 编译原理 22 float r,h,s; s = 2*3.1416 * r *(rh); 例如 计算圆柱体表面积的程序 片断如下: A. 词法分析 * 编译原理 23 词法分析阶段的任务是对构成 源程序的字符串从左到右进行扫描 和分解,根据语言的词法规则,

11、识 别出一个一个具有独立意义的单词( 也称单词符号, 简称符号 )。 * 编译原理 24 词法规则是单词符号的形成规则, 它规定了哪样的字符串构成一个单词 符号。 float r,h,s; s = 2*3.1416*r*(hr); 例如 * 编译原理 25 上述源程序通过词法分析识别出 如下单词符号: 关键字 float 标识符 r、h、s 常数 3.1416、2 算符 * 、 界符 (、 )、 ;、 ,、= float r,h,s; s = 2*3.1416*r*(hr); * 26 练一练 sum=(10+20)*(num+square ); 词法分析结果? 结果 (标识符,sum) (赋

12、值号,=) (左括号, ( ) (整常数,10) (加号,+ ) (整常数,20) (右括号, ) ) (乘号,* ) (左括号, ( ) (标识符,num) (加号,+ ) (标识符,square) (右括号, ) ) (分号,; ) B. 语法分析 * 编译原理 27 语法分析的任务是在词法分析的基 础上, 根据语言的语法规则从单词符 号串中识别出各种语法单位 ( 如表 达式、说明、语句等 ) ,并进行语法 检查,即检查各种语法单位在语法结 构上的正确性。 * 编译原理 28 语言的语法规则规定了如何从单 词符号形成语法单位,语法规则是语 法单位的形成规则。 float r,h,s; s

13、= 2*3.1416*r*(hr); 例如 * 编译原理 29 单词符号串 s=2*3.1416 * r *(hr) 中,“s” 是,单词符号串 “2 * 3.1416 * r *(hr)” 组合成这样的语法单位 , 由 =构成这 样的语法单位。 *30 语法分析 sum=(10+20)*(num+square); 语 法 树 C. 语义分析和中间代码生成 * 编译原理 31 语义分析的任务是首先对每种语 法单位进行静态的语义审查,然后分 析其含义,并用另一种语言形式 (比 源语言更接近于目标语言的一种中间 代码或直接用目标语言 ) 来描述这种 语义。 例如: * 编译原理 32 将s = 2

14、*3.1416 * r *(hr)翻译成 如下形式的四元式中间代码: (1) ( *, 2, 3.1416, T1 ) (2) ( *, T1, r, T2 ) (3) ( +, h, r, T3 ) (4) ( *, T2, T3, T4 ) (5) ( =, T4, _, s ) * 编译原理 33 再例如:中间代码生成:再例如:中间代码生成: 如:如:positionposition:initialinitial rate60rate60 生成生成四元式序列四元式序列: (inttoreal 60 inttoreal 60 t1 t1 ) ( id3 t1 t2 id3 t1 t2) (

15、 id2 t2 t3id2 t2 t3) (:(: t3 t3 id1id1) 运算符运算对象1 运算对象2 结果 id1 id2 id3 t1,t2,t3是 临时变量 * 34 练一练 sum=(10+20)*(num+square); 中间代码(intermediate Code)? 四元式表示四元式表示 (三地址码) (+,10,20,T1) (+,num,square,T2) (*, T1, T2, T3) (=, T3 , , sum) 三元式表示三元式表示 (+,10,20) (+,num,square) (*,) (=, sum,) 语法树语法树 D. 代码优化 * 编译原理 35 代码优化的任务是对前阶段产生的中 间代码进行等价变换,以期获得更为高效 即省时间和空间的目标代码。将s = 2*3.1416 * r *(hr)翻译成如下形式的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号