编译原理课程

  • 格式:doc
  • 大小:49.50 KB
  • 文档页数:7

《编译原理》课程
教学大纲
课程代码:
课程名称:编译原理/Compile Principle
课程类型:专业课
学时学分:48学时/3学分
适用专业:计算机科学与技术
开课部门:灾害信息工程系
一、课程的地位、目的和任务
《编译原理》是计算机专业的一门重要的专业基础课程,它的主要任务是系统地介绍编译程序的基本原理、基本实现方法,编译方面的最新技术及其研究发展方向。

通过本课程的学习,应使学生掌握高级程序设计语言的编译原理及其基本实现技术,
了解编译方面的最新技术发展和研究方向,具有设计、实现编译程序的基本能力。

二、课程与相关课程的联系与分工
编译原理与操作系统原理、数据库系统原理、计算机系统结构关系密切同时它的研究对象是计算机语言的编译过程,所以本门课程的先修课是高级语言程序设计、数据结构、操作系统原理、数据库系统原理、计算机系统结构。

通过教学使学生了解、掌握高级语言编译程序构造的一般原理和基本实现方法。

即:词法分析--语法分析--中间代码生成--优化--目标代码生成。

而且,编译技术所涉及的建模技术同样适合其他软件的建模,也帮助学生提高运用所学知识进行独立分析问题和解决问题的能力。

本课程的后续课程是计算理论。

三、教学内容与基本要求
课程内容要按章、节、目的顺序列出,并按“了解”、“理解”和“掌握”等层次,对主要“知识点”、“能力点”提出基本要求。

同时指明教学的重点和难点所在。

大学计算机基础、体育等课程也可以根据内容分块。

第一章概述
1.教学内容
1.1 程序设计语言与翻译程序
1.2 编译过程和编译程序的结构
1.3 编译程序的构造
1.4 编译程序的发展与应用
1.5 小结
1.6 习题
2.重点难点
重点:通用程序设计语言的主要特征;编译器在计算机系统中的地位和作用;编译器的基本工作原理;编译器各个阶段的工作与任务;编译器的编写工具。

难点:编译器的基本工作原理。

3.基本要求
理解什么是编译程序,了解编译程序工作的基本过程及其各阶段的基本任务,熟悉编译程序总体框架,了解编译程序的生成过程和构造工具。

第2章形式语言基础知识
1.教学内容
2.1 符号和符号串
2.2 上下文无关文法及其语言
2.3 语法树和文法的二义性
2.4 文法的分类
2.5 类Pascal语言Sample的简单介绍
2.6 小结
2.7 习题
2.重点难点
重点:形式语言中几个重要概念:文法、语法树、二义性、文法分类等。

难点:文法的二义性。

3.基本要求
理解程序语言词法、语法和语义等概念,熟悉高级程序语言一般结构和主要共同特征。

正确理解上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等。

第3章词法分析
1.教学内容
3.1 词法分析的任务和功能
3.2 词法分析器的设计
3.3 正规文法.c正规式与有穷自动机
3.4 词法分析器的自动产生
3.5 小结
3.6 习题
2.重点难点
重点:词法分析器作用和基本工作方式;构词规则与词法分析的关系;利用状态转换图构造词法分析器的基本方法;词法的形式化描述和词法分析器设计。

难点:利用状态转换图构造词法分析器;正规表达式与有限状态自动机。

3.基本要求
理解词法分析器功能及形式,熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。

第4章语法分析
1.教学内容
4.1 语法分析概述
4.2 自上而下分析面临的问题及其解决方法
4.3 确定的自上而下的分析方法
4.4 Sample语言自上而下语法分析程序的设计
4.5 自下而上语法分析的思想
4.6 算符优先分析
4.7 LR分析法
4.8 语法分析器的自动生成工具Yacc
4.9 语法分析程序中的错误处理
4.10 小结
4.11 习题
2.重点难点
重点:上下文无关文法、LL(1)文法和语法分析方法:自下而上分析法(算符优先分析法)和自上而下分析法(递归下降分析法和预测分析方法)。

