编译原理课件 第一章(精品).ppt
《编译原理课件 第一章(精品).ppt》由会员分享,可在线阅读,更多相关《编译原理课件 第一章(精品).ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理主讲:汤浪平1课程信息教学目的与要求:教学目的与要求:编译程序是现代计算机系统的基本组成部分之一。编译程序是现代计算机系统的基本组成部分之一。本课程重点讲述编译程序的设计原理和常用实现本课程重点讲述编译程序的设计原理和常用实现技术。通过课程的学习和实验的完成,技术。通过课程的学习和实验的完成,应该应该清楚清楚的理解一个编译程序是如何工作的;如果在以后的理解一个编译程序是如何工作的;如果在以后遇到了任何一个程序设计语言,遇到了任何一个程序设计语言,应该应该知道如何实知道如何实现这个语言的编译机制;现这个语言的编译机制;应应具有一定的使用编译具有一定的使用编译构造工具开发编译程序的
2、经验;构造工具开发编译程序的经验;会会将所学的常用将所学的常用技术和算法应用于类似的软件的设计和实现中。技术和算法应用于类似的软件的设计和实现中。2教材及主要参考书教材:教材:编译原理及实现编译原理及实现孙悦红编,孙悦红编,清华出版社清华出版社参考书参考书:程序设计语言程序设计语言 编译原理编译原理(第(第3版),陈火旺、刘春林等,国防工业出版),陈火旺、刘春林等,国防工业出版社版社 2000编译原理编译原理 吕映芝编,清华出版社吕映芝编,清华出版社3教学内容1 编译程序概述编译程序概述编译程序是现代计算机系统的基本组成部编译程序是现代计算机系统的基本组成部分之一。它一般由词法分析程序,语法分
3、分之一。它一般由词法分析程序,语法分析程序,中间代码生成程序,目标代码生析程序,中间代码生成程序,目标代码生成程序,代码优化程序,符号表管理程序成程序,代码优化程序,符号表管理程序和错误处理程序等成分构成。和错误处理程序等成分构成。4教学内容2 高级语言的认识高级语言的认识 要学习和构造编译程序,理解和定义程序设计语言是要学习和构造编译程序,理解和定义程序设计语言是必不可少的。每个程序设计语言都有一定的规则用以规定必不可少的。每个程序设计语言都有一定的规则用以规定合适程序的语法结构,也需要有对一个程序的含义的描述。合适程序的语法结构,也需要有对一个程序的含义的描述。上下文无关文法给出程序设计语
4、言的精确的、易于理解的上下文无关文法给出程序设计语言的精确的、易于理解的语法说明。尚没有公认的形式系统描述程序含义,但也有语法说明。尚没有公认的形式系统描述程序含义,但也有流行的描述语义规则的方法流行的描述语义规则的方法属性文法。属性文法。3 词法分析程序的自动构造词法分析程序的自动构造 词法分析程序是编译程序的一个构成部分,它的主要词法分析程序是编译程序的一个构成部分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。正则表达式和有穷状态自动机分别作为单词的词法错误。正则表达式和有穷状态自动机分别作为单词的描述工具和识别机制
5、,成为词法分析程序的自动构造原理。描述工具和识别机制,成为词法分析程序的自动构造原理。5教学内容4 语法分析程序的构造语法分析程序的构造n自顶向下的语法分析。可以看作是为一个输入串寻找自顶向下的语法分析。可以看作是为一个输入串寻找一个最左推导的过程一个最左推导的过程,也等价于从根开始也等价于从根开始,按前序生成按前序生成结点,为输入串构造分析树的过程。讨论一种有效的结点,为输入串构造分析树的过程。讨论一种有效的无回溯的自顶向下分析程序无回溯的自顶向下分析程序,这种分析程序称为预测分这种分析程序称为预测分析程序。析程序。n自底向上(自下而上)语法分析方法,也称移进自底向上(自下而上)语法分析方法
6、,也称移进-归约归约分析法。它的实现思想是对输入符号串自左向右进行分析法。它的实现思想是对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移扫描,并将输入符逐个移入一个后进先出栈中,边移进边分析,一旦栈顶符号串形成可归约串,就用相应进边分析,一旦栈顶符号串形成可归约串,就用相应非终结符代替可归约串,这称为一步归约,重复这一非终结符代替可归约串,这称为一步归约,重复这一过程,直到归约到栈中只剩文法的开始符号时,则为过程,直到归约到栈中只剩文法的开始符号时,则为分析成功,并确认输入串是文法的句子。分析成功,并确认输入串是文法的句子。6教学内容5 语义分析和中间代码生成语义分析和中
7、间代码生成 在词法分析和语法分析之后,编译程序下一个逻在词法分析和语法分析之后,编译程序下一个逻辑阶段的任务是语义分析和生成中间代码。引入辑阶段的任务是语义分析和生成中间代码。引入属性文法和语法制导的翻译的概念,介绍中间代属性文法和语法制导的翻译的概念,介绍中间代码的形式,针对一些语法成分讨论相应语义处理码的形式,针对一些语法成分讨论相应语义处理工作的描述。工作的描述。6 符号表符号表 介绍符号表的一般组织和使用方法,讨论分程序介绍符号表的一般组织和使用方法,讨论分程序结构语言的名字作用域分析及符号表设计方案。结构语言的名字作用域分析及符号表设计方案。7教学内容7 运行时的存储组织和管理运行时
8、的存储组织和管理 编译的最终目标是生成目标程序。在目标编译的最终目标是生成目标程序。在目标代码生成前,编译程序必须对目标程序运代码生成前,编译程序必须对目标程序运行时的数据空间进行组织和安排行时的数据空间进行组织和安排。介绍目介绍目标程序运行时的数据空间的存储分配策略,标程序运行时的数据空间的存储分配策略,说明程序设计语言本身关于名称的作用域说明程序设计语言本身关于名称的作用域和生存期的规则与存储分配策略的关系,和生存期的规则与存储分配策略的关系,重点讨论栈式动态存储方案。重点讨论栈式动态存储方案。8教学内容8 代码优化和目标代码生成代码优化和目标代码生成 代码优化是对代码作一些等价变换,以使
9、代码优化是对代码作一些等价变换,以使得最后生成的目标代码更为高效。介绍优得最后生成的目标代码更为高效。介绍优化技术,优化分类以及优化工作的基础化技术,优化分类以及优化工作的基础控制流和数据流分析问题。控制流和数据流分析问题。编译的最后一个逻辑阶段是目标代码生成。编译的最后一个逻辑阶段是目标代码生成。目标代码生成程序的设计细节要考虑目标目标代码生成程序的设计细节要考虑目标语言和操作系统的特点。讨论目标代码生语言和操作系统的特点。讨论目标代码生成程序设计的一般问题,包括指令选择,成程序设计的一般问题,包括指令选择,寄存器分配和计算顺序选择。寄存器分配和计算顺序选择。9教师联系信息教师联系信息汤浪平
10、Email:langping_Tel:15920136696QQ:4305134410第第1章章 编译系统概述编译系统概述1.1 程序设计语言的发展程序设计语言的发展 1.2 基本术语解释基本术语解释1.3 编译程序的组成编译程序的组成1.4 编译程序的结构编译程序的结构1.5 编译程序的前端和后端编译程序的前端和后端1.6 TEST语言与编译器语言与编译器11编译程序概述编译程序概述1程序设计语言之所以能由专用的机器语言发展到程序设计语言之所以能由专用的机器语言发展到现今通用的多种高级语言,就是因为有了编译技现今通用的多种高级语言,就是因为有了编译技术。术。编译技术是计算机专业人员必须具备的
11、专业编译技术是计算机专业人员必须具备的专业基础知识基础知识,它涉及它涉及程序设计语言、形式语言与自程序设计语言、形式语言与自动机、计算机体系结构、数据结构、算法分析与动机、计算机体系结构、数据结构、算法分析与设计、操作系统以及软件工程设计、操作系统以及软件工程等各个方面。程序等各个方面。程序员大多数使用各种员大多数使用各种高级语言高级语言编写程序,而计算机编写程序,而计算机只能识别用只能识别用二进制数二进制数表示的指令和数所构成的机表示的指令和数所构成的机器语言程序,用高级语言编写的程序不能直接在器语言程序,用高级语言编写的程序不能直接在机器上运行,要想运行它并得到预期的结果,必机器上运行,要
12、想运行它并得到预期的结果,必须将源程序转换成等价的目标程序,这个转换过须将源程序转换成等价的目标程序,这个转换过程就是所谓的程就是所谓的编译编译。121.1 程序设计语言的发展程序设计语言的发展汇编语言汇编语言(Assemble Language)机器语言机器语言(Machine Language)程序设计语言程序设计语言(Programming Language)13 计算表达式计算表达式计算表达式计算表达式3*16+23*16+2的值,实现该计算的机器语言程序、的值,实现该计算的机器语言程序、的值,实现该计算的机器语言程序、的值,实现该计算的机器语言程序、汇编语言程序和程序设计语言(汇编语
13、言程序和程序设计语言(汇编语言程序和程序设计语言(汇编语言程序和程序设计语言(C C语言)程序如下所示。语言)程序如下所示。语言)程序如下所示。语言)程序如下所示。2203220382108210260226026101610110001000f000f000Load R0,3Load R0,3MulMul R0,10 R0,10Load R1,2Load R1,2Add R0,R1Add R0,R1Write R0Write R0HaltHaltvoid main(void)void main(void)coutcout3*16+2;3*16+2;注:注:注:注:1010表示表示表示表示16
14、 16 14机器语言机器语言 机器指令集合称为机器语言。机器指令即二进制数,通常由若机器指令集合称为机器语言。机器指令即二进制数,通常由若机器指令集合称为机器语言。机器指令即二进制数,通常由若机器指令集合称为机器语言。机器指令即二进制数,通常由若干字节构成。干字节构成。干字节构成。干字节构成。优点优点优点优点计算机可直接识别执行计算机可直接识别执行计算机可直接识别执行计算机可直接识别执行可充分利用硬件特性可充分利用硬件特性可充分利用硬件特性可充分利用硬件特性缺点缺点缺点缺点可读性差可读性差可读性差可读性差指令系统随机种而异指令系统随机种而异指令系统随机种而异指令系统随机种而异由于机器指令直接或
15、间接含有绝对地址,增加或减少一条由于机器指令直接或间接含有绝对地址,增加或减少一条由于机器指令直接或间接含有绝对地址,增加或减少一条由于机器指令直接或间接含有绝对地址,增加或减少一条指令,可能会引起多条指令的修改。指令,可能会引起多条指令的修改。指令,可能会引起多条指令的修改。指令,可能会引起多条指令的修改。编程者需协调内存的使用编程者需协调内存的使用编程者需协调内存的使用编程者需协调内存的使用 所以,机器语言形式的程序编制和维护困难,限制了计算机的所以,机器语言形式的程序编制和维护困难,限制了计算机的所以,机器语言形式的程序编制和维护困难,限制了计算机的所以,机器语言形式的程序编制和维护困难
16、,限制了计算机的推广和应用。推广和应用。推广和应用。推广和应用。15汇编语言汇编语言 用记忆符取代二进制位,存储地址和汇编语句的序号可用符号用记忆符取代二进制位,存储地址和汇编语句的序号可用符号用记忆符取代二进制位,存储地址和汇编语句的序号可用符号用记忆符取代二进制位,存储地址和汇编语句的序号可用符号名表示。名表示。名表示。名表示。优点优点优点优点用符号取代二进制数,提高了程序的可理解性。用符号取代二进制数,提高了程序的可理解性。用符号取代二进制数,提高了程序的可理解性。用符号取代二进制数,提高了程序的可理解性。性能较好的汇编语言,可用符号名来表示存储地址和汇编语性能较好的汇编语言,可用符号名
17、来表示存储地址和汇编语性能较好的汇编语言,可用符号名来表示存储地址和汇编语性能较好的汇编语言,可用符号名来表示存储地址和汇编语句序号,这样避免了在汇编语句中绝对地址的出现。句序号,这样避免了在汇编语句中绝对地址的出现。句序号,这样避免了在汇编语句中绝对地址的出现。句序号,这样避免了在汇编语句中绝对地址的出现。可充分利用硬件特性可充分利用硬件特性可充分利用硬件特性可充分利用硬件特性 所以,汇编语言在一定程度上降低了程序编制和维护的难度。所以,汇编语言在一定程度上降低了程序编制和维护的难度。所以,汇编语言在一定程度上降低了程序编制和维护的难度。所以,汇编语言在一定程度上降低了程序编制和维护的难度。
18、缺点缺点缺点缺点汇编语句和机器指令基本上是一对一的汇编语句和机器指令基本上是一对一的汇编语句和机器指令基本上是一对一的汇编语句和机器指令基本上是一对一的,所以汇编语言的编,所以汇编语言的编,所以汇编语言的编,所以汇编语言的编程效率并没有质的提高。程效率并没有质的提高。程效率并没有质的提高。程效率并没有质的提高。和机器语言一样,汇编语言依附于目标计算机。和机器语言一样,汇编语言依附于目标计算机。和机器语言一样,汇编语言依附于目标计算机。和机器语言一样,汇编语言依附于目标计算机。需需需需汇编汇编汇编汇编程序,将程序,将程序,将程序,将汇编语言译成机器语言汇编语言译成机器语言汇编语言译成机器语言汇编
19、语言译成机器语言。16程序设计语言程序设计语言 程序设计语言又称高级语言。程序设计语言接近于英语,相程序设计语言又称高级语言。程序设计语言接近于英语,相程序设计语言又称高级语言。程序设计语言接近于英语,相程序设计语言又称高级语言。程序设计语言接近于英语,相当于工程语言。目前计算机系统一般含有多个程序设计语言的当于工程语言。目前计算机系统一般含有多个程序设计语言的当于工程语言。目前计算机系统一般含有多个程序设计语言的当于工程语言。目前计算机系统一般含有多个程序设计语言的翻译程序(例翻译程序(例翻译程序(例翻译程序(例VCVC、VBVB等),甚至对同一个程序设计语言配备了等),甚至对同一个程序设计
20、语言配备了等),甚至对同一个程序设计语言配备了等),甚至对同一个程序设计语言配备了多个不同性能的翻译程序,供用户选择使用。多个不同性能的翻译程序,供用户选择使用。多个不同性能的翻译程序,供用户选择使用。多个不同性能的翻译程序,供用户选择使用。优点优点优点优点独立于具体计算机,面向过程(函数)或对象。独立于具体计算机,面向过程(函数)或对象。独立于具体计算机,面向过程(函数)或对象。独立于具体计算机,面向过程(函数)或对象。程序设计语言接近于英语,可理解性好。程序设计语言接近于英语,可理解性好。程序设计语言接近于英语,可理解性好。程序设计语言接近于英语,可理解性好。数据类型丰富,各种功能的语句齐
21、备,一条语句至少相当数据类型丰富,各种功能的语句齐备,一条语句至少相当数据类型丰富,各种功能的语句齐备,一条语句至少相当数据类型丰富,各种功能的语句齐备,一条语句至少相当于几十条汇编语句。于几十条汇编语句。于几十条汇编语句。于几十条汇编语句。所以,程序设计语言极大地提高了编程效率,大幅度地降低所以,程序设计语言极大地提高了编程效率,大幅度地降低所以,程序设计语言极大地提高了编程效率,大幅度地降低所以,程序设计语言极大地提高了编程效率,大幅度地降低了编程难度。了编程难度。了编程难度。了编程难度。缺点缺点缺点缺点需需需需翻译程序,将高级语言译成机器语言或汇编语言翻译程序,将高级语言译成机器语言或汇
22、编语言翻译程序,将高级语言译成机器语言或汇编语言翻译程序,将高级语言译成机器语言或汇编语言。对硬件操作困难,高级语言通常提供汇编语言接口。对硬件操作困难,高级语言通常提供汇编语言接口。对硬件操作困难,高级语言通常提供汇编语言接口。对硬件操作困难,高级语言通常提供汇编语言接口。171.2 基本术语解释基本术语解释源语言和源程序源语言和源程序(Source Language and Source Program)用程序设计语言书写的程序,称为源程序,该程序设计语言称用程序设计语言书写的程序,称为源程序,该程序设计语言称用程序设计语言书写的程序,称为源程序,该程序设计语言称用程序设计语言书写的程序,
23、称为源程序,该程序设计语言称为源语言。源程序通常用编缉程序输入,用字符为源语言。源程序通常用编缉程序输入,用字符为源语言。源程序通常用编缉程序输入,用字符为源语言。源程序通常用编缉程序输入,用字符(ASCII(ASCII码码码码)表示,表示,表示,表示,以文本文件形式存储。以文本文件形式存储。以文本文件形式存储。以文本文件形式存储。文本文件文本文件(Text File)文本文件的内容由文本文件的内容由文本文件的内容由文本文件的内容由9494个图形字符个图形字符个图形字符个图形字符!-(33-126)!-(33-126)和和和和4 4个个个个控制字符换行控制字符换行控制字符换行控制字符换行(10
24、)(10)、回车、回车、回车、回车(13)(13)、空格、空格、空格、空格(32)(32)、TAB(9)TAB(9)构成,文本文构成,文本文构成,文本文构成,文本文件又称为件又称为件又称为件又称为ASCIIASCII码文件,扩展名通常为码文件,扩展名通常为码文件,扩展名通常为码文件,扩展名通常为TXTTXT,文件尾用控制字符文件尾用控制字符文件尾用控制字符文件尾用控制字符EOF(26)EOF(26)指示。当换行和回车二个控制字符从文本文件读入内存,指示。当换行和回车二个控制字符从文本文件读入内存,指示。当换行和回车二个控制字符从文本文件读入内存,指示。当换行和回车二个控制字符从文本文件读入内存
25、,在在在在C C语言中是用一个字符(换行)表示。语言中是用一个字符(换行)表示。语言中是用一个字符(换行)表示。语言中是用一个字符(换行)表示。18目标语言和目标程序目标语言和目标程序(Target Language and Target Program)目标语言可以是机器语言目标语言可以是机器语言目标语言可以是机器语言目标语言可以是机器语言(二进制数二进制数二进制数二进制数),也可以是汇编语言,也可以是汇编语言,也可以是汇编语言,也可以是汇编语言(字字字字符符符符),或者是其它中间语言,或者是其它中间语言,或者是其它中间语言,或者是其它中间语言(字符字符字符字符),但最终结果必定是机器语言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理课件 第一章精品 编译 原理 课件 第一章 精品
限制150内