网站大量收购闲置独家精品文档,联系QQ:2885784924

PL编译程序的实现.pptVIP

  1. 1、本文档共110页,可阅读全部内容。
  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文档。上传文档
查看更多
温故知新 编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念 编译器从逻辑上可以分成若干阶段,每个阶段把源程序从一种表示变换成另一种表示 遍 单遍扫描与多遍扫描:每一遍的扫视可完成上述一个阶段或多个阶段的工作。每一遍的输入都是上一遍的输出,第一遍的输入是源程序正文,最后一遍的输出是目标代码。 单遍与多遍的比较: 遍数多:编译器结构清晰,但时间效率不高 遍数少:编译速度快,但对机器的内存要求高 遍数的确定:主要因素是源程序和机器(目标机)的特征。 前端和后端: 把编译过程分成前端和后端两部分 前端:只依赖于源程序,独立于目标机器 (生成中间代码) 后端:依赖于目标机器,与源程序无关,只与中间语言有关(从中间代码生成目标代码) 好处:提高开发编译器的效率 取一个编译器的前端,重写它的后端以产生同一源语言在另一机器上的编译器 不同的前端使用同一个后端,从而得到一个机器上的几个编译器(采用同一中间语言) 下列程序中哪些不是编译程序的组成部分? A 词法分析 B代码读入 C 语法分析 D代码生成 对下列错误信息,请指出可能是编译的哪个阶段报告的。 else没有匹配的if 数组下标越界 声明和使用的函数没有定义 零做除数 在数中出现非数字字符 判断 高级语编写的源程序都必顺通过编译,产生目标代码后才能运行. 多遍扫描的编译程序的多遍是指多次重复读源程序. 就执行速度而言,编译后再执行程序比解释执行程序慢. 注意 上述编译过程的阶段划分只是一种典型的分法,事实上并不是所有的编译程序都分成这样几个阶段的。 有些编译程序对优化没有什么要求,优化阶段就可省去。在某些情况下,为了加快编译速度,中间代码产生阶段也可以去掉。有些最简单的编译程序是在语法分析的同时产生目标代码。但是,多数实用编译程序的工作过程大致都像上面所说的那六个阶段。 其它 编译程序的另外两个重要的工作是表格管理和出错处理。 编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作称之为出错处理。 现代编译技术必须面对应用需求和目标体系结构的多样化 高性能计算(High Performance Computing) 指令级并行(Instruction Level Parallelism) 线程级并行(Thread Level Parallelism) 处理机级并行(Processor Level Parallelism) 系统级并行(Thread Level Parallelism) 嵌入式计算(Embedded Computing) 需求多样性(实时、资源限制、功耗、多目标) 其它 多媒体计算(Multimedia Computing) 网络计算(Network Computing) …… 编译技术重要方向 并行编译技术– 面向高性能计算 交叉编译技术– 面向嵌入式计算 第2章 PL/0编译程序的实现 本章目的:以PL/0编译程序为实例,学习编译程序实现的基本步骤和相关技术 1 PL/0编译程序的结构 2 PL/0编译程序的分析工作 (词法,语法和语义)实现 3 PL/0编译程序的错误处理方法 4 目标代码生成和类pcode代码解释器 PL/0语言描述 它由世界著名计算机科学家N.Wirth编写 PL/0语言:PASCAL语言的子集,功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分 它充分体现一个高级语言编译程序实现的基本方法和技术 本书提供了两种形式的PL/0语言的语法描述: 语法图:用语法图描述语法规则的优点是直观、易读 EBNF PL/0的非形式化描述 数据类型只有整型 标识符的有效长度是10,以字母开始的字母数字串 数最多为14位 作用域规则(内层可引用包围它的外层定义的标识符) 过程无参,可嵌套定义(最多三层),可递归调用 语句类型: 赋值语句,if...then..., while...do..., read, write, call, 复合语句(begin... end), 说明语句( const..., var..., procedure…) 13个保留字:if, then, while, do, read, write, call, begin, end, const, var, procedure, odd 1. PL/0编译程序的结构

文档评论(0)

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

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

1亿VIP精品文档

相关文档