编译原理—第1章 引论(精品).ppt
《编译原理—第1章 引论(精品).ppt》由会员分享,可在线阅读,更多相关《编译原理—第1章 引论(精品).ppt(48页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、课程简介课程简介总学时:总学时:56学时学时其中课堂教学:其中课堂教学:48学时学时;实验:实验:8学时学时课程设计:一周课程设计:一周主讲:林泓主讲:林泓课程内容课程内容v介绍编译器构造的一般原理和基本实现方法介绍编译器构造的一般原理和基本实现方法v介介绍绍的的理理论论知知识识:形形式式语语言言和和自自动动机机理理论论、语语法法制制导导的的定义和属性文法等定义和属性文法等v强调形式化描述技术强调形式化描述技术v强强调调对对编编译译原原理理和和技技术术的的宏宏观观理理解解,注注意意力力无无需需分分散散到到枝节算法,无需偏向于某种源语言或目标机器枝节算法,无需偏向于某种源语言或目标机器学习的意义
2、学习的意义v对对编编程程语语言言的的设设计计和和实实现现有有深深刻刻的的理理解解,对对和和编编程程语语言言有有关关的的理理论论有有所所了了解解,对对宏宏观观上上把把握握编编程程语语言言来来说说,起起一个奠基的作用。一个奠基的作用。v从从软软件件工工程程看看,编编译译器器是是一一个个很很好好的的实实例例,所所介介绍绍的的概概念和技术能应用到一般的软件设计之中。念和技术能应用到一般的软件设计之中。v大大多多数数程程序序员员同同时时是是简简单单语语言言的的设设计计者者,有有助助于于提提高高对对这些语言的设计水平。这些语言的设计水平。v在在软软件件逆逆向向工工程程、软软件件的的设设计计方方法法、程程序
3、序理理解解和和软软件件安安全等方面有着广泛的应用。全等方面有着广泛的应用。课程要求课程要求v讲课进展较快,平时要复习并加深理解。讲课进展较快,平时要复习并加深理解。v作业较多,要求独立完成。作业较多,要求独立完成。v上机实验,每次检查。上机实验,每次检查。v学期总评学期总评 =考试成绩占考试成绩占70%70%,平时成绩占,平时成绩占30%30%编译系统是现代计算机系统的基本组成之一,编译程序编译系统是现代计算机系统的基本组成之一,编译程序构造的基本原理和技术不仅应用于编译程序的设计,也广泛构造的基本原理和技术不仅应用于编译程序的设计,也广泛应用于一般软件的设计和实现。本课程是计算机类专业的一应
4、用于一般软件的设计和实现。本课程是计算机类专业的一门重要的核心专业课。门重要的核心专业课。先修课程:先修课程:高级程序设计语言、汇编语言、离散数学、数据结构高级程序设计语言、汇编语言、离散数学、数据结构学习要求:学习要求:不旷课,上课认真听讲,课上保持安静;不旷课,上课认真听讲,课上保持安静;课后即时复习,认真完成作业。课后即时复习,认真完成作业。学习目标学习目标 通通过过本本课课程程的的学学习习,旨旨在在使使同同学学们们掌掌握握程程序序设设计计语语言言的的形形式式化化描描述述和和编编译译的的基基本本理理论论、原原理理和和技技术术,并并对对编编译译程程序序有有较较为为具具体体的的认认识识。使使
5、同同学学们们能能运运用用所所学学过过的的基基本本知知识识、着着手手开开发发系系统统程程序序,为为今今后后的的工工作作(理理论论研研究究和和技技术术开开发发)打打下下基基础础。具体为:具体为:(1 1)掌握编译程序基本结构及构造的基本原理和技术;)掌握编译程序基本结构及构造的基本原理和技术;(2 2)掌握文法、形式语言及自动机的基本概念和在编译程序构造中的应用;)掌握文法、形式语言及自动机的基本概念和在编译程序构造中的应用;(3 3)掌握典型的几种语法分析方法的基本原理和实现方法;)掌握典型的几种语法分析方法的基本原理和实现方法;(4 4)掌握语法制导方法在语义分析中的应用和中间代码生成方法;)
6、掌握语法制导方法在语义分析中的应用和中间代码生成方法;(5 5)掌握存储分配的基本思想和实现方法;)掌握存储分配的基本思想和实现方法;(6 6)掌握代码优化及代码生成的方法。)掌握代码优化及代码生成的方法。学习向导学习向导 编编译译原原理理课课程程是是理理论论性性较较强强的的课课程程。其其特特点点是是概概念念多多、内内容容抽抽象象。尤尤其其是是文文法法、形形式式语语言言及及自自动动机机的的概概念念是是计计算算机机专专业业的的理理论论学学习习和和研研究究的的基基础础。掌掌握握这这些些基基本本理理论论、原原理理和和技技术术,对对于于培培养养同同学学们们对对事事物物的的抽抽象象能能力力以以及及分分析
7、析问问题题和和解解决决问问题题的的能力大有帮助。能力大有帮助。编编译译原原理理与与方方法法对对于于深深刻刻理理解解程程序序设设计计语语言言、深深入入了了解解程程序序在在计计算算机机中中的的运运行行机机制制、掌掌握握程程序序设设计计语语言言的的翻翻译译方方法法起起到到不不可可替替代代的的作作用用。同同时时编编译译原原理理课课程程也也是是实实践践性性很很强强的的课课程程,要要求求同同学学们们在在基基本本掌掌握握了了编编译译理理论论和和技技术术的的基基础础上上,综综合合应用先修课程及本课程的知识,完成课程的实验和课程设计。应用先修课程及本课程的知识,完成课程的实验和课程设计。参考资料参考资料教材:教
8、材:11 编译编译原理原理 主主编编:张张素琴、素琴、吕吕映芝、蒋映芝、蒋维维杜杜 出版社:清出版社:清华华大学出版社大学出版社出版出版时间时间:20052005年年2 2月月参考参考书书:11编译编译原理原理 主主编编:何炎祥:何炎祥 出版社:出版社:华华中理工大学出版社中理工大学出版社出版出版时间时间:20002000年年1010月月22 程序设计语言编译原理(第程序设计语言编译原理(第3 3版)版)主编:陈火旺、刘春林、谭庆平、赵克佳、刘越主编:陈火旺、刘春林、谭庆平、赵克佳、刘越 出版社:国防工业出版社出版社:国防工业出版社出版时间:出版时间:20012001年年8 8月月33编译编译
9、原理技原理技术术与工具(英文版)与工具(英文版)Compilers:Principles,Techniques,and Compilers:Principles,Techniques,andToolsTools 主主编编:AlfredAlfredV.Aho,RaviV.Aho,RaviSethi,JeffreySethi,JeffreyD.UllmanD.Ullman 出版社:人民出版社:人民邮电邮电出版社出版社出版出版时间时间:20022002年年2 2月月参考资料参考资料44编译原理与技术编译原理与技术(第二版)(第二版)主编:陈意云主编:陈意云出版社:中国科学技术大学出版社出版社:中国科
10、学技术大学出版社出版时间:出版时间:20022002年年1 1月月55编译程序构造原理和实现技术编译程序构造原理和实现技术 主编:金成植主编:金成植 出版社:高等教育出版社出版社:高等教育出版社出版时间:出版时间:20022002年年7 7月月66编译原理及编译程序构造编译原理及编译程序构造 主编:高仲仪、金茂忠主编:高仲仪、金茂忠 出版社:北京航空航天大学出版社出版社:北京航空航天大学出版社出版时间:出版时间:20012001年年3 3月月77编译原理编译原理(第第2 2版版)主编:蒋立源主编:蒋立源,康慕宁康慕宁 出版社:西北工业大学出版社出版社:西北工业大学出版社出版时间:出版时间:19
11、991999年年4 4月月88编译原理编译原理 主编:张幸儿主编:张幸儿 出版社:科学出版社出版社:科学出版社出版时间:出版时间:19991999年年4 4月月第第1 1章章 引论引论本章主要内容:本章主要内容:v什么是编译程序什么是编译程序v编译过程和编译程序的结构编译过程和编译程序的结构v为什么要学习编译程序为什么要学习编译程序本章的重点:本章的重点:本章没有难以理解的内容本章没有难以理解的内容,主要主要是对编译程序的功能和结构做一综是对编译程序的功能和结构做一综合描述合描述1.1 1.1 什么叫编译程序什么叫编译程序 使使用用过过现现代代计计算算机机的的人人都都知知道道,多多数数用用户户
12、是是应应用用高高级级语语言言来来实实现现他他们们所所需需要要的的计计算算的的。现现代代计计算算机机系系统统一一般般都都含含有有不不止止一一个个的的高高级级语语言言编编译译程程序序,对对有有些些高高级级语语言言甚甚至至配配置置了了几几个个不不同性能的编译程序,供用户按不同需要进行选择。同性能的编译程序,供用户按不同需要进行选择。要要在在计计算算机机上上执执行行用用高高级级语语言言(或或汇汇编编语语言言)编编写写的的程程序序,必必须须通通过过特特定定的的途途径径来来进进行行,也也就就是是要要通通过过翻翻译译程程序序把把用用高高级级语语言言(或或汇汇编编语语言言)编编写写的的程程序序翻翻译译成成为为
13、机机器器语语言言构构成成的的程程序序,计算机才能执行。计算机才能执行。在计算机上执行一个高级语言程序一般要分为两步:在计算机上执行一个高级语言程序一般要分为两步:第一步,用一个编译程序把高级语言翻译成机器语言程序;第一步,用一个编译程序把高级语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。第二步,运行所得的机器语言程序求得计算结果。(1 1)翻译程序()翻译程序(TranslatorTranslator)通常所说的翻译程序是指这样的一个程序,它能够把某通常所说的翻译程序是指这样的一个程序,它能够把某一种语言程序(称为一种语言程序(称为源语言程序或源程序源语言程序或源程序)转
14、换成另一种语)转换成另一种语言程序(称为言程序(称为目标语言程序或目标程序目标语言程序或目标程序),而后者与前者在),而后者与前者在逻辑上是等价的。逻辑上是等价的。源程序源程序(sourceprogram)翻译程序翻译程序目标程序目标程序(targetprogram)输入输入输出输出图图1.1翻译程序翻译程序翻译程序根据所处理的对象和实现的途径不同又分为:翻译程序根据所处理的对象和实现的途径不同又分为:汇编程序、编译程序和解释程序。汇编程序、编译程序和解释程序。(2 2).汇编程序(汇编程序(AssemblerAssembler)如果源语言是某种汇编语言,而目标语言是某种计算机的机如果源语言是
15、某种汇编语言,而目标语言是某种计算机的机器语言,这样的一个翻译程序就称为汇编程序。器语言,这样的一个翻译程序就称为汇编程序。源程序源程序(汇编语言)(汇编语言)翻译程序翻译程序(汇编程序)(汇编程序)目标程序目标程序(机器语言)(机器语言)输入输入输出输出图图1.2汇编程序汇编程序(3 3).编译程序(编译程序(CompilerCompiler)如果源语言是某种高级语言,而目标语言是某种低级语言如果源语言是某种高级语言,而目标语言是某种低级语言(汇编语言或机器语言),这样的一个翻译程序就称为编译程(汇编语言或机器语言),这样的一个翻译程序就称为编译程序。序。源程序源程序(高级语言)(高级语言)
16、翻译程序翻译程序(编译程序)(编译程序)目标程序目标程序(低级语言)(低级语言)图图1.3编译程序编译程序输入输入输出输出(4 4).解释程序(解释程序(Interpreter)这是另外一种类型的翻译程序,在翻译过程它按照高级语这是另外一种类型的翻译程序,在翻译过程它按照高级语言源程序在计算机上执行的动态顺序对源程序的语句逐条翻译言源程序在计算机上执行的动态顺序对源程序的语句逐条翻译(解释),边解释边执行直至结束,它不产生目标程序,它的(解释),边解释边执行直至结束,它不产生目标程序,它的工作结果就是源程序的执行结果,这样的一个翻译程序就称为工作结果就是源程序的执行结果,这样的一个翻译程序就称
17、为解释程序。解释程序。源程序源程序(高级语言)(高级语言)翻译程序翻译程序(解释程序)(解释程序)计算结果计算结果输入输入输出输出图图1.4解释程序解释程序初始数据初始数据根据不同的用途,编译程序可进一步分类根据不同的用途,编译程序可进一步分类:(1)诊断编译程序()诊断编译程序(DiagnosticCompiler):):专门用于帮助程序开发和调试的编译程序。专门用于帮助程序开发和调试的编译程序。(2)优化编译程序()优化编译程序(OptimizingCompiler):):着重于提高目标代码效率的编译程序。着重于提高目标代码效率的编译程序。(3)交叉编译程序)交叉编译程序(CrossCom
18、piler):如果一个编译程序产生不同于其宿主机的机器代码。如果一个编译程序产生不同于其宿主机的机器代码。(4)可变目标编译程序(可变目标编译程序(RetargetableCompiler):):不需重写编译程序中与机器无关的部分就能改变目标机。不需重写编译程序中与机器无关的部分就能改变目标机。宿主机:宿主机:运行编译程序的计算机。运行编译程序的计算机。目标机目标机:运行编译程序所产生目标代码的计算机。运行编译程序所产生目标代码的计算机。1.2 1.2 编译过程概述编译过程概述 编编译译程程序序的的工工作作,从从输输入入源源程程序序开开始始到到输输出出目目标标程程序序为为止止的的整个过程,是非
19、常复杂的。整个过程,是非常复杂的。一段英文翻译为中文时,通常需经下列步骤:一段英文翻译为中文时,通常需经下列步骤:(1)识别出句子中的一个个单词;)识别出句子中的一个个单词;(2)分析句子的语法结构;)分析句子的语法结构;(3)根据句子的含义进行初步翻译;)根据句子的含义进行初步翻译;(4)对译文进行修饰;)对译文进行修饰;(5)写出最后的译文。)写出最后的译文。类似地,编译程序的工作过程一般也可以划分为五个阶段:类似地,编译程序的工作过程一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。代码生成。第
20、一阶段第一阶段:词法分析词法分析 (Lexical Lexical analysisanalysis)词法分析的任务:词法分析的任务:输入源程序,对构成源程序的字符串进行扫描和分解,输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。识别出一个个的单词。保留字(保留字(beginbegin、endend、ifif、forfor、whilewhile等)、等)、标识符(标识符(x1x1、s s等变量名)、等变量名)、常数常数(3.14(3.14、100100等等)、算符(算符(+、-、andand、oror等)、等)、界符(标点符号、左右括号等)。界符(标点符号、左右括号等)。例
21、如,对于例如,对于PascalPascal的循环语句:的循环语句:for I for I:1 to 100 do1 to 100 do词法分析的结果是识别出如下的单词符号:词法分析的结果是识别出如下的单词符号:保留字保留字 forfor标识符标识符 I I赋值号:赋值号:=整常数整常数 1 1保留字保留字toto整常数整常数 100100保留字保留字dodo 单词符号是语言的基本组成成分,是人们理解和编单词符号是语言的基本组成成分,是人们理解和编写程序的基本要素。识别和理解这些要素无疑也是翻写程序的基本要素。识别和理解这些要素无疑也是翻译的基础。译的基础。如同将英文翻译成中文的情形一样,如果你
22、对英如同将英文翻译成中文的情形一样,如果你对英语单词不理解,那就谈不上进行正确的翻译。语单词不理解,那就谈不上进行正确的翻译。在词法分析阶段的工作中所依循的是语言的词法在词法分析阶段的工作中所依循的是语言的词法规则(或称构词规则)。描述词法规则的有效工具是规则(或称构词规则)。描述词法规则的有效工具是正规式和有限自动机。正规式和有限自动机。第二阶段,语法分析第二阶段,语法分析(Syntax Analysis)(Syntax Analysis)语法分析的任务是:语法分析的任务是:在词法分析的基础上,根据语言的语法规则,把单词符号在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单
23、位(语法范畴),如串分解成各类语法单位(语法范畴),如“短语短语”、“子句子句”、“句子句子”(“语句语句”)、)、“程序段程序段”和和“程序程序”等。等。通过语法通过语法分析,确定整个输入串是否构成语法上正确的分析,确定整个输入串是否构成语法上正确的“程序程序”。语语法法分分析析所所依依循循的的是是语语言言的的语语法法规规则则。语语法法规规则则通通常常用用上上下文无关文法描述。下文无关文法描述。词词法法分分析析是是一一种种线线性性分分析析,而而语语法法分分析析是是一一种种层层次次结结构构分分析析。例如,在很多语言中,符号串例如,在很多语言中,符号串z:=X十十0.618*Y代表一个代表一个“
24、赋值语句赋值语句”,而其中的,而其中的X0.618*Y代表一个代表一个“算术算术表达式表达式”。因而,语法分析的任务就是识别。因而,语法分析的任务就是识别X0.618*Y为算术为算术表达式,同时,识别上述整个符号串属于赋值语句这个范畴。表达式,同时,识别上述整个符号串属于赋值语句这个范畴。第三阶段,语义分析与中间代码产生第三阶段,语义分析与中间代码产生(Semantic(Semantic Analysis and Intermediate Generator)Analysis and Intermediate Generator)此阶段的任务是:此阶段的任务是:对对语语法法分分析析所所识识别别
25、出出的的各各类类语语法法范范畴畴,分分析析其其含含义义,并并进进行初步翻译(产生中间代码)。行初步翻译(产生中间代码)。中间代码是一种独立于具体硬件的记号系统。中间代码是一种独立于具体硬件的记号系统。常用的中间代码:三地址码,四元式,三元式、间接三常用的中间代码:三地址码,四元式,三元式、间接三元式、逆波兰式,树形表示等。元式、逆波兰式,树形表示等。所谓所谓“中间代码中间代码”是一种含义明确、便于处理的记号系统,它通常是一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。这种记号系统或者与现代计算机的指令形式有某种独立于具体的硬件。这种记号系统或者与现代计算机的指令形式有某种程度的接近,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理第1章 引论精品 编译 原理 引论 精品
限制150内