《编译原理课程教案》第一章︰编译原理概述.ppt

《编译原理课程教案》第一章︰编译原理概述.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理课程教案》第一章︰编译原理概述

* 第*页 1.3 编译程序的结构 * 第*页 * 第*页 几个概念 符号表:登记源程序中出现的名字以及名字的各种属性。 遍:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。 编译前端:主要指与源语言有关,与目标语言无关的部分,通常包括词法分析、语法分析、语义分析和中间代码生成,与机器无关部分的代码优化。 编译后端:指与目标机器有关的部分。如与机器有关的优化、目标代码生成。 * 第*页 编译阶段的组合 * 第*页 为什么要生成中间代码 * 第*页 (1) 记号(token) 当扫描程序将字符收集到一个记号中时,它通常是以符号表示这个记号;这也就是说,作为一个枚举数据类型的值来表示源程序的记号集。 编译程序中的主要数据结构: * 第*页 (2) 语法树(syntax tree) 如果分析程序确实生成了语法树,它的构造通常为基于指针的标准结构,在进行分析时动态分配该结构,则整棵树可作为一个指向根节点的单个变量保存。结构中的每一个节点都是一个记录,它的域表示由分析程序和之后的语义分析程序收集的信息。 * 第*页 (3) 符号表(symbol table) 这个数据结构中的信息与标识符有关:函数、变量、常量以及数据类型。符号表几乎与编译器的所有阶段交互:扫描程序、分析程序或将标识符输入到表格中的语义分析程序;语义分析程序将增加数据类型和其他信息;优化阶段和代码生成阶段也将利用由符号表提供的信息选出恰当的代码。因为对符号表的访问如此频繁,所以插入、删除和访问操作都必须比常规操作更有效。尽管可以使用各种树的结构,但杂凑表却是达到这一要求的标准数据结构。有时在一个列表或栈中可使用若干个表格。 * 第*页 (4) 常数表(literal table) 常数表的功能是存放在程序中用到的常量和字符串,因此快速插入和查找在常数表中也十分重要。但是,在其中却无需删除,这是因为它的数据全程应用于程序而且常量或字符串在该表中只出现一次。 * 第*页 (5) 中间代码(intermediate code) 根据中间代码的类型(例如三元式代码)和优化的类型,该代码可以是文本串的数组、临时文本文件或是结构的连接列表。对于进行复杂优化的编译器,应特别注意选择允许简单重组的表示。 * 第*页 (6) 临时文件(t e m p o r a ry file) 计算机过去一直未能在编译器时将整个程序保留在存储器中。这一问题已经通过使用临时文件来保存翻译时中间步骤的结果或通过“匆忙地”编译(也就是只保留源程序早期部分的足够信息用以处理翻译)解决了。 * 第*页 1.4 构造编译程序 一般生成编译程序的方法有: 1.直接用机器语言编写编译程序 2.用汇编语言编写编译程序 3.用高级语言编写编译程序 4.用编译工具自动生成:LEX(词法分析)与YACC(用于自动产生LALR分析表) 5.移植(同种语言的编译程序在不同类型的机器之间移植) * 第*页 本书构成 * 第*页 思考题 1. 什么是编译程序 ? 2. 编译过程分哪些阶段?各阶段的功能和任务是什么? 3. 写出pascal语言中字符集、单词、数据类型、各种表达式、语句和程序的组成 4. 查阅如下一种资料: (1) 与某种语言(如java、VB等)的编译程序有关 (2) 与编译程序的理论有关 (3) 与某种高级语言的发展有关 5. 用某种熟悉的语言的编译程序来理解层次和遍 * * 高级语言能够完成的功能,汇编语言和机器语言也能够完成,但高级语言是面向程序员的,接近于人的思维,不需要考虑内存地址,汇编语言和机器语言面向机器。计算机只能识别和执行机器语言,那么是谁,如何将高级语言翻译为能够在计算机上执行的机器语言呢? 这就是编译程序 * 数据结构是一门非常重要的课程 汇编语言,尽管大多数人并不会在实际中用汇编语言来进行开发 * 编译方法不仅适用于编译程序,也广泛适用于其他系统软件和应用软件的开发。从根本上看,编译程序和其他应用程序一样,都可以归结为处理数据和表格,故可将它当作一个大型的应用实例。通过本课程学习,达到提高应用程序设计能力和解决实际问题能力的目的。 如词法分析中的字符串匹配技术可以应用于文本编辑程序、信息检索、通讯程序、模式识别中 上下文无关文法和语法制导的翻译可以用于分析表达式,写打字程序,绘图程序等小系统。 代码优化技术更可以用于自己的结构化程序中,用于改进性能、优化已有的程序等 * 统计信息,用于优化 《编译原理实践及应用》 编译原理实践及应用 ----中南大学 肖健宇 * 第*页 教材及主要参考资料 教材:编译原理实践及应用,黄贤英,清华大学出版社 主要参考资料: (1) 编译原理,

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档