编译原理第一章.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:44 大小:203KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理第一章.ppt

编译原理第一章.ppt

预览

免费试读已结束,剩余 34 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编译技术课程介绍了解编译程序的结构和组成;如何设计一个编译程序(或其中的一部分);掌握本课程中一些经典的算法思想;掌握本课程中的一些理论上的数学模型;第1章概论计算机系统包括硬件系统和软件系统两部分。其中软件又可分为:各种程序设计语言都有自己的语法和语义体系,其编译程序根据这种语言的语法和语义将其翻译成机器能够接受的机器语言。然而,从本质上来说。程序设计语言是按一定规则排列的符号集合,而编译程序就是把这些符号集合变成机器指令的转换器,编译程序又称为编译器。程序设计语言汇编语言:为了便于记忆人们将机器的指令一一对应于一个英文的助记符,从而发明了汇编语言。因此,汇编语言就是计算机符号形式的指令系统。它是机器语言的符号化表示。高级语言:由表达各种不同意义的“关键字”和“表达式”按一定的语法语义规则翻译程序(翻译器):是能够将A语言程序翻译成为与之相等的的B语言程序的程序。其中A语言称为源语言,其编写的程序叫源程序。B语言称为目标语言,目标语言书写的程序叫目标程序。翻译程序可分为三类:汇编程序、解释程序和编译程序。解释程序编译程序编译程序需预处理的源程序●需要说明的是编译程序与源语言以及计算机是紧密相关的。任何一个具体的编译程序都是某一特定机器上的关于某一特定语言的编译程序。另外,解释程序对源程序的解释过程也有两种方式:直接解释执行把源程序先转换成以单词为单位的中间代码程序,然后对中间代码程序逐句解释执行。1.4编译程序的结构也就是说字母或符号一旦在程序的说明部分进行了说明就具有了独立的意义,从而成为单词。不过,表达式不是单词,因为它不是最小的语法单位。属性是指单词和特性的有关信息。单词最基本的属性就是单词的名字,还有其他属性。属性字是指单词的一种机内表示。它有两个特点,两个部分。两个特点:1)长度统一。可把所有单词的机内表示统一成一个机内字。如32字2)是刻划了单词的属性。包括两个两个部分:1)单词的内部表示部分,即单词属于哪一类。2)单词的属性值。即单词本身的值或其指针。表格管理词法分析又例.某源程序片断如下:beginvarsum,first,count:real;sum:=first+count*10end.语法分析赋值语句id1:=id2+id3*10的语法树的另一种形式根据语法结构分析其含义,并用某种中间语言表示,也就是说生成中间代码或直接生成目标代码。中间语言可以是三元式、四元式或逆波兰式。三元式的定义:(op,a1,a2)其中op为操作码或成为运算符,a1和a2为操作数或成为运算分量。上例中三元式表示如下:x:=2*a+b①(*,2,a)②(+,①,b)其中①表示①式中的结果③(:=,②,x)如:类型检查。中间代码生成如:源程序sum:=first+count*10生成的四元式可以是:(inttoreal10-t1)(*id3t1t2)(+id2t2t3)(:=t3-id1)为了提高目标程序的质量而进行的以提高运行效率、节省存储空间为目的的工作。可分两类:1)与机器有关的优化,涉及如何分配寄存器,在生成目标代码时进行。2)与机器无关的优化,包括局部优化,循环优化等。此处的优化主要指对中间代码的优化。(+id2t2id1)目标代码生成优化后的代码:(*id310.0t1)(+id2t1id1)编译程序的逻辑结构一般来说编译程序都要进行分析和综合两方面的工作。分析阶段的任务:根据源语言的定义,对源程序进行词法、语法、语义分析,从而把源程序转换成为某种中间代码程序。综合阶段的任务:从分析阶段得到中间代码,根据源语言与目标语言的对应关系进行综合加工,建立与源程序等价的目标程序。编译程序的趟(遍)对源程序或其等价的中间语言程序从头到尾扫描并完成规定任务的过程。每一遍扫视可完成上述五个阶段工作中的一个阶段或多个阶段的工作。于是,编译程序可分为单趟(遍)扫描或多趟(遍)扫描。单趟扫描:把上述五个阶段的工作结合在一起,对源程序程序从头到尾扫描一趟来完成编译的各项工作,把源程序翻译成可在目标机器上运行的目标程序。其框图结构为:缺点:编译程序复杂、占用的存储空间大。多趟扫描:把上述的五个阶段的工作进行结合后分别单独成趟,从而经过对源程序从头到尾的多趟扫描,把源程序转换成目标程序。优点:节省存储空间、便于分工。缺点:编译程序总长度长、各趟工作有重复、效率低下。以下以五趟扫描为例,其结构框图为:1.5编译程序的开发并非所有的高级语言都适合编写编译程序系统编译语言(系统程序设计语言):人们通常把编写编译程序或其他系统软件的高级语言称为系统编译语言。如:PASCAL、C语言等为系统编译语言。而FORTRAN