- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理复习资料
教材资料
授课顺序:1
教学目的:正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。
教学重点与难点:
编译程序工作的基本过程及其各阶段的基本任务,编译程序总框。
授课学时:2学时
教学方式:多媒体讲授
教学内容:
第一章 引论
1.1 什么是编译程序
一、基本概念
1、翻译程序:是指这样的一种程序,它能够把一种语言程序(源语言程序)转换成另一种功能等价的语言程序(目标语言程序)。
2、编译程序是一种翻译程序,其源程序是高级语言,目标语言程序是低级语言。通常是一次性翻译方式。如TC等高级语言编译程序。
3、解释程序也是一种翻译程序,它与编译程序的区别:立即执行源程序,通常是逐句翻译执行。如BASIC、SQL、JAVA的BYTECODE解释程序等。
二、高级语言程序的处理过程
高级程序设计语言程序的典型处理过程如下图所示:
1.2编译过程和编译程序结构
一、编译过程的阶段划分
一般编译程序的工作过程按阶段进行,每个阶段将源程序从一种表示形式转换成另一种表示形式。典型的阶段划分方法是将整个编译过程分为如下六个阶段:
1、词法分析:
任务:对构成源程序的字符串进行扫描和分解,识别出单词(如标识符等)符号。
输入:源程序
输出:单词符号序列
例子:有待分析源程序:
main()
{
int x=10,y;
}
词法分析后的输出:
1)保留字: main
2)界符:左圆括号 (
3)界符:右圆括号)
4)界符:左大括号{
5)保留字:int
6)标识符:x
7)运算符:=
8)常数:10
9)标识符:y
10)界符:;
11)界符:右大括号 }
2、语法分析
任务:根据语言的语法规则对单词符号串(符号序列)进行语法分析,识别出各类语法短语(可表示成语法树的语法单位),判断输入串在语法上是否正确。
输入:单词序列
输出:语法分析后的单词序列
3、语义分析
任务:按语义规则对语法分析器归约出的语法单位进行语义分析,审查有无语义错误,为代码生成阶段收集类型信息,并进行类型审查和违背语言规范的报错处理。
输入:语法分析后的单词序列
输出:语义分析后带语义信息的单词序列
4、中间代码生成(并非所有的编译程序都包含此阶段)
任务:将语义分析得到的源程序变成一种结构简单、含义明确、易生成、易翻译成目标代码的内在代码形式。常用的中间代码形式是四元式(算符,运算对象1,运算对象2,结果)。
输入:语义分析后的单词序列
输出:中间代码
5、代码优化(可放到目标代码生成阶段后)
任务:对中间代码或目标代码进行变换改造等优化处理,使生成的代码更高效。
输入:中间代码或目标代码
输出:优化后的中间代码或目标代码
6、目标代码生成
任务:将中间代码生成特定机器上的绝对或可重定位的指令代码或汇编指令代码。
输入:语义分析后的单词序列或优化后的中间代码
输出:目标代码
二、编译程序结构
上述六个阶段的任务分别由六个模块来完成。一个完整的编译程序还应包括表格管理和出错处理程序。典型编译程序结构框图如下:
三、编译阶段的组合
1、前后端组合法
编译前端:与源语言有关与目标机无关的部分(第1-4阶段)。
编译后端:与目标机有关的部分(第6阶段)
注:第5阶段置前或后端都可以。组合方式:
1)同一源语言的编译前端+不同后端=不同机器上同一源语言的编译程序;
2)不同源语言的编译前端生成同一种中间语言+使用共同后端=同一机器上不同语言的编译程序。
2、遍组合法
遍/趟:对源程序或源程序的中间结果从头到尾扫描一次称为一遍。每一遍扫视完成一个或几个阶段的工作。一个编译程序可由一遍或多遍完成.实际编译程序分遍的主要参考因素是源语言与目标机器的特征。
1.3编译技术和软件工具
一、编译技术的发展
1950S早期:算术工式译成机器代码。
1950S中期:FORTRAN编译系统。
1950S末期:自动生成工具出现,如:LEX、YACC。
1960S:自展技术。
1971年:用自展技术生成PASCAL编译程序。
现代:并行编译技术。
二、编译技术与软件工具
1、先进的软件开发技术和软件工具能提高编程效率、缩短调试时间。
2、编译程序本身是一种软件工具。
3、大部分软件工具的开发常用到编译技术和方法。
4、进行源程序处理的软件工具实质上都在不同程度上用到了编译
文档评论(0)