欢迎来到天天文库
浏览记录
ID:41119026
大小:173.50 KB
页数:13页
时间:2019-08-16
《编译原理 第十三章 编译程序实现的途径》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第13章 编译程序的构造第十三章编译程序实现的途径课前索引 【课前思考】 在第2章我们已经用T型图表示PL/0语言编译程序的功能,用T型图表示一个编译程序的实现功能,容易弄清源语言、目标语言和书写语言3者之间的关系。本章将介绍基于LALR(1)的语法分析程序的生成器YACC和基于有限自动机理论的词法分析程序的生成器LEX。因此,建议学员学习本章前复习第3章和第7章的内容。【学习目标】 ◇掌握编译程序的书写语言与T型图 ◇学会用编译程序的自展技术实现一个编译程序 ◇了解什么是编译程序的移植 ◇弄清什么是交叉编译 ◇初步学会使用编译程序的构造工具即: 基于LA
2、LR(1)的语法分析程序的生成器YACC和基于有限自动机理论的词法分析程序的生成器LEX构造编译程序的思想和步骤。【学习指南】 本章的学习内容主要是对编译程序构造的几种不同途径,到底采用那种途径,要根据实现的具体环境决定,学员学习时要掌握如何更好地利用已经有的软件资源,能高质量的完成一个编译程序的开发。【难重点】 重点: ◇学会用T型图描述实现编译程序的自展技术 ◇弄清交叉编译与编译程序移植的概念 ◇理解编译程序的构造工具YACC和LEX的实现原理 ◇初步学会YACC和LEX的使用方法 难点:用T型图描述实现编译程序的自展技术时,往往对多层T型图的结构理解不
3、清,其原因是没有把一个单层T型图看做是一个程序,而这个程序的功能把一种语言翻译成另一种语言。【知识点】第13章 编译程序的构造由于一个编译程序的设计与实现,不仅要考虑源语言与目标语言,还要考虑实现该编译程序的书写语言,在60年代初,几乎所有的编译程序都是用机器语言或汇编语言书写,而这种低级语言书写的编译程序多为手工构造,可以加工细致,目标程序的效率高,但开发时间长,可读性差,不易调试,不易移植,可维护性和可扩充性更差,可靠性也不高,可以说是效率极低。70年代开始逐步有不少编译程序是用高级语言编写,进而又不断推出编译程序的构造工具,这些技术的发展对编译程序的实现带来极大的方
4、便,不仅缩短了开发周期,提高了开发效率,而且大大增加了可靠性、可移植性、可维护性和可扩充性。本章将介绍编译程序的自展技术、交叉编译、移植和一些编译程序开发工具的应用。13.1编译程序的书写语言与T型图一个编译程序涉及到三个方面的语言,即源语言、目标语言和编译程序的书写语言。为了描述方便通常用T型图来表示这三个方面的语言。T型图的左上角表示源语言,右上角表示目标语言,底部表示书写语言(实现语言),如图13.1。图13.1编译程序的T型图如果一个编译程序的源语言是X,目标语言是Y,书写语言是Z,我们把该编译程序记作,那么用T型图表示如图13.2。图13.2的T型图设计一个编译
5、程序时必须考虑上述三个方面语言的性质,因为它们对编译程序的结构和具体实现途径都有很大影响,源语言的设计和定义往往影响到编译程序的结构。目标语言和目标机的性质决定着源语言到目标语言的映射和代码生成的策略,而实现语言的性质和实现环境及开发工具的应用对编译程序的可读性,可移植性和可维护性及可扩充性等有很重要的关系。 如果一个编译程序是用高级语言或编译程序的构造工具开发的,那么它的可读性、可移植性和可维护性等将会大大提高。而用汇编语言实现,这些性能都会得到相反的结论。Ø第13章 编译程序的构造13.2编译程序的自展技术由于一个编译程序的功能是把某种高级程序设计语言的源程序翻译成
6、目标机的机器语言(或汇编语言),目标机只能执行它自己的机器语言,因此最早的第一个高级程序设计语言的编译程序必须用目标机的汇编语言或机器语言书写,而一个结构较复杂庞大的高级语言的编译程序,若完全用汇编语言或机器语言书写(如上所述)会有种种不便之处,但用自展技术则可以很好地解决这个问题。结合T型图的原则是: ①下面的T型图的左右上角两个语言分别与上面左右两个T型图的底部语言相同。 ②上面左右两个T型图的左右上角的语言必须分别相同。自展的思想是先用目标机的汇编语言或机器语言书写源语言的一个子集的编译程序,然后再用这个子集作为书写语言,实现源语言的编译程序,如果把这个过程根据
7、情况分成若干步,像滚雪球一样直到生成预计源语言的编译程序为止,我们把这样的实现方式称为自展技术。例如,在目标机A上要实现L语言的编译程序,我们可以把L划分成核心部分为L1。 第1步:我们先用A机器的汇编语言或机器语言A书写L1的编译程序,表示为,其T型图如图13.3。图13.3的T型图这就相当于在A机器上已有了一个L1语言的编译程序。L1已属高级程序设计语言。 第2步:我们可以再用L1书写L语言的编译程序为,其T型图如图13.4所示。图13.4的T型图第3步:由于我们最终要求得到,目前我们已经有了第1步和第2步所得到的两个
此文档下载收益归作者所有