难点:SLR(1)分析表构造。

3.基本要求
理解自上而下分析的基本思想,熟练掌握递归下降分析基本方法:消除左递归、消除回溯,构造递归下降子程序,掌握预测分析程序的基本原理和预测分析表构造,理解LL(1)方法的定义。

理解自下而上语法分析的基本思想以及归约、短语、句柄、分析树等概念,掌握算符优先分析基本方法,算符优先表和和算符优先函数构造技术。

第5章语义分析和中间代码生成
1.教学内容
5.1静态语义检查
5.2中间代码的形式
5.3属性文法和语法制导的翻译
5.4常见语句的语法制导的翻译
5.5 Sample语言语法制导的翻译程序的设计
5.6小结
5.7习题
2.重点难点
重点:语法制导翻译的原理及各种语句的翻译方式,中间代码的概念。

难点:常见语句的语法制导翻译。

3.基本要求
理解语法制导翻译基本原理,掌握基于属性文法的处理方法,了解自上而下分析制导翻译基本思想和实现方法。

熟悉常见的几种中间语言:四元式、三元式、逆波兰表示,掌握各种语句到四元式的翻译方法,包括简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。

第6章运行时存储空间的组织
1.教学内容
6.1源程序及其目标程序执行时的活动
6.2程序执行时的存储器组织
6.3静态存储分配
6.4栈式存储分配
6.5堆式存储分配
6.6小结
6.7习题
2.重点难点
重点:程序执行时存储器组织及各种内存分配方式
难点:各种内存分配方式
3.基本要求
正确理解目标程序运行进存储空间的使用和组织管理方式,理解静态分配和动态存储分配基本思想,掌握动态存储分配的处理方式,掌握栈式动态分配中活动记录的作用、组织、内容及使用,了解嵌套过程语言程序运行时整个运行栈的内容的组织。

第7章代码优化
1.教学内容
7.1概述
7.2局部优化
7.3循环优化
7.4小结
7.5习题
2.重点难点
重点:各种优化方法:局部优化、循环优化。

难点:各种优化方法:局部优化、循环优化。

3.基本要求
正确理解代码优化的定义和各种可能的优化概念,掌握用DAG表示进行局部优化的方法。

第8章目标代码生成
1.教学内容
8.1概述
8.2目标机器
8.3简单的代码生成算法
8.4从DAG生成目标代码
8.5 Sample语言代码优化及目标代码生成器的设计
8.6小结
8.7习题
2.重点难点
重点:代码生成过程中涉及到的方法
难点:中间代码的简单翻译方法、引用信息和活跃信息、寄存器描述和地址描述、基本块的代码生成算法
3.基本要求
理解代码生成过程的基本问题,理解待用信息、寄存器描述和地址描述等概念,掌握简单代码生成算法、寄存器分配策略。

四、课程学时分配(以章节为单位)
1.推荐教材:《编译原理及实践教程》,作者:黄贤英,王柯柯,出版社:清华大学出版社,出版年月:2008 年2月,第一版。

2.《程序设计语言编译》,陈火旺,国防工业出版社,2000年8月。

3.《Compiler Design in C》,Allen I. Holub., Prentice Hall,1990年。

4.《Compiler Construction: Principles and Practice》,Kerneth C. Louden。

六、教学方法与考核方式
讲授为主,辅以课堂讨论和练习,上机实验。

本课程注重理论和实际的结合,只有学生完成好实验后才能对软件编译的基本原理有深刻的认识,编程语言可选用PASCAL语言。

考核方式:
1.期末闭卷考试占总成绩的50%
2.考勤占总成绩的10%
3. 平时成绩占总成绩的20%
4.期中考试占总成绩的20%
修订人:李鑫修订日期:2011年4月1日审核人:高方平审核日期:。