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