编译原理重点PPT第1章概述(08.3.3)3.pptVIP

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

源程序中的错误有语法错误和语义错误两种。 语法错误:源程序中不符合语法(或词法)规则的错误,它们可在词法分析或语法分析时检测出来。 语义错误:源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的语义错误要在运行时才能检测出来。通常包括:说明错误、作用域错误、类型不一致等等。 1.2 编译程序的工作过程 ——出错处理 1.3 编译程序的结构 1.4.1 遍(趟,趟程) 所谓一趟或一遍是指一个编译程序在编译时刻把源程序或源程序的等价物(中间程序)从头到尾扫描一遍并做有关的加工处理,生成新的源程序的中间形式或目标程序。 根据编译程序在完成翻译任务的过程中需要对源程序或其中间等价物扫描的遍数,可以把编译程序分为单遍扫描的编译程序(只需扫描一遍)和多遍扫描的编译程序(需扫描多遍)。 1.4 编译程序的组织形式 单遍扫描的编译程序 多遍扫描的编译程序 例如,可以把词法分析作为第一遍;语法分析和语义分析作为第二遍;代码优化和存储分配作为第三遍;代码生成作为第四遍:从而构成一个四遍扫描的编译程序。 每遍完成上述某个阶段的一部分、全部或几个阶段的工作,并将结构存入外存储器里,作为下一遍的输入。 那么一个编译程序究竟应分成几遍,这和源程序语言的结构与目标机器的特征有关。 分多遍完成编译过程的优点:可以使整个编译程序的逻辑结构更清晰,能减少对主存容量的要求,使优化工作更为充分,并为可移植创造条件。缺点:遍数多势必增加读写中间文件的次数,从而消耗过多的时间。 总之,对一个具体的编译器,要确定用几遍扫描来完成,需要综合考虑各种因素,从中取得最佳方案。 前端主要由与源语言有关但与目标机器无关的那些部分组成,如词法分析、语法分析、语义分析与中间代码生成及部分代码优化工作。 后端主要包括编译中与目标机器有关的那些部分,如与目标机有关的代码优化和目标代码生成等。后端不依赖于源语言而仅依赖于中间语言。 可以通过改变编译程序的后端来实现编译程序的移植。 1.4 编译程序的组织形式 编译的前端和后端 如果宿主机的内存空间有限,则需要外存辅助,这种情况下,编译程序可以按照下面的方式组织。 首先在内存中开辟三个覆盖区(共享区):一个存放最大的Comp1;一个存放输入对象(扫描对象);一个存放加工结果(部分处理结果)。 然后在外存开辟编译程序的暂存区和输入对象/加工结果的存放区。并且由“编译总控程序”负责控制和调度编译程序的各遍。 外存 内存 编译总控 Comp1 扫描对象 部分处理结果 Comp1 Comp2 Compn 加工结 果 … 输入对 象 覆盖 编译程序组织方式 构造编译程序可以用机器言语、汇编语言和高级语言。 高级语言的自编译性:一个语言可以用来编写自己的编译程序。 1.5 编译程序的构造及相关技术 P5 1.5.1 高级语言的自编译性 ——通过一系列自展途径而形成编译程序的过程。 先对语言的核心部分构造一个小小编译程序(可用低级语言实现),再以它为工具构造一个能够编译更多语言成分的较大编译程序。如此扩展下去,越滚越大,最后形成所期望的整个编译程序。 1.5 编译程序的构造及相关技术 1.5.2 编译的自展技术 ——将一个机器(宿主机)上的一个具有自编译性的高级语言编译程序移植到另一个机器(目标机)上。 利用A机器上的高级语言L编写能在B机器上运行的高级语言L的编译程序。 1.5 编译程序的构造及相关技术 1.5.3 编译的移植 1.5 编译程序的构造及相关技术 1.5.2编译程序的自动化 在编译程序自动化进程中,开发早且应用广泛的是词法分析程序生成器和语法分析程序生成器。 词法分析程序生成器:LEX。它输入的是正规表达式,输出的是词法分析程序。LEX的基本思想是由正规表达式构造有穷自动机。 语法分析程序生成器:基于LALR(1)文法的YACC(Yet Another Compiler Compiler)。它接受LALR(1)文法,生成一个相应的LALR(1)分析表以及一个LALR(1)分析器,而且,YACC生成的语法分析器可以和扫描器连接。 第1章内容小结 · 什么是编译程序 · 编译方式的特点 · 解释方式的特点 · 编译方式与解释方式的根本区别 · 编译程序的工作过程 · 编译程序的结构 · 遍与编译程序的组织形式 · 编译程序的构造方法 下章内容简介 · 文法的形式定义与文法分类 · 语言的形式定义 · 为语言构造文法 · 与语法分析有关的概念 · 文法的实用限制 1.判断下面的陈述是否正确。 (1)编译程序的五个

文档评论(0)

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

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

1亿VIP精品文档

相关文档