资源描述
《编译原理》教学大纲
一、课程概述
“编译原理”主要是以中小型高级程序设计语言为研究对象,介绍从高级语言程序到低级目标程序的主要翻译过程、以及编译器的构造原理和实现方法。
程序设计语言编译器的构造原理和实现方法是软件的核心技术之一,“编译原理”属于计算机科学与应用专业本科教学重要专业课。其的前置课程包括“高级程序设计语言”、“数据结构”、“汇编语言”等。
这门课程重点是培养学生在掌握编译的基础知识和基本方法的基础上,同时具有分析和设计中小型编译器的能力,并提高对高级程序设计语言的理解能力和程序设计与应用能力;因此它对学生计算机业务的发展具有极其重要的意义。
二、课程目标
知道“编译原理”这门课程的性质、地位,知道这门课程的研究范围、分析框架、研究方法和应用领域。
理解这门课程的主要概念、基本原理和方法,尤其是分析、实现与代码生成。
学会运用一些具体的词法、语法的分析方法,如:自顶向下的递归下降法和LL分析法、自底向上优先分析法和LR分析法。
学会语义分析和运行时的存储环境的管理。
掌握中间代码生成、中间代码优化、目标代码生成。
培养分析和实现中小型编译程序的能力。
三、课程内容与教学要求
这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。这四个层次的一般涵义表述如下:
知道———是指对这门课程性质、地位、独立价值、研究范围、基本框架、研究方法、学科进展和未来方向等的认知。
理解———是指对这门课程涉及到的概念、原理、策略与技术的说明和解释等有准确的理解。
掌握———是指运用已理解的概念和原理说明、解释、类推同类事件和现象。
学会———是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,或能识别操作中的一般差错,能够把所学的原理应用到具体的实践中去,培养学生发现、分析和解决问题的能力等。
教学内容和要求表中的“√”号表示教学知识和技能的教学要求层次。
本标准中打“*”号的内容可作为自学,教师可根据实际情况确定要求或不布置要求。
教学内容及教学要求表
教学内容
知道
理解
掌握
学会
1 编译器概述
1.1 编译器和解释器
1.2 编译器的功能分解和组织结构
1.3 编译器的伙伴
√
√
√
2 一个微型编译器
2.1 基础知识
2.2 ToyL语言及其词法分析器
2.3 ToyL语言语法分析器
2.4 ToyL语言解释器和编译器
√
√
√
√
3 有限自动机和词法分析
3.1 词法分析基础
3.2 有穷自动机
3.3 正则表达式
√
√
√
4 文法与语法分析
4.1 语法分析
4.2 文法和文法分析
4.3 递归下降法-----自顶向下分析
4.4 LL分析方法-----自顶向下分析
4.5 LR分析方法-----自底向上分析
4.6 LR分析器的生成器
√
√
√
√
√
√
5 语义分析
5.1 语义分析基础
5.2 符号表
5.3 类型分析
5.4 声明的语义分析
5.5 执行体的语义分析
√
√
√
√
√
6 运行时的存储环境
6.1 运行时的存储空间结构与分配
6.2 过程活动记录与栈区组织结构
6.3 运行时的变量访问环境
√
√
√
7 面向语法的语义描述
7.1 动作文法及其应用
7.2 抽象动作文法及其应用
7.3 属性文法及其应用
√
√
√
8 中间代码生成
8.1 中间代码
8.2 表达式的中间代码生成
8.3 原子语句的中间代码生成
8.4 结构语句的中间代码生成
√
√
√
√
9 中间代码优化
9.1 优化基本知识
9.2 常表达式优化
9.3 公共表达式优化
9.4 程序流图循环
9.5 循环不变代码外提
√
√
√
√
√
10 目标代码生成
10.1 目标代码
10.2 临时变量和寄存器
10.3 基于三地址中间代码的目标代码
10.4 基于AST的代码生成
√
√
√
√
四、课程实施
《编译原理》属于计算机科学与应用专业本科教学主干课程,一般情况下,每周安排4课时,共72课时。函授生视具体情况而定,一般为30课时。具体课时安排如下:
课时安排及教学方法表
教学内容
课时建议
教与学的方法建议
72课时
30课时
1 编译器概述
1.1 编译器和解释器
1.2 编译器的功能分解和组织结构
1.3 编译器的伙伴
2课时
2课时
讲述
2 一个微型编译器
2.1 基础知识
2.2 ToyL语言及其词法分析器
2.3 ToyL语言语法分析器
2.4 ToyL语言解释器和编译器
4课时,实验2课时
2课时,实验2课时
讲述和实验
3 有限自动机和词法分析
3.1 词法分析基础
3.2 有穷自动机
3.3 正则表达式
8课时
3课时
讲述
4 文法与语法分析
4.1 语法分析
4.2 文法和文法分析
4.3 递归下降法-----自顶向下分析
4.4 LL分析方法-----自顶向下分析
4.5 LR分析方法-----自底向上分析
4.6 LR分析器的生成器
10课时,实验2课时
3课时,实验2课时
讲述和实验
5 语义分析
5.1 语义分析基础
5.2 符号表
5.3 类型分析
5.4 声明的语义分析
5.5 执行体的语义分析
6课时,实验2课时
3课时
讲述和实验
6 运行时的存储环境
6.1 运行时的存储空间结构与分配
6.2 过程活动记录与栈区组织结构
6.3 运行时的变量访问环境
6课时
2课时
讲述
7 面向语法的语义描述
7.1 动作文法及其应用
7.2 抽象动作文法及其应用
7.3 属性文法及其应用
6课时
2课时
讲述
8 中间代码生成
8.1 中间代码
8.2 表达式的中间代码生成
8.3 原子语句的中间代码生成
8.4 结构语句的中间代码生成
6课时,实验2课时
3课时
讲述和实验
9 中间代码优化
9.1 优化基本知识
9.2 常表达式优化
9.3 公共表达式优化
9.4 程序流图循环
9.5 循环不变代码外提
6课时
3课时
讲述
10 目标代码生成
10.1 目标代码
10.2 临时变量和寄存器
10.3 基于三地址中间代码的目标代码
10.4 基于AST的代码生成
6课时,实验4课时
3课时
讲述和实验
合计:72课时中含理论课60课时,实验课12课时;
30课时中含理论课26课时,实验课4课时。
五、教材和参考书目
1. 金成植、金英编《编译程序设计原理》,高等教育出版社,2007年版。
2. 张素琴、吕映芝等,《编译原理(第2版)》,清华大学出版社,2005版。
六、课程评价
1.这门学科的评价依据是本课程标准规定的课程目标、教学内容和要求。
2.考试时间:120分钟。
3.考试方式、分制与分数解释。采用闭卷+笔试的期终考试、实验考核和平时成绩(主要为作业和实验报告)相结合方式评定学生成绩。以百分制评分,60分为及格,满分为100分。其中,平时成绩为10分,实验考核为20分,期终考试卷面为70分。
4.题型:判断题,名词解释,填空题,简述题,证明题和综合题等。
A. 判断题:(着重考查学生对知识的识别程度)
例:消除左递归法一定能将非LL(1)文法变换为LL(1)文法。( )
B. 名词解释:(着重考查学生对知识的理解程度)
例:素短语
C. 填空题:(着重考查学生对知识的理解程度)
例:属性文法中的属性分为: 和 。
D. 简述题:(着重考查学生对知识的理解与掌握程度)
例:试写出下面源程序的目标程序。
read (a);
C:=a*4;
write(C)
E. 证明题:(着重考查学生对知识的理解与掌握程度)
例:已知如下文法G[S]:S®ABBA、A®a、A®λ、B®b、B®λ
证明其不是LL(1)文法。
F. 综合题:(着重考查学生对知识的理解与掌握程度)
例:已知文法G[S]:E ® -E | (E) | Var Etail、Etail ® -E | λ、Var ® id Vtail、
Vtail ® (E) | λ
(1)计算该文法G的Predict集;
(2)判断G是否是LL(1)文法;
(3)如果是,构造LL(1)分析表。
制定该课程标准小组成员:
审核者:
展开阅读全文