编译原理第十三章编译程序实现的途径.docVIP

编译原理第十三章编译程序实现的途径.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理第十三章编译程序实现的途径

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

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档