- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * 第*页 编译程序中的主要数据结构 (续) Token表 符号表 常数表 错误信息 语法树 中间代码表 临时文件 目标代码表 * 第*页 (1) Token表 当扫描程序将字符收集到一个记号中时,它通常是以符号表示这个记号;这也就是说,作为一个枚举数据类型的值来表示源程序的记号集。 (2) 语法树(syntax tree) 如果分析程序确实生成了语法树,它的构造通常为基于指针的标准结构,在进行分析时动态分配该结构,则整棵树可作为一个指向根节点的单个变量保存。结构中的每一个节点都是一个记录,它的域表示由分析程序和之后的语义分析程序收集的信息。 编译程序中的主要数据结构介绍: * 第*页 (3) 符号表(symbol table) 这个数据结构中的信息与标识符有关:函数、变量、常量以及数据类型。符号表几乎与编译器的所有阶段交互:扫描程序、分析程序或将标识符输入到表格中的语义分析程序;语义分析程序将增加数据类型和其他信息;优化阶段和代码生成阶段也将利用由符号表提供的信息选出恰当的代码。因为对符号表的访问如此频繁,所以插入、删除和访问操作都必须比常规操作更有效。尽管可以使用各种树的结构,但杂凑表却是达到这一要求的标准数据结构。有时在一个列表或栈中可使用若干个表格。 * 第*页 (4) 常数表(literal table) 常数表的功能是存放在程序中用到的常量和字符串,因此快速插入和查找在常数表中也十分重要。但是,在其中却无需删除,这是因为它的数据全程应用于程序而且常量或字符串在该表中只出现一次。 (5) 中间代码(intermediate code) 根据中间代码的类型(例如三元式代码)和优化的类型,该代码可以是文本串的数组、临时文本文件或是结构的连接列表。对于进行复杂优化的编译器,应特别注意选择允许简单重组的表示。 * 第*页 (6) 目标代码(intermediate code) 存放最终生成的目标代码,该代码最终是文本形式的文件。 (7) 临时文件(t e m p o r a ry file) 计算机过去一直未能在编译器时将整个程序保留在存储器中。这一问题已经通过使用临时文件来保存翻译时中间步骤的结果或通过“匆忙地”编译(也就是只保留源程序早期部分的足够信息用以处理翻译)解决了。 * 第*页 1.3 编译程序的设计 构造编译程序要掌握以下几方面的内容: 源语言:理解其结构和含义 目标语言:必须清楚硬件的系统结构和指令的格式等 编译方法 * 第*页 1.3 编译程序的构造 一般实现编译程序的方法有: 1.直接用机器语言编写编译程序 2.用汇编语言编写编译程序 注:编译程序核心部分常用汇编语言编写 3.用高级语言编写编译程序 注:这是普遍采用的方法 4.自编译 5.用编译工具自动生成:LEX(词法分析)与YACC(用于自动产生LALR分析表) 6.移植(同种语言的编译程序在不同类型的机器之间移植) * 第*页 本书构成及编译程序框架 * 第*页 1.4 编译技术的发展 1954年至1957年间,FORTRAN语言及其编译器的开发。花了18个人年。 几乎与此同时,Noam Chomsky开始研究语言文法(grammar,结构规则)的难易程度以及识别它们所需的算法来为语言分类。 在6 0年代和7 0年代进行的分析问题(parsing problem,用于限定上下文无关语言的识别的有效算法)的研究。 有穷自动机(finite automata)和正规式(regular expression) 的研究与乔姆斯基的研究几乎同时开始,引出了表示程序设计语言的单词的符号方式。 接着又深化了生成有效的目标代码的方法,这就是最初的编译器,实际上应称作代码改进技术(code improvement technique)。 当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器的自动构造。Lex与Yacc。 在70年代后期和80年代早期,大量的项目都关注于编译器其他部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功。 * 第*页 1.4 编译技术最近的发展 与复杂的程序设计语言的发展结合在一起。如用于函数语言编译的Hindley-Milner类型检查的统一算法。 编译器已成为基于窗口的交互开发环境(IDE)的一部分,IDE的标准并没有多少,但已对标准的窗口环境进行了开发。近年来对此进行了大量研究,但是基本的编译器设计近20年来没有多大的改变,现在正迅速地成为计算机科学课程中的中心一环。 由多处理机的发展以及对并行处理的要求,最近的研究方向是并行编
您可能关注的文档
- 第二十六章26.1.1反比例函数(300KB).ppt
- 第二十六章26.2实际问题与反比例函数(348KB).ppt
- 第二十六章反比例函数26.2实际问题与反比例函数(1085KB).ppt
- 第二十六章反比例函数易错课堂一反比例函数(1499KB).ppt
- 第二十六章反比例函数专题课堂一反比例函数图象的几何应用(1766KB).ppt
- 第二十七章27.2.3相似三角形应用举例(427KB).ppt
- 第二十七章(448KB).ppt
- 第二十七章第1课时平行线分线段成比例(372KB).ppt
- 第二十七章节课件(318KB).ppt
- 第二十七章相似27.1图形的相似(1487KB).ppt
- 2025年市总工会党组书记、市委组织部部长生活会“四个带头”个人对照检查发言材料2篇(含上年度整改+个人情况、个人事项+典型案例).docx
- 2025年部编版小学六年级下册《道德与法治》第四单元 让世界更美好第10课 我们爱和平教学课件.pptx
- 公司领导班子2025年围绕“四个带头”主题检视问题整改落实方案与组织生活会批评意见(20条)2篇文.docx
- 教育系统党组班子2025年对照“四个带头”含意识形态、以典型案例举一反三解析检视材料【2篇文】.docx
- 2025年国有企业领导班子、学校副校长生活会“四个带头”方面对照个人检视发言材料2篇文(附:上年度整改情况、典型案例解析).docx
- 2025年生活会“四个带头”个人对照检查材料2篇文(含对其他领导批评意见,个人公开事项申报、意识形态).docx
- 2025年国有企业党委书记、领导班子生活会“四个带头”方面对照检查发言材料2篇文(上年度整改情况).docx
- 乡镇领导班子、市委组织部常务副部长2025年对照“四个带头”含违纪行为为典型案例的剖析与反思检视剖析材料{2篇文}.docx
- 市委社会工作部2025年生活会领导班子对照检视发言材料2篇文(含以案为鉴,深刻反思存在问题、反面典型案例举一反三解析、其他需要说明情况).docx
- 2025年民主生活会、组织生活会批评意见(20条)与市直单位领导班子“四个带头”对照检查材料【含上年度查摆问题整改落实情况】2篇文.docx
文档评论(0)