PL编译程序的实现.pptVIP

  • 28
  • 0
  • 约1.97万字
  • 约 110页
  • 2017-02-04 发布于江苏
  • 举报
温故知新 编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念 编译器从逻辑上可以分成若干阶段,每个阶段把源程序从一种表示变换成另一种表示 遍 单遍扫描与多遍扫描:每一遍的扫视可完成上述一个阶段或多个阶段的工作。每一遍的输入都是上一遍的输出,第一遍的输入是源程序正文,最后一遍的输出是目标代码。 单遍与多遍的比较: 遍数多:编译器结构清晰,但时间效率不高 遍数少:编译速度快,但对机器的内存要求高 遍数的确定:主要因素是源程序和机器(目标机)的特征。 前端和后端: 把编译过程分成前端和后端两部分 前端:只依赖于源程序,独立于目标机器 (生成中间代码) 后端:依赖于目标机器,与源程序无关,只与中间语言有关(从中间代码生成目标代码) 好处:提高开发编译器的效率 取一个编译器的前端,重写它的后端以产生同一源语言在另一机器上的编译器 不同的前端使用同一个后端,从而得到一个机器上的几个编译器(采用同一中间语言) 下列程序中哪些不是编译程序的组成部分? 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)

1亿VIP精品文档

相关文档