第1章编译原理概况精选PPT.ppt
《第1章编译原理概况精选PPT.ppt》由会员分享,可在线阅读,更多相关《第1章编译原理概况精选PPT.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章编译原理概况20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1 1第1页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2 2 参考文献参考文献1.陈火旺,钱家桦,孙永强.程序设计语言原理.国防工业出版社,19832.杜淑敏,王永宁.编译程序设计原理.北京大学出版社,19863.俞瑞钊.数理逻辑.浙江大学出版社.1990 第2页,此课件共
2、63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page3 3 第一章第一章 概论概论主要内容主要内容1.1.什么叫编译程序什么叫编译程序2.2.编译过程编译过程3.3.编译程序的组成编译程序的组成4.4.与编译原理有关的软件工具与编译原理有关的软件工具第3页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page4 41.11.1什么是编译程序什么是
3、编译程序 首先看一个示例:首先看一个示例:Main()int I,j;j=20;I=j+;I=j+;printf(“i=%d,j=%d”,I,j);,I,j);在在tubro ctubro c下存为下存为ww.cww.c文件,它是文件,它是不能执行的,必不能执行的,必须要须要compliercomplier后后生成生成ww.exeww.exe文件文件才能执行才能执行第4页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page5 5Delphi7.0Delphi7.0
4、的编译器的编译器的编译器的编译器VC,VB,JAVAVC,VB,JAVA等都等都等都等都有自己的编译器有自己的编译器有自己的编译器有自己的编译器第5页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page6 6什么叫编译程序什么叫编译程序(compiler)?编译程序就是在一个开发工具中编译程序就是在一个开发工具中,将高级语将高级语言写成的代码翻译成机器指令的一个程序言写成的代码翻译成机器指令的一个程序第6页,此课件共63页哦20072007年年年年9 9月月月月4
5、 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page7 7(1).(1).从从功功能能上上看看,一一个个编编译译程程序序就就是是一一个个语语言言翻翻译译程程序序。它它把把一一种种语语言言(称称作作源源语语言言)书书写写的的程程序序翻翻译译成成另另一一种种语语言言(称称作作目目标标语语言言)的的等等价价的程序的程序编译程序的特点编译程序的特点 源程源程序代码序代码可执行可执行文件文件 图图1.11.1编译程序的功能编译程序的功能第7页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星
6、期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page8 8源语言源语言:FORTRAN,PASCAI,C,BASIC,FORTRAN,C+等那样的高级语言.目标语言目标语言:汇编语言或机器语言那样的低级语言,第8页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page9 9(2 2).一一个个编编译译程程序序的的重重要要性性体体现现在在它它使使得得多多数数计计算算机机用用户户不不必必考考虑虑与与机机器器有有关关的的繁繁琐琐细
7、细节节,使程序员和程序设计专家独立于机器。使程序员和程序设计专家独立于机器。编译程序的特点编译程序的特点 第9页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1010预处理编译处理汇编程序连接生成可执行文件fortranfor1pas2linkexeccompilemakebuildexe一个程序设计语言程序的典型的处理过程一个程序设计语言程序的典型的处理过程一个程序设计语言程序的典型的处理过程一个程序设计语言程序的典型的处理过程第10页,此课件共63页哦2
8、0072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1111(3).一个源程序有时可能分成几个模块存放在不同的文件里,将这些源程序汇集在一起的任务,由一个叫预处理程序的程序来完成有些预处理程序也负责宏展开,像C语言的预处理程序要完成文件合并、宏展开等任务.编译程序的特点编译程序的特点 第11页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1212(
9、4)代码形式,需要经由汇编程序翻译成可在装配的机器代码,一个编译程序的输入可能一个或多个预处理程序来产生,另外,为得到能运行的机器代码,编译程序的输出可能仍需要进一步地处理。编译程序的特点编译程序的特点 第12页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1313(1)第一个编译程序出现在20世纪5O年代早期,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很
10、多限制然而它们奠定了对高级语言编译系统的研究和开发的基础、编译程序的发展 第13页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1414(2)20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功编译程序的发展 (3)20世纪50年代末有人开始研究编译程序自动生成工具,提出并研制编译程序的编译程序、它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成
11、系统LEX,语法分析程序的生成系统YACC等第14页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1515(4)20世纪60年代起不断有人使用自展技术来构造编译程序自展的主要特征是用被编译的语言来书写该语言自身的编译程序,编译程序的发展 (5)1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。(6)随着并行技术和并行语言的发展处理并行语言的并行编译技术正在深入研究之中将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。第15页,
12、此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1616 编译程序完成从源程序到目标程序的翻译是一个复杂的整体的过程 目标程序=Translation(源程序)从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的。每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的 1.1.2 2编译过程编译过程第16页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1
13、212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1717词法分析词法分析语法分析语法分析语义分析语义分析中间代码的生成中间代码的生成代码的优化代码的优化目标代码生成目标代码生成表表格格管管理理出出错错处处理理图图1.31.3编译程序的阶段划分编译程序的阶段划分一种典型的一种典型的划分方法划分方法第17页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1818词法分析、词法分析、单词单词=T1(=T1(源程序源程序)语法分析、语法分析、
14、语句语句=T2(T2(单词)单词)语义分析、语义分析、语句语句=T3T3(语句)(语句)中间代码生成、中间代码生成、中间代码中间代码=T4T4(语句语句)代码优化、代码优化、代码代码=T5T5(中间代码)(中间代码)目标代码生成、目标代码生成、目标代码目标代码=T6T6(代码)(代码)六个阶段。六个阶段。目标程序目标程序=Translation(Translation(源程序源程序)的分解的分解第18页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page1919表
15、格管理和出错处理与上述个阶段都有联系 表格管理和出错处理表格管理和出错处理第19页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2020A.任务:词法分析阶段是编译过程的第一个阶段,这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称词符号或符号)(1)1)词法分析词法分析第20页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212
16、分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2121这里所谓的单词是指逻辑上紧密相连的一组宇符,这些字符具有集体含义比如标识符是由字母字符开头,后跟字母、数字字符的字符序列组成的一种单词保留字(关键字或基本字)是一种单词,此外还有算符,界符等等例如某源程序片断如下:B.B.单词的含义单词的含义第21页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2222Begin Begin Var sum,firtVar sum,firt,coun
17、tcount:realreal;sum:=firstsum:=firstcount*10 count*10 endend 词法分析阶段将构成这段程序的字符组成了词法分析阶段将构成这段程序的字符组成了如下单词序列:如下单词序列:C.词法分析实例第22页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page23231 1 1 1保留字保留字保留字保留字 begin 2begin 2begin 2begin 2保留字保留字保留字保留字 varvarvarvar3 3 3
18、3标识符标识符标识符标识符sum 4sum 4sum 4sum 4逗逗逗逗 号号号号 ,5 5 5 5标识符标识符标识符标识符 first 6first 6first 6first 6逗逗逗逗 号号号号 ,7 7 7 7标识符标识符标识符标识符 count 8count 8count 8count 8冒冒冒冒 号号号号 :9 9 9 9保留字保留字保留字保留字real 10real 10real 10real 10分分分分 号;号;号;号;11111111 标识符标识符标识符标识符sum 12sum 12sum 12sum 12赋值号:赋值号:赋值号:赋值号:=13131313标识符标识符标识
19、符标识符first 14 first 14 first 14 first 14 加加加加 号号号号 十十十十 15151515标识符标识符标识符标识符 count 16count 16count 16count 16乘乘乘乘 号号号号*17171717整数整数整数整数10 18 10 18 10 18 10 18 保留字保留字保留字保留字endendendend19191919 界界界界 符符符符 第23页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page242
20、4 使用使用id1,id2id1,id2和和id3id3分别表示分别表示sumsum,firstfirst和和countcount三个标识符的内部形式,那么经过词三个标识符的内部形式,那么经过词法分析后上述程序片断中的赋值语句法分析后上述程序片断中的赋值语句 sum:=firstsum:=firstCount*10Count*10则则表示为表示为id1:=id2id1:=id2id3*10 id3*10 D.D.词法分析另一任务词法分析另一任务第24页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共
21、共共6363页页页页,Page,Page2525语法分析是编译过程的第二个阶段。A.语法分析任务:是在词法分析的基础上将单词序列分解是在词法分析的基础上将单词序列分解成各类语法短语,如成各类语法短语,如“程序程序”“语句语句”,“表表达式达式”等等等等一般这种语法短语,也称语一般这种语法短语,也称语法单位法单位(2)(2)语法分析语法分析第25页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2626将将语法单位转换成语法树语法单位转换成语法树B B语法分析任
22、务之二语法分析任务之二比如上述程序段中的单词序列:比如上述程序段中的单词序列:id1:=id2id1:=id2id3*10id3*10经语法分析得知其是经语法分析得知其是PASCALPASCAL语言的语言的“赋值语句赋值语句”,表示成如图,表示成如图1.41.4所示的语法树或是图所示的语法树或是图1.51.5所所示的那种形式示的那种形式 第26页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2727赋值语句赋值语句标识符标识符Id1(sum)Id1(sum)
23、:=:=表达式表达式表达式表达式表达式表达式表达式表达式表达式表达式+*标识符标识符Id2(first)Id2(first)标识符标识符Id3(count)Id3(count)整数整数1010语句语句id1:=id2+id3*10id1:=id2+id3*10的语法树的语法树第27页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2828:=id1+id2*id310图图1.51.5语句语句id1:=id2+id3*10id1:=id2+id3*10的语法树另
24、一种形式的语法树另一种形式简化的语法简化的语法树树第28页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page2929(A)A)语法分析所依据的是语言的语法分析所依据的是语言的语法规则语法规则,即描,即描述程序结构的规则通过语法分析确定整个输入述程序结构的规则通过语法分析确定整个输入串是否构成一个语法上正确的程序串是否构成一个语法上正确的程序 C C怎样进行语法分析规则怎样进行语法分析规则第29页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期
25、二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page3030(B)程序的构成规则通常是递规法则表示:例:表达式的递规规则定义:1)任何标识符是表达式。2)任何常数(整常数、实常数)是表达式3)若表达式1和表达式2都是表达式那么;表达式1+表达式2 表达式1*表达式2 (表达式1)都是表达式语法规则的表示语法规则的表示第30页,此课件共63页哦20072007年年年年9 9月月月月4 4日星期二日星期二日星期二日星期二5 5时时时时1212分分分分3232秒秒秒秒共共共共6363页页页页,Page,Page3131例如:语句也可以递
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 概况 精选 PPT
限制150内