编译原理及其优秀PPT.ppt
《编译原理及其优秀PPT.ppt》由会员分享,可在线阅读,更多相关《编译原理及其优秀PPT.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理及其现在学习的是第1页,共41页参考书目1 Alfred V.Aho Ravi Sethi Jeffrey D.Ullman Compilers:Principles,Techniques,and Tools 人民邮电出版社。2 Kenneth C.Louden 著 冯博琴 冯岚等译 Compiler Construction Principles and Practice 机械工业出版社。3 金成植 著,编译原理及实现,高等教育出版社。4 吕映芝,编译原理,清华大学教育出版社。现在学习的是第2页,共41页第一章 编译引论主要内容:主要内容:l几个基本概念几个基本概念:翻译程序翻译程序
2、汇编程序汇编程序编译程序编译程序源程序源程序目标程序目标程序l编译器的组成结构、各部分之间的逻辑关系和主要功能;编译器的组成结构、各部分之间的逻辑关系和主要功能;l编译程序的实现途径编译程序的实现途径;l与编译程序相关的其他程序与编译程序相关的其他程序;编辑器编辑器预处理器预处理器连接程序连接程序装配程序装配程序调试程序调试程序现在学习的是第3页,共41页1.1 程序设计语言和编译程序程序设计语言和编译程序从第一台计算机问世至今,半个多世纪以来,程序设计语言经历了由低级向高级的发展,从最初的机器语言、从第一台计算机问世至今,半个多世纪以来,程序设计语言经历了由低级向高级的发展,从最初的机器语言
3、、汇编语言,发展到较高级程序设计语言直至今天的第四代、第五代高级语言。汇编语言,发展到较高级程序设计语言直至今天的第四代、第五代高级语言。一、程序设计语言一、程序设计语言(一)低级语言(一)低级语言l机器语言机器语言l由能被计算机的硬件系统直接执行的机器指令组成,每条机器指令由能被计算机的硬件系统直接执行的机器指令组成,每条机器指令是一串二进制代码,用机器语言编写出来的程序是一串二进制代码是一串二进制代码,用机器语言编写出来的程序是一串二进制代码序列。序列。例:例:x+15 xy Y=x-15 否则否则现在学习的是第4页,共41页l用用PentiumPentium机器语言编写如下程序片段:机器
4、语言编写如下程序片段:1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0111 1100 0000 01010010 1101 0001 0101 0000 0000 1110 1010 0000 00110000 0101 0001 0101 0000 0000 0101 0011 0001 1000 0000 0001 .0000 0000 0000 0000 0000 0000 0000 0000 l机器语言的特点:机器语言的特点:优点:执行速度快;优点:执行速度快;缺点:缺点:l难学、难记忆、难理解难学、难记忆、难
5、理解;l机器语言程序依赖于具体的机器机器语言程序依赖于具体的机器,不具备移植性;不具备移植性;现在学习的是第5页,共41页汇编语言汇编语言将硬件指令用一些助记符表示。如将硬件指令用一些助记符表示。如ADDADD表示加法操作,表示加法操作,SUBSUB表示表示减法操作等等减法操作等等 。l用用PentiumPentium汇编语言编程示例:汇编语言编程示例:MOV AX,X CMP AX,Y JLS1 SUB AX,15 JMP S2 S1:ADD AX,15 S2:MOV Y,AX .XDWYDW现在学习的是第6页,共41页l汇编语言的优点:比机器语言较易学、易记忆及易理解汇编语言的优点:比机器
6、语言较易学、易记忆及易理解;l汇编语言的缺点:汇编语言程序依赖于具体的机器汇编语言的缺点:汇编语言程序依赖于具体的机器,不具不具备移植性;备移植性;现在学习的是第7页,共41页(二)高级语言(二)高级语言l高级语言:把便于理解的自然语言和数学语言结合在一起而形成高级语言:把便于理解的自然语言和数学语言结合在一起而形成的程序设计语言。的程序设计语言。l高级语言编程示例:高级语言编程示例:if (XY)then Y:=X+15 else Y:=X-15;l高级语言的优点:高级语言的优点:l比汇编语言更容易学,以人为本,面向自然表达,比汇编语言更容易学,以人为本,面向自然表达,易学、易用、易理解、易
7、修改易学、易用、易理解、易修改;l高级语言程序不依赖于具体的机器高级语言程序不依赖于具体的机器,具备移植性。具备移植性。现在学习的是第8页,共41页l高级程序设计语言分类:高级程序设计语言分类:1 1、程序设计语言按功能分类:、程序设计语言按功能分类:科学计算用语言科学计算用语言商用语言商用语言表处理语言表处理语言图形语言图形语言公式处理语言公式处理语言串处理语言串处理语言多用途语言多用途语言 2 2、按处理问题模式分类:、按处理问题模式分类:过程式语言过程式语言函数式语言函数式语言逻辑式语言逻辑式语言对象式语对象式语 3 3、按执行模式分类:、按执行模式分类:顺序语言顺序语言并行语言并行语言
8、现在学习的是第9页,共41页二、高级语言和汇编语言的执行二、高级语言和汇编语言的执行l翻译程序(翻译程序(Translator):它把用汇编语言或高级语:它把用汇编语言或高级语言编写的程序转换成等价的机器语言程序。言编写的程序转换成等价的机器语言程序。l汇编程序汇编程序(Assembler):汇编语言的翻译程序称:汇编语言的翻译程序称为汇编程序为汇编程序(Assembler)l编译程序编译程序(Compiler):高级语言的翻译程序称为编译:高级语言的翻译程序称为编译程序程序,也称为编译器也称为编译器。现在学习的是第10页,共41页l源程序(源程序(Source program):编译程序的输
9、入对):编译程序的输入对象象,它是高级语言编写的程序;它是高级语言编写的程序;l目标程序(目标程序(Object program):编译程序的输出对编译程序的输出对象称为目标程序。目标程序可以是机器语言程序、象称为目标程序。目标程序可以是机器语言程序、汇编语言程序或用户自定义某种中间语言程序。汇编语言程序或用户自定义某种中间语言程序。现在学习的是第11页,共41页三、高级语言的执行方式三、高级语言的执行方式1.编译方式编译方式l编译阶段编译阶段:将源程序改造成另一种在逻辑上等价的目标语言程序;将源程序改造成另一种在逻辑上等价的目标语言程序;l运行阶段:在运行子程序的支持下执行目标程序。运行阶段
10、:在运行子程序的支持下执行目标程序。运运行行子子程程序序是是为为了了支支持持目目标标程程序序的的运运行行而而开开发发的的程程序序,如如系系统统提提供供的标准库函数和目标程序所调用的其它子程序。的标准库函数和目标程序所调用的其它子程序。目标程序目标程序程序的输入数据程序的输入数据运行结果运行结果高级语言高级语言 源程序源程序 编译程序编译程序 (器)(器)现在学习的是第12页,共41页2.解释方式解释方式接接受受某某程程序序语语言言编编写写的的源源程程序序,按按源源程程序序语语句句运运行行时时的的动动态态结结构构,直直接接逐逐句句地地分分析析、翻翻译译并并执执行行。解解释释程程序序相相当当于于源
11、源程程序序的的抽象执行机,是语言的实现系统。抽象执行机,是语言的实现系统。运行结果运行结果 解释程序解释程序 (器)(器)程序的输入数据程序的输入数据高级语言源高级语言源程序程序现在学习的是第13页,共41页解释器和编译器的比较解释器和编译器的比较l解释器是执行系统,编译器是转换系统。解释器是执行系统,编译器是转换系统。l 基于解释执行的程序可以动态修改自身,基于解释执行的程序可以动态修改自身,而基于编译执行的程序而基于编译执行的程序不易胜任,不易胜任,因其需要动态编译技术,难度较因其需要动态编译技术,难度较大。大。l 基于解释方式有利于人机交互。基于解释方式有利于人机交互。l 执行速度执行速
12、度:解释器执行速度要慢。解释器执行速度要慢。l 空间开销空间开销:解释器需要保存的信息较多,空间开销大。解释器需要保存的信息较多,空间开销大。l 利用解释器可自动生成编译器。利用解释器可自动生成编译器。l二者实现技术相似。二者实现技术相似。现在学习的是第14页,共41页3、语言的转换执行方式语言的转换执行方式l假如要实现假如要实现L L语言,现在已有语言,现在已有LL语言的编译程序,就可以先语言的编译程序,就可以先把用把用L L语言编写的程序转换成等价的语言编写的程序转换成等价的LL语言的程序,再利用语言的程序,再利用LL语言的编译程序实现语言的编译程序实现L L语言。语言。L语言编译器语言编
13、译器 转换器转换器 L语言程序语言程序 L语言程序语言程序 目标程序目标程序 现在学习的是第15页,共41页1.2 编译程序的逻辑结构编译程序的逻辑结构l编译程序的基本任务是将源语言程序翻译成等价的目标语言程序。编译程序的基本任务是将源语言程序翻译成等价的目标语言程序。源语言的种类成千上万,从常用的诸如源语言的种类成千上万,从常用的诸如FORTEAN,PASCAL和和C语言,到各种各样的计算机应用领域的专用语言,而语言,到各种各样的计算机应用领域的专用语言,而目标语言也是成千上万的,加上编译程序根据它们构造目标语言也是成千上万的,加上编译程序根据它们构造的不同、所执行的具体功能的差异又分成多种
14、类型,比的不同、所执行的具体功能的差异又分成多种类型,比如:一趟编译的、多趟编译的、具有调试和优化功能的如:一趟编译的、多趟编译的、具有调试和优化功能的等等。尽管存在这些明显的复杂因素,任何编译程序所等等。尽管存在这些明显的复杂因素,任何编译程序所必需执行的主要任务基本是一样的,通过理解这些任务,必需执行的主要任务基本是一样的,通过理解这些任务,使用同样的基本技术,我们可以为各种各样的源语言和使用同样的基本技术,我们可以为各种各样的源语言和目标语言设计和构造编译程序。目标语言设计和构造编译程序。现在学习的是第16页,共41页1.2.1 1.2.1 编译器的逻辑结构编译器的逻辑结构表表 处处 理
15、理 目目标标代代码码生生成成中中间间代代码码优优化化中中间间代代码码生生成成语语义义分分析析语语法法分分析析词词法法分分析析目目标标程程序序源源程程序序错错 误误 处处 理理 现在学习的是第17页,共41页l词法分析词法分析(Lexical Analysis)(Lexical Analysis)u 依依据据语言的词法规则,扫描源程序的字符序列,识别每语言的词法规则,扫描源程序的字符序列,识别每 一个单词及一个单词及其种类,并将其表示成所谓的机内表示其种类,并将其表示成所谓的机内表示TOKEN形式。形式。u单词种类单词种类:关键字关键字:if、then、for、while等等;标识符标识符;常数
16、常数;运算符运算符 特殊符特殊符 分界符分界符:标点符号、左右括号等等标点符号、左右括号等等.u单词的机内表示,即单词的机内表示,即TOKEN形式,一般包括单词属性标识和单词内形式,一般包括单词属性标识和单词内码两个部分。码两个部分。u 在词法分析阶段还要检查括号类配对等词法错误并去掉源程序中在词法分析阶段还要检查括号类配对等词法错误并去掉源程序中注释。注释。u词法分析阶段不依赖于语言的语法定义。词法分析阶段不依赖于语言的语法定义。现在学习的是第18页,共41页词法分析的示例词法分析的示例u某程序片段如下:VAR sum,first,count:real;BEGIN sum:=first+co
17、unt*10 END.u词法分析程序扫描该程序段的字符序列,应识别出下列单词序列:词法分析程序扫描该程序段的字符序列,应识别出下列单词序列:1.关键字 VAR 2.标识符 sum 3.特殊符 ,4.标识符 first 5.特殊符 ,6.标识符 count 7.特殊符 :8.关键字 real 9.特殊符 ;10.关键字 BEGIN 11.标识符 sum 12.特殊符 :=13.标识符 first 14.特殊符 +15.标识符 count 16.特殊符 *17.整形常数 10 18.关键字 END 19.特殊符 .现在学习的是第19页,共41页u假定单词的机内表示,即假定单词的机内表示,即TOKE
18、N结构如下:结构如下:假定关键字假定关键字VAR、real、BEGIN及及END的属性标识分别为的属性标识分别为15、20、23 和和 24,特殊符特殊符“,”、“:”、“:=”、“*”、“+”、“.”及及“;”的属性标识分别为的属性标识分别为30、31、32、33、34、35及及36。单词属性标识单词属性标识单词内码单词内码关键字关键字一关键字关键字一整数码空标识符标识符1标识符标识符常数常数2常数常数特殊符特殊符一特殊符特殊符一整数码空现在学习的是第20页,共41页u词法分析程序扫描该程序段的字符序列,生成下列词法分析程序扫描该程序段的字符序列,生成下列TOKEN序列:序列:1.(15,)
19、2.(1,sum)3.(30,)4.(1,first)5.(30,)6.(1,count)7.(31,)8.(20,)9.(36,)10.(23,)11.(1,sum )12.(32,)13.(1,first)14.(34,)15.(1,count)16.(33,)17.(2,10 )18.(24,)19.(35,)现在学习的是第21页,共41页l语法分析语法分析(Syntax Analysis)Syntax Analysis)依据源语言的语法规则,依据源语言的语法规则,扫描源程序的字符序列扫描源程序的字符序列(当词法分析程序是语法分析程序的子程序时)或(当词法分析程序是语法分析程序的子程序时
20、)或TokenToken序列序列(当词法分析程序是独立的一遍时)(当词法分析程序是独立的一遍时),确定整个输入串是否构成一个语法上正确的程序。确定整个输入串是否构成一个语法上正确的程序。一般来说分析时发现错误输出错误位置及类型,一般来说分析时发现错误输出错误位置及类型,如未发现错误则将如未发现错误则将源程序转换成语法树的形式,源程序转换成语法树的形式,目的是把词法分析的结果分解成各种语法单位目的是把词法分析的结果分解成各种语法单位。现在学习的是第22页,共41页语法分析的示例语法分析的示例lsum:=first+count*10 +:=*赋值语句表达式表达式标识符(1,sum)表达式标识符(1
21、,first)表达式标识符(1,count)表达式常数(2,10)现在学习的是第23页,共41页+:=*(1,sum)(1,count)(1,first)(2,10)现在学习的是第24页,共41页l语义分析语义分析(Semantic AnalysisSemantic Analysis)审查审查源程序有无源程序有无语义错误语义错误,为为代代码码生成生成 阶阶段收集段收集类类型信息。型信息。l语义错误检查又可分为类型检查和一般的语义检查。语义错误检查又可分为类型检查和一般的语义检查。类型检查主要包含以下内容:类型检查主要包含以下内容:各种条件表达式的类型是不是各种条件表达式的类型是不是boolea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 及其 优秀 PPT
限制150内