预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共48页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编译原理实践及应用教材及主要参考资料C语言程序为什么要学习编译原理?《编译原理》课程在计算机科学中的重要地位《编译原理》课程在计算机科学中的地位学习本课程的目的和任务本课程的特点学习方法编译技术的发展编译器设计最近的发展编译技术的应用引论本章要求机器语言(machinelanguage) C70600000002 汇编语言(assemblerlanguage) MOVX,2 高级语言(high-levellanguage) X=2计算机中的语言层次和转换关系高 级 语 言1.1什么叫编译程序1.1什么叫编译程序解释程序对编译程序的一些说明编译程序的分类与编译程序相关的程序编译原理是讨论编译程序设计的基本理论、基本概念、基本方法 1.2编译过程概述第一阶段:词法分析第二阶段:语法分析第三阶段:语义分析和中间代码生成第四阶段:代码优化第五阶段:目标代码的生成1.3编译程序的结构1.3编译程序的结构(续)编译阶段的组合为什么生成中间代码1.3编译程序的结构(续)编译程序中的主要数据结构(3)符号表(symboltable) 这个数据结构中的信息与标识符有关:函数、变量、常量以及数据类型。符号表几乎与编译器的所有阶段交互:扫描程序、分析程序或将标识符输入到表格中的语义分析程序;语义分析程序将增加数据类型和其他信息;优化阶段和代码生成阶段也将利用由符号表提供的信息选出恰当的代码。因为对符号表的访问如此频繁,所以插入、删除和访问操作都必须比常规操作更有效。尽管可以使用各种树的结构,但杂凑表却是达到这一要求的标准数据结构。有时在一个列表或栈中可使用若干个表格。(4)常数表(literaltable) 常数表的功能是存放在程序中用到的常量和字符串,因此快速插入和查找在常数表中也十分重要。但是,在其中却无需删除,这是因为它的数据全程应用于程序而且常量或字符串在该表中只出现一次。 (5)中间代码(intermediatecode) 根据中间代码的类型(例如三元式代码)和优化的类型,该代码可以是文本串的数组、临时文本文件或是结构的连接列表。对于进行复杂优化的编译器,应特别注意选择允许简单重组的表示。 (6)临时文件(temporaryfile) 计算机过去一直未能在编译器时将整个程序保留在存储器中。这一问题已经通过使用临时文件来保存翻译时中间步骤的结果或通过“匆忙地”编译(也就是只保留源程序早期部分的足够信息用以处理翻译)解决了。 1.4构造编译程序1.4构造编译程序(续)本书构成思考题1