语言和翻译:语言是人类交流思想和信息的工具如自然语言,世界上存....ppt





《语言和翻译:语言是人类交流思想和信息的工具如自然语言,世界上存....ppt》由会员分享,可在线阅读,更多相关《语言和翻译:语言是人类交流思想和信息的工具如自然语言,世界上存....ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理1 语言和翻译:语言和翻译:语言是人类交流思想和信息的工具。如自然语言,世界上存在着许多种语言,各国之间要交流信息,就要有各种语言之间的翻译。计算机语言同样是丰富多彩的。由于计算机硬件的器件特性,决定了计算机本身只能直接接受由0和1编码的二进制指令和数据,这种二进制形式的指令集合称为该计算机的机机器器语语言言,它是计算机惟一能够直接识别并接受的语言。它是计算机惟一能够直接识别并接受的语言。1.1 什么是编译程序什么是编译程序返回目录第第1 1章章 编译程序概论编译程序概论编译原理编译原理2 用机器语言编写程序很不方便且容易出错,编写出来的程序也难以调试、阅读和交流。为此,出现了
2、用助记符代替机器语言二进制编码的另外一种语言,这就是汇编语言。汇编语言是建立在机器语言之上的,因为它是机器语言的符号化形式,所以较机器语言直观;但是计算机并不能直接识别这种符号化语言,用汇编语言编写的程序必须翻译成机器语言之后才能执行,这种“翻译”是通过专门的软件汇编程序实现的。编译原理编译原理3 尽管汇编语言与机器语言相比在阅读和理解上有了长足的进步,但其依赖具体机器的特性是无法改变的,这给程序设计增加了难度。随着计算机应用需求的不断增长,出现了更加接近人类自然语言的功能更强、抽象级别更高的面向各种应用的高级语言,如:C、FORTRAN、Pascal、Java、C+等。高级语言已经从具体机器
3、中抽象出来,摆脱了依赖具体机器的问题。用高级语言编制的程序几乎能够在不改动的情况下在不同种类的计算机上运行且不易出错,这是汇编语言难以做到的,但高级语言程序翻译(编译)成最终能够直接执行的机器语言程序的难度却大大增加了。编译原理编译原理4 由于汇编语言和机器语言一样都是面向机器的,故相对于面向用户的高级语言来说,它们都称之为低级语言,而FORTRAN、PASCAL、C、ADA、Java这类面向应用的语言则称之为高级语言。因此,编译程序就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序,编译原理编译原理5编译程序:编译程序:从功能上看,一个编译程
4、序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序。源语言通常是一个高级语言,如FORTRAN,C 或Pascal。目标语言通常是一个低级语言,如汇编或机器语言。编译程序的功能下图所示。编译程序编译程序高级语言程序高级语言程序(源程序)(源程序)低级语言程序低级语言程序(目标程序)(目标程序)编译原理编译原理6 如果从计算机系统的角度看,什么是编译程序呢?我们说编译程序是一种软件,是系统软件。通常认为系统软件是居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。系统软件和具体的应用领域无关,如编译系统和操作系统等。编译程序
5、也是一种语言处理系统,即把软件语言书写的各种程序处理成可在计算机上执行的程序。一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的繁琐细节,使程序员和程序设计专家独立于机器,这对于当今机器的数量和种类持续不断地增长的年代尤为重要。编译原理编译原理7编译原理编译原理8可再装配目标文件可再装配目标文件需预处理的源程序需预处理的源程序预处理程序预处理程序源程序源程序编译程序编译程序汇编程序汇编程序装配装配/连接编辑程序连接编辑程序目标汇编程序目标汇编程序可再装配的机器代码可再装配的机器代码绝对机器代码绝对机器代码高级语言程序的高级语言程序的高级语言程序的高级语言程序的处理过程处理过程处
6、理过程处理过程编译原理编译原理9 一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段,如图所示。编译阶段将源程序变换成目标程序;运行阶段则由所生成的目标程序连同运行系统(数据空间分配子程序、标准函数程序等)接受程序的初始数据作为输入,运行后输出计算结果。编译原理编译原理10源程序源程序编译程序编译程序运行系统运行系统目标程序目标程序输入数据输入数据计算结果计算结果编译原理编译原理11 用高级语言编写的程序也可通过解释程序来执 行。解释程序也是一种翻译程序。解释解释:按源语言的定义边解释边执行。解释程序解释程序源程序源程序输入数据输入数据计算结果计算结果编译原理编译原理12 优 点:交
7、互方便,移植性好。缺 点:效率低,如循环语句部分要反复解释执行。共同点:都需要进行词法、语法、语义分析。应 用:数据库系统中的动态查询语句(交互性)Java(移植性)。区 别:编译产生目标程序,比喻:笔译。解释不产生目标程序,比喻:口译。很多语言如BASIC,LISP和PROLOG等等最初都是解释执行的,后来也都有了编译系统。号称最具生命力的Java环境同时需要解释和编译系统的支持。编译原理编译原理13 编译程序的工作过程是指从输入源程序开始到输出目标程序为止的整个过程,此过程是非常复杂的。一般来说,整个编译过程可以划分成五个阶段:词法分析阶段、语法分析阶段、语义分析和中间代码生成阶段、优化阶
8、段和目标代码生成阶段。1.2 编译过程概述编译过程概述编译原理编译原理141词法分析词法分析词法分析的任务从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。将所识别出的单词用统一长度的标准形式(也称内部码)来表示,以便于后继语法工作的进行。因此,词法分析工作是将源程序中字符串变换成单词符号流的过程,词法分析阶段工作遵循的是语言的构词规则单词:逻辑上紧密相连的一组字符,这些字符具有集体含义。如:标识符、保留字(关键字或基本字)、算符、界符等。编译原理编译原理15例.某源程序片断如下:begin var sum,first,count:r
9、eal;sum:=first+count*10end.扫描后得到如下单词序列:1.保 留字var2.标识符sum3.保留字begin3.逗号,4.标识符first5.逗号,6.标识符count7.冒号:8.保留字real9.分号;10.标识符sum11.赋值号:=12.标识符first13.加号+14.标识符count15.乘号*16.整数1017.保留字end18.界符.编译原理编译原理16 2 2语法分析语法分析 语法分析的任务是在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号流分解成各类语法单位(语法范畴),如“短语”、“子句”、“句子(语句)”、“程序段”和“程序”。通通过
10、过语语法法分分析析确确定定整整个个输输入入串串是是否否构构成成一一个个语法上正确的程序。语法上正确的程序。编译原理编译原理17赋值语句赋值语句标识符标识符表达式表达式表达式表达式+表达式表达式表达式表达式标识符标识符整数整数标识符标识符:=:=表达式表达式*id1:=id2+id3*10 id1:=id2+id3*10 的语法树的语法树的语法树的语法树id1id1sumsumid2id2firstfirstid3id3countcount1010编译原理编译原理18id1:=id2+id3*10 的语法树的另一种形式::=:=id1id1+id2id2*id3id31010编译原理编译原理19
11、程序结构的递归表示表达式的表示:1.任何标识符是表达式。2.任何常数(整常数、实常数)是表达式。3.若表达式1和表达式2都是表达式,那么表达式1+表达式2表达式1*表达式2(表达式1)都是表达式。编译原理编译原理20 语句的表示:1.标识符:=表达式 是语句。2.while(表达式)do 语句和if(表达式)then 语句 else 语句都是语句。3.语义分析语义分析 语义分析阶段的任务是审查源程序有无语义错误。源程序中有些语法成分,按照语法规则去判断,它是正确的,但它不符合语义规则。比如使用了没有声明的变量;或者给一个过程名赋值;或者调用函数时参数类型不合适或者参加运的两个变量类型不匹配等等
12、。编译原理编译原理21比如下边的程序片段:int arr2,c;c=arr1*10;其中的赋值语句是符合语法规则的,但是因为没有声明变量arr1,而存在语义错。一般,语义分析的工作还包括类型审查,类型提升以及为代码生成阶段收集类型信息.比如审查每个算符是否实施于具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。又比如对实数用作数组下标的情况报告错误。又比如某些语言规定运算对象可被强制,那么当二目运算施于一个整型量和编译原理编译原理22 和一个实型量时,编译程序应将整型量自动转换成实型量而不能认为是源程序的错误,或者给出警告信息后将整型量自动转换成实型量。假如在赋值语句sum=
13、first+count*10中,算符*的两个运算对象分别是count和10,而count是实型变量,10是整型量.语义分析阶段进行类型审查之后,将整型量提升为实型量.在语法分析所得到的分析树上增加一个一目算符结点,这个结点的名称为inttoreal,表示进行将整型量变成实型量的语义处理,那么,前图的树变成下图所示:编译原理编译原理23如:类型检查。如:类型检查。:=id1+id2*id310inttorealinttorealsum:=first+count*10编译原理编译原理24 4.4.中间代码生成阶段中间代码生成阶段在进行了上述的词法分析,语法分析和语义分析阶段的工作之后,有的编译程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 翻译 人类 交流 思想 信息 工具 自然语言 世界上

限制150内