[工学]编译原理课件01课程介绍

上传人:豆浆 文档编号:49789601 上传时间:2018-08-02 格式:PPT 页数:53 大小:492.50KB
返回 下载 相关 举报
[工学]编译原理课件01课程介绍_第1页
第1页 / 共53页
[工学]编译原理课件01课程介绍_第2页
第2页 / 共53页
[工学]编译原理课件01课程介绍_第3页
第3页 / 共53页
[工学]编译原理课件01课程介绍_第4页
第4页 / 共53页
[工学]编译原理课件01课程介绍_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《[工学]编译原理课件01课程介绍》由会员分享,可在线阅读,更多相关《[工学]编译原理课件01课程介绍(53页珍藏版)》请在金锄头文库上搜索。

1、编译原理编译原理主讲教师:蔡霞 Email:1课程介绍(一) 一、研究内容 主要研究设计和构造编译程序的基本原理。 二、编译程序在软件设计中的应用 1、某一语言 另一种语言 2、深入了解某种编程语言的结构和应用 3、编译理论发展比较成熟,已经形成一 套完整的理论和应用,蕴含了大量的程序 设计技巧和算法构造方法。2课程介绍(二) 三、学习方法 1、要用循环的观点学习这门课程。 2、学习思考过程中用对比方法 3、最好不要缺席,原因: (1)章节调整; (2)比较难学,学好不易; (3)课堂上的小结或举例,书上可能没有; (4)自学,花的时间多。 4、适当作笔记。 5、问题反馈。 3课程介绍(四)

2、四、学时安排 58学时=48学时理论+10学时实验 五、评分标准 平时作业 20 上机测试 20 期末考试 604课程介绍(五) 六、参考书(教材) 1、编译原理、技术与工具,英文 版, 人民邮电出版社 2、程序设计语言编译原理,陈火 旺等编著,国防工业大学出版社 3、编译程序设计原理,杜淑敏等 编著,北京大学出版社5第一章 引论 1.1什么是编译程序 1.2编译过程和编译程序的结构 1.3解释程序和一些软件工具 1.4程序设计语言范型 小结61.1-1 编译程序回顾 分类 软件 系统软件 语言处理系统操作系统编译 系统裸机软件:计算机系统中 的程序及其文档系统软件:居于计算机 系统中最靠近硬

3、件的一 层,其他软件一般都通 过系统软件发挥作用。 他和具体的应用领域无 关,如编译系统和操作 系统等。语言处理系统:把软件 语言书写的各种程序处 理成可在计算机上执行 的程序 软件语言:用于书写软 件的语言。它主要包括 需求定义语言,功能性 语言,设计性语言,程 序设计语言以及文档语 言。 71.1-1 编译程序回顾 语言转(变)换系统(例)C+编译器C+CJavaBytecodeJava编译器81.1-2 编译程序定义(一)编译程序(compiler)是现代计算机系统的基 本组成部分.从功能上看,一个编译程序就是一个语言 翻译程序,它把一种语言(称作源语言)书 写的程序翻译成另一种语言(称

4、作目标语 言)的等价的程序. 高级语言程序(源程序)编译程序低级语言程序(目标程序)91.1-2 编译程序定义(二)预处理程序编译程序汇编程序装配连接编辑需欲处理的源程序源程序 目标汇编程序 可再装配的机器代码 绝对机器代码可再装配的目标文件库高级语言程序的处理过程101.1-3 编译程序的发展历史 20世纪50年代早期 第一个编译程序出现 20世纪50年代中期 Fortran等高级语言相 应的一批编译系统出现 20世纪50年代末期 研究编译程序的自 动生成工具,如LEX,YACC 20世纪50年代末期开始 自展技术的应用 目前 研究较热的并行编译技术111.1-4 程序运行阶段采用编译方式在

5、计算机上执行用高级 语言编写的程序,需分阶段进行。第一种情况 :源程序编 译 程 序机器语言 目标程序初始数据运行系统结果编 译 阶 段运 行 阶 段高级语言程序12第二种情况 :源程序编 译 程 序机器 语言 目标 程序初始数据运行系统结果编 译 阶 段运行阶段汇 编 程 序汇编 语言 目标 程序汇 编 阶 段高级语言程序1.1-4 程序运行阶段131.2 编译过程和编译程序的基本结构 1.2.1 编译过程概述 1.2.2 编译程序的结构 1.2.3 编译阶段的组合141.2 编译过程和编译程序的基本结构 将英文句子 “I wish you success ”翻译成中文句子的大致过程是:q

6、词法分析 q 语法分析 q 语义分析 q 修饰工作 q 翻译成文 151.2.1 编译过程概述 编译逻辑过程 第1阶段 词法分析 第2阶段 语法分析 第3阶段和第4阶段 语义分析和中间代码生成 第5阶段 代码优化 第6阶段 目标代码生成161 词法分析 一般程序设计语言的定义都涉及语法、 语义和语用三个方面。 “一个程序是正确”有两种含义: 1、书写正确(合乎语法) 2、含义正确(合乎语义) 词法分析就是从左至右读字符流的源程 序,根据语言的词法规则,识别(拼)单词 。17词法规则是单词符号的形成规则, 它规定了哪样的字符串构成一个单词 符号。1 词法规则float r,h,s;s = 2*3

