- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计科班编译原理教案
PAGE
PAGE 92
吉首大学信息科学与工程学院
编
译
原
理
教
案
授课教师:莫礼平
授课班级:2012计科班
一、课程内容
编译原理作为计科专业的主干课程,主要介绍高级语言编译器构造的基本原理、设计方法、实现技术和构造工具的课程。本学期在51个课时中,讲授该课程的主要内容包括:
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
教学目的:让学生了解编译程序的概念,掌握编译过程各阶段的任务和编译程序的结构;了解程序设计语言规范和编译程序构造的几种实用技术。
教学重点:编译过程各阶段任务
教学难点:T型图、实用编译技术
授课学时:3学时
教学方式:多媒体讲授
教学内容与教学过程:
第一章 引论
什么是编译程序
一、基本概念
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、前后端组合法
编译前端:与源语言有关与目标机无关的部
文档评论(0)