1. 首页
  2. 文档大全

第1章编译原理概述

上传者:5****1 2022-07-09 12:56:50上传 PPT文件 1.02MB
第1章编译原理概述_第1页 第1章编译原理概述_第2页 第1章编译原理概述_第3页

《第1章编译原理概述》由会员分享,可在线阅读,更多相关《第1章编译原理概述(42页珍藏版)》请在文档大全上搜索。

1、编译原理编译原理第2页教材及主要参考资料教材及主要参考资料o 教材教材:编译原理及实践教程,黄贤英,清华大学出版社o 主要参考资料:主要参考资料:o 编译原理,陈火旺,国防工业出版社o 编译原理(原书第2版)(龙书) ,ALFRED V.AHO etc著,赵建华 郑滔等译 ,机械工业出版社 ,2008.12o 程序设计语言编译方法,肖军模,大连理工大学出版社o 编译原理,张素琴,吕映芝,清华大学出版社o更多教材及参考资料参见编译原理精品课程网站。C语言程序void main( ) int x,y,z; x=3; y=2; z=x+y;内存地址内存地址内存内容内存内容单元名字单元名字200H3x

2、:局部变量202H2y:局部变量204H5z:局部变量300H3A03302H3AE1304H3A02306H3AE2308HDA6C.3A71汇编语言程序mov ax,3mov x,axmov bx,2mov y,bxadd ax,bxmov z,ax.序言在内存中:在内存中:数据区代码区 ?编译原理概述编译原理概述第一章第一章 第5页本章要求本章要求o 主要内容主要内容:各种翻译程序的概念,编译各种翻译程序的概念,编译过程和阶段划分,编译程序的组成和结过程和阶段划分,编译程序的组成和结构,编译程序的构造方法构,编译程序的构造方法o 重点掌握:重点掌握:编译程序工作的基本过程及编译程序工作的

3、基本过程及其各阶段的基本任务,编译程序总框。其各阶段的基本任务,编译程序总框。第6页1.1 程序设计语言与翻译程序程序设计语言与翻译程序o 机器语言机器语言 (machine language) C7 06 0000 0002o 汇编语言汇编语言 (assembler language) MOV X , 2o 高级语言高级语言 (high-level language) X = 2为什么要使用编译程序?为什么要使用编译程序?2022年6月1日星期三第7页o 机器语言机器语言 (machine language) C7 06 0000 0002o 汇编语言汇编语言 (assembler lang

4、uage) MOV X , 2o 高级语言高级语言 (high-level language) X = 2为什么要使用编译程序?为什么要使用编译程序?2022年6月1日星期三第8页计算机中的语言层次和翻译程序计算机中的语言层次和翻译程序2022年6月1日星期三第9页什么叫翻译程序什么叫翻译程序o 翻译程序翻译程序:能够将某种语言写的程序转换成另一种语言的程序,而且后者与前者在逻辑上是等价的。o 编译程序编译程序:将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。o 解释程序解释程序:将高级程序设计语言写的源程序作为输入,边解释边执行源程序本身,而不产生目标程

5、序的翻译程序。2022年6月1日星期三第10页高级语言语言处理程序操作系统汇编语言翻译程序所处的层次翻译程序所处的层次计算机硬件C编译程序C语言Basic解释程序Basic语言Fortran编译程序Fortran语言.2022年6月1日星期三第11页编译程序编译程序编译程序编译程序源程序源程序目标程序目标程序计算机运行计算机运行输入数据输入数据结果结果解释程序解释程序解释程序解释程序源程序源程序输入数据输入数据结果结果2022年6月1日星期三第12页对编译程序的一些说明对编译程序的一些说明o 编译程序实质上是一个翻译程序翻译程序,要注意等价等价变换o 本课程的任务任务就是讲解在这个转换过程中所

6、涉及到的一些理论和方法,最后,使用这些理论和方法,自己编写一个小的编译器o 转换是一个总体的功能,要抓住总体结构,逐层细分,写编译器时要体现软件工程中软件设计的原则软件设计的原则,自顶向下,逐层分解。o 编译器要完成的转换任务相当复杂,实现编译器时必须分步骤分阶段分步骤分阶段实现。分阶段实现的好处是能够简化程序的设计简化程序的设计,当然也可以不分阶段实现。2022年6月1日星期三第13页编译程序的分类编译程序的分类o诊断编译程序诊断编译程序o优化编译程序优化编译程序o可变目标编译程序可变目标编译程序o交叉编译程序交叉编译程序2022年6月1日星期三第14页编译器的伙伴编译器的伙伴o 编辑器编辑

7、器(editor)(editor)o 预处理器预处理器(Preprocessor)(Preprocessor)n将源程序汇集到一起,宏展开等将源程序汇集到一起,宏展开等o 汇编程序汇编程序(assembler)(assembler)o 连接程序连接程序(linker)(linker)n连接系统函数与系统资源连接系统函数与系统资源o 装入程序装入程序(loader)(loader)n重定位重定位(relocation)(relocation)o Debugger,Profiler,Project Debugger,Profiler,Project ManagerManager2022年6月1日星

8、期三第15页编译原理是讨论编译程序设计的基本理论、基本概念、基本方法 什么是编译原理什么是编译原理2022年6月1日星期三第16页1.2 编译过程概述编译过程概述o 1、逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成 每个阶段把源程序从一种表示变换成另一种表示源 程 序编 译 器目 标 程 序词法分析语法分析语义分析与中间代码生成代码优化目标代码生成2022年6月1日星期三第17页o 按照词法分析、语法分析、语义分析等这种方式来划分阶段的原因是:每个阶段的复杂程度不同,所依据的理论基础不同理论基础不同,实现时采用的方法也不同方法也不同。主要是方便理解和实现

9、。o 划分阶段的依据是什么?每个阶段所实现的功能相功能相对独立对独立。用一个例子说明各阶段的功能2022年6月1日星期三第18页/*一个PASCAL语言的源程序*/program test; /*this is an example,computing an area*/ var area, length, width: integer; begin length:=5;width:=5; area := 5length *widthlength *widthend. 2022年6月1日星期三第19页第一阶段:词法分析第一阶段:词法分析任务任务: 从左到右扫描源程序,识别出每个单词从左到右扫描

10、源程序,识别出每个单词o 附加任务:a、滤掉空格 b、去掉注释o 单词符号是语言的基本组成成分o 词法分析的工作主要依据语言中单词的构成规则o 单词的种类: (1) 标识符 (2) 关键字(char、int、if、else、while、for等) (3) 运算符(即运算符号 +、*、/、&等) (4) 界符(常见的有 ; , : ( )等) (5) 常数 2022年6月1日星期三第20页begin area:=5length*width length *widthend;单词类型内部形式begin关键字$beginarea标识符id1:=界符:=5常数int1+算符+length标识符

11、id1*算符*width标识符id2+算符+length标识符id2*算符*width标识符id3end关键字$end;界符;例:2022年6月1日星期三第21页第二阶段:语法分析第二阶段:语法分析任务任务: 在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。o确定整个输入串是否构成语法上正确的程序。o根据规则判定:根据规则判定:赋值语句:赋值语句:标识符标识符:表达式表达式 表达式:表达式:标识符、常数是表达式标识符、常数是表达式 表达式的运算也是表达式表达式的运算也是表达式例:识别符号串id1:=int1 + id2 * id3 + id2


文档来源:https://www.renrendoc.com/paper/212693485.html

文档标签:

下载地址