编译原理演示文稿 第一章语言处理程序的发展过程 1.1语言处理程序的发展过程 1.1.1概述 语言处理工作起源于计算机软件设计者描述的在数据 集合上的算法与运行该数据集合上的算法的计算机系统的差 异。而早期的所用机器语言编制的程序不存在这种差异,因 而不需要语言处理程序。随着汇编语言的产生这种差异也随 之产生,程序设计者用符号指令代替目标机器指令来说明其 算法,这样程序设计者的符号描述和目标机器的运行产生了 差异,解决这种差异的就是第一种语言处理程序——汇编程
编译原理演示文稿 第一章 语言处理程序的发展过程 1.1 语言处理程序的发展过程 1.1.1 概述 语言处理工作起源于计算机软件设计者描述的在数据 集合上的算法与运行该数据集合上的算法的计算机系统的差 异。而早期的所用机器语言编制的程序不存在这种差异,因 而不需要语言处理程序。随着汇编语言的产生这种差异也随 之产生,程序设计者用符号指令代替目标机器指令来说明其 算法,这样程序设计者的符号描述和目标机器的运行产生了 差异,解决这种差异的就是第一种语言处理程序——汇编程
序。到了二十世纪五十年代中、后期大批如 Fortran、 Algol、 Pasca的高级语言的相继出现,这样程序员描述的算法和实 际运行的机器之差异越来越明显,新的语言处理程序——编 译程序也就相继产生。随着计算机的应用的逐步扩大,软件 已不是单纯的描述数据集合上的算法的程序,它还包括各种 数据和文档。因此其程序设计语言发展到了八十年代,面向 对象的程序设计语言也就相继产生,如: Delphi、C++,从 而程序设计者描述的的有关计算机软件的特性及想法和在计 算机系统的具体实现的差异变得也越来越大,填补这种差异 的也是语言处理程序
序。到了二十世纪五十年代中、后期大批如ForTran、Algol、 Pascal的高级语言的相继出现,这样程序员描述的算法和实 际运行的机器之差异越来越明显,新的语言处理程序——编 译程序也就相继产生。随着计算机的应用的逐步扩大,软件 已不是单纯的描述数据集合上的算法的程序,它还包括各种 数据和文档。因此其程序设计语言发展到了八十年代,面向 对象的程序设计语言也就相继产生,如:Delphi、C++,从 而程序设计者描述的的有关计算机软件的特性及想法和在计 算机系统的具体实现的差异变得也越来越大,填补这种差异 的也是语言处理程序
语义问距 说明阳距 执行们距 应用國 执行國 应用國 说明 执行 图1-1语义间距、说明间距和执行间距
定义1.1 语言处理程序是一种可以填补说明间距或执行语言处理 程序间距的软体 对于应用领域的具体问题,可以用一种说明语言S(源语 )来描述,SL可用经变换成等价的说明语言L,L1经变换成 2,L2经变换成L3……,Ln经变换成L(目标机器语言)。 此时怎样来描述“说明间距”和执行间距”的概念呢?其 实相对于某个L来说,从应用领域的具体问题到S或L语义间 距都是说明间距,而从S或任一个L到SL都是执行间距
定义1.1 语言处理程序是一种可以填补说明间距或执行语言处理 程序间距的软件 对于应用领域的具体问题,可以用一种说明语言SL(源语 言)来描述,SL可用经变换成等价的说明语言L1,L1经变换成 L2,L2经变换成L3……,Ln经变换成TL(目标机器语言)。 此时怎样来描述“说明间距”和“执行间距”的概念呢?其 实相对于某个Li来说,从应用领域的具体问题到SL或Li语义间 距都是说明间距,而从SL或任一个Li到SL都是执行间距
语言处理程序主要提供了一种语言到另一种语言的变换, 由于高级语言使用方便,目前绝大多数用户使用高级语言设 计应用软件。因此解释和说明高级语言是如何运行的,对理 解语言处理程序来说是十分必要的。高级语言通过称为编译 程序的语言处理程序把它们翻译成称为目标语言的机器语言⌒ 或汇编语言一类低级语言,然后使用填补执行间距的软件得 到机器语言程序,运行机器语言程序获得最终结果
语言处理程序主要提供了一种语言到另一种语言的变换, 由于高级语言使用方便,目前绝大多数用户使用高级语言设 计应用软件。因此解释和说明高级语言是如何运行的,对理 解语言处理程序来说是十分必要的。高级语言通过称为编译 程序的语言处理程序把它们翻译成称为目标语言的机器语言 或汇编语言一类低级语言,然后使用填补执行间距的软件得 到机器语言程序,运行机器语言程序获得最终结果
1.1.2语言处理程序的工作 语言处理工作可以分为程序生成工作和程序执行工作 它们分别来填补说明间距和执行间距。 程序生成工作的作用是将某一应用领域的源程序生成 相应的目标程序。程序生成工作的目标是程序的自动生成。 程序生成器是一种软件系统,它接受被生成程序的说明书, 并根据说明书说明的规则自动生成可以运行的程序。如编 译程序、LEⅩ(词法分析程序生成器)都是程序生成器, 编译程序接受某程序设计语言格式的源程序生成目标机器 的用目标程序。LEX程序接受LX源程序生成词法分析 程序 程序执行工作的作用是将目标程序装入运行的计算机 系统,并按照程序的指令系列运行程序。目前目标语言是 低级语言,故通常是面向过程的。而源语言可以是面向问 题、面向对象或面向过程的
1.1.2 语言处理程序的工作 语言处理工作可以分为程序生成工作和程序执行工作, 它们分别来填补说明间距和执行间距。 程序生成工作的作用是将某一应用领域的源程序生成 相应的目标程序。程序生成工作的目标是程序的自动生成。 程序生成器是一种软件系统,它接受被生成程序的说明书, 并根据说明书说明的规则自动生成可以运行的程序。如编 译程序、 LEX(词法分析程序生成器)都是程序生成器, 编译程序接受某程序设计语言格式的源程序生成目标机器 上的用目标程序。LEX 程序接受LEX源程序生成词法分析 程序。 程序执行工作的作用是将目标程序装入运行的计算机 系统,并按照程序的指令系列运行程序。目前目标语言是 低级语言,故通常是面向过程的。而源语言可以是面向问 题、面向对象或面向过程的
例:根据平面几何的命题生成作图程序。在一个输入环境中 输入:已知三角形的二条角平分线相等,求证:该三角形是 等腰三角形。系统先检验其有效性,如:是否能构成二条角 平分线相等的等腰三角形等。在说明有效的前提下产生相应一 的若干画直线的语句的作图程序。最后证明其结论。 这样程序生成器引出了一个新的领域,它介于应用域 和目标程序域之间的域,称之为程序生成器说明域。从而说 明间距变为从应用域到程序生成器说明域之间的间距。由于 这一间距往往比从应用领域到目标程序域的间距要小得多, 这样间距的缩小提高了程序的可靠性。从而使设计者可程序 员为将生成的程序编写说明书更加容易。由程序生成器域到 目标程序域之间的大量工作量都是有生成器来完成的,减少
例: 根据平面几何的命题生成作图程序。在一个输入环境中, 输入:已知三角形的二条角平分线相等,求证:该三角形是 等腰三角形。系统先检验其有效性,如:是否能构成二条角 平分线相等的等腰三角形等。在说明有效的前提下产生相应 的若干画直线的语句的作图程序 。最后证明其结论。 这样程序生成器引出了一个新的领域,它介于应用域 和目标程序域之间的域,称之为程序生成器说明域。从而说 明间距变为从应用域到程序生成器说明域之间的间距。由于 这一间距往往比从应用领域到目标程序域的间距要小得多, 这样间距的缩小提高了程序的可靠性。从而使设计者可程序 员为将生成的程序编写说明书更加容易。由程序生成器域到 目标程序域之间的大量工作量都是有生成器来完成的,减少
了程序的测试工作、程序的正确性验证问题。如例1-1中用 不必考虑画直线的算法以及如何画直线保证其线段的相等 等问题。 程序执行工作的目标是完成程序的运行。从目标程序的说明 域到見机器行域仍存在一定的间距,完成其工作的程一 程序的执行主要包括 1装入目标程序 2取得一条语句或指令。 3.分析该语句以及确定所操作的数据集合。 4.完成该语句的含义,对定义的数据集合产生相应的变换
了程序的测试工作、程序的正确性验证问题。如例1-1中 用 户不必考虑画直线的算法以及如何画直线保证其线段的相等 等问题 。 程序执行工作的目标是完成程序的运行。从目标程序的说明 域到目标机器的执行域仍存在一定的间距,完成其工作的程 序称为程序的执行。 程序的执行主要包括: 1.装入目标程序。 2.取得一条语句或指令。 3.分析该语句以及确定所操作的数据集合。 4.完成该语句的含义,对定义的数据集合产生相应的变换
程序的执行工作的方式取决于目标代码的形式、运行的 目标机器和执行时的资源开销(所占用的时间和存储空间) 如果目标程序是机器语言代码,则目标程序的执行效率是 的。它比其它非机器语言的目标代码的执行要快得多。因此 目前的目标代码仍多数是类似于机器语言或汇编语言的一类 低级语言
程序的执行工作的方式取决于目标代码的形式、运行的 目标机器和执行时的资源开销(所占用的时间和存储空间)。 如果目标程序是机器语言代码,则目标程序的执行效率是高 的。它比其它非机器语言的目标代码的执行要快得多。因此 目前的目标代码仍多数是类似于机器语言或汇编语言的一类 低级语言
1.1.3语言处理程序的形式 语言的处理形式主要是由填补说明间距和填补执行间距 的程序两大类 言的翻译程序,如汇编程序、编译程序它填补了程序 设计语言到计算机系统的语言的执行间距。如反汇编程序 反编译程序则它填补了计算机系统的语言到程序设计语言执 间距。语言移植程序填补的是两个程序设计语言之间的说 明间距。由于预处理程序是将用户提供的源程序处理成另和 符号程序,它是在说明域之后的语义间距,则它提供了执 间距的一部分,但它不属于翻译程序。解释程序是将源程序 装入后逐步取语句并解释其含义执行之,因此它提供了执行 间距
1.1.3 语言处理程序的形式 语言的处理形式主要是由填补说明间距和填补执行间距 的程序两大类。 语言的翻译程序,如汇编程序、编译程序它填补了程序 设计语言到计算机系统的语言的执行间距。如反汇编程序、 反编译程序则它填补了计算机系统的语言到程序设计语言执 行间距。语言移植程序填补的是两个程序设计语言之间的说 明间距。由于预处理程序是将用户提供的源程序处理成另种 符号程序,它是在说明域之后的语义间距,则它提供了执行 间距的一部分,但它不属于翻译程序。解释程序是将源程序 装入后逐步取语句并解释其含义执行之,因此它提供了执行 间距