7、.1416*r*(hr);例如18上述源程序通过词法分析识别出 如下单词符号:基本字 float 标识符 r、h、s常数 3.1416、2 算符 * 、 界符 (、 )、 ;、 ,、= 1 词法规则19例 词法分析 position := initial + rate * 10;单词类型单词值标识符1(id1) position算符(赋值) :=标识符2(id2) initial算符(加) +标识符3(id3) rate算符(乘) *整数 10分号 ;20又如一个C源程序片断: int a;a = a + 2; 词法分析后可能返回: 单词类型单词值保留字 int 标识符(变量名) a 界符 ;

8、 标识符(变量名) a 算符(赋值) = 标识符(变量名) a算符(加) + 整数 2 界符 ;例 词法分析212 语法分析 功能:层次分析.语法分析的任务是在 词法分析的基 础上, 根据语言的语 法规则从单词符号串中识别出各种 语法单位 ( 如表达式、说明、语句等 ) ,并进行语法检查,即检查各种语法 单位在语法结构上的正确性。 22语法规则语言的语法规则规定了如何从单 词符号形成语法单位,语法规则是语 法单位的形成规则。 float r,h,s;s = 2*3.1416*r*(hr);例如23语法规则单词符号串 s=2*3.1416 * r *(hr) 中,“s” 是,单词符号串“2 *

9、3.1416 * r *(hr)” 组合成这样的语法单位 , 由 =构成这 样的语法单位。24例 语法分析position := initial + rate * 10 ;规则:=“:=”:=“+”:=“*”:=“(”“)”:=:=:=25赋值语句标识符表达式表达式+表达式表达式标识符整数标识符:=表达式*例 语法分析26id1:=id2+id3*N:=+N 10*id1 Positionid2 initial id3 rate273. 语义分析和中间代码生成语义分析的任务是首先对每种语 法单位进行静态的语义审查,然后分 析其含义,并用另一种语言形式 (比源语言更接近于目标语言的一种中间 代码

10、或直接用目标语言 ) 来描述这种语义。28语义分析语义审查(静态语义) 上下文相关性 类型匹配 类型转换例:Program p(); Var rate:real; procedure initial; position := initial + rate * 10/* error */ /* error */ /* warning */; 29中间代码生成源程序的内部(中间)表示 三元式、四元式、P-Code、C-Code、 U-Code 、bytecode( * id3t1t2)t2 = id3 * t1 t2 := id3 * t130例如,前例中将s = 2*3.1416 * r *(h

11、r)翻译成如下 形式的四元式中间代码:(1) ( *, 2, 3.1416, T1 )(2) ( *, T1, r, T2 ) (3) ( +, h, r, T3 ) (4) ( *, T2, T3, T4 ) (5) ( =, T4, _, s )31又如: int arr 2,abc; abc = arr * 10; Program p(); Var rate:real; Var initial :real; Var position :real ; position := initial + rate * 10例 语义分析32语义分析10:=+*Id1 positionId2 initi

12、al Id3 rateinttoreal33例 语义分析和中间代码生成id1:= id2 + id3 * 10(1)(inttoreal,10-t1)(2)(*,id3t1t2)(3)(+,id2t2t3)(4)(:=,t3-id1)344. 代码优化代码优化的任务是对前阶段产生的 中间代码进行等价变换或改造,以期获得 更为高效即省时间和空间的目标代码。优 化主要包括局部优化和循环优化等,例如 上述四元式经局部优化后得:(1) ( *, 6.28, r, T2 ) (2) ( +, h, r, T3 ) (3) ( *, T2, T3, T4 )(4) ( =, T4, _, s )35例 代

13、码优化id1:= id2 + id3 * 10(1)(inttoreal10-t1)(2)( * id3t1t2)(3)( +id2t2t3)(4)( :=t3-id1)变换 (1) ( *id310.0t1)( 2)( + id2 t1id1)36例 代码优化t1 = b* c t1 = b* c t2 = t1+ 0 t2 = t1 + t1 t3 = b* c a = t2 t4 = t2 + t3 a = t4375.目标代码生成 目标代码生成的任务是将中间 代码变换成特定机器上的绝对指令 代码或可重定位的指令代码或汇编 指令代码。 38例 目标代码生成(*,id310.0t1)(+,id2t1id1)movfid3,R2 mulf#10.0,R2 movfid2,R1 addfR2,R1 movfR1,id139表格管理和错误处理编译程序在工作过程中需要建立一 些表格,以登记源程序中所提供的或在 编译过程中所产生的一些信息,编译各 个阶段的工作都涉及到构造、查找、修 改或存取有关表格中的信息,因此,在 编译程序中必须有一组管理各种表格的 程序。在编译程序的各个阶段中,都要涉及 表格管理和错误处理。40例 符号表管理 收集每个名字的各种属性信息 类型、作用域、分

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

当前位置:首页 > 行业资料 > 其它行业文档

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