《编译原理》教学大纲
课程名称:
| 编译原理
|
|
|
课程编号:
| 408018
| 436013
|
|
适用专业:
| 计算机科学与技术
| 软件工程
|
|
课程类别:
| 专业必修课
| 专业必修课
|
|
课程学分:
| 3
|
|
|
总学时:
| 54
|
|
|
其中:理论学时
| 38
|
|
|
实验学时
| 16
|
|
|
先修课程:
| 数据结构、汇编程序设计、微机原理、操作系统原理、高等代数
|
一、课程的性质、目的与任务
本课程是计算机专业的重要专业课之一,主要介绍程序设计语言编译构造的基本原理和基本实现方法。本课程主要讲授形式语言、有限自动机、自上而下和自下而上的语法分析、LR分析方法、属性文法和语法制导翻译、语义分析的蹭代码产生、存储器的动态分配与管理、符号表的组织与管理、优化问题、代码生成等内容。
本课程学生应掌握以下基本概念和原理,语言和文法、正规式、有限状态自动机、递归下降分析、算符优先分析、SLR文法、代码生成、代码优化。本课程的重点是突出基本概念、基本原理及算法,通过课堂教学与实践环节的训练,使学生掌握编译实现的基本方法和技术。
二、课程教学基本内容与要求
第一章:引论
(一)基本教学内容
1.1 什么叫编译程序
1.2 编译过程概述
1.3 编译程序的结构
1.4 编译程序与程序设计环境
1.5 编译程序的生成
(二)基本要求
教学目的:理解编译程序、汇编程序、汇编语言程序、解释程序、翻译程序、源程序、目标程序等概念及相互关系;掌握编译程序的工作过程和编译程序的总体框架,理解编译程序的几种构造方法
重点:编译过程和编译程序的结构
难点:编译过程
第二章:高级语言及其语法描述
(一)基本教学内容
2.1 程序语言的定义
2.2 高级语言的一般特性
2.3 程序语言的语法描述
(二)基本要求
教学目的:理解文法、推导、归约、语言的概念,了解文法的分类;熟练掌握语法树与文法的二义性
重点:上下文无关文法和正规文法,各种推导与归约、语法,语义,文法的构造
难点:文法和语言的定义
第三章:词法分析
(一)基本教学内容
3.1 对词法分析器的要求
3.2 词法分析器的设计
3.3 正规表达式与有限自动机
3.4 词法分析器的自动生成
(二)基本要求
教学目的:了解扫描器的功能,了解扫描器与语法分析程序的接口;理解状态转换图与DFA的关系;掌握NFA到DFA的转换;掌握DFA最小化方法;熟悉词法分析的过程和方法
重点:词法分析器的功能和设计方法,正规表达式与有限自动机的等价性,有限自动机的确定化和最小化
难点:正规式和有穷自动机间地转换,扫描器的设计
第四章:语法分析——自上而下分析
(一)基本教学内容
4.1 语法分析的功能
4.2 自上而下分析面临的问题
4.3 LL(1)分析法
4.4 递归下降分析程序的构造
4.5 预测分析程序
4.6 LL(1)分析中的错误处理
(二)基本要求
教学目的:了解自上而下语法分析的总体方法;掌握消除左递归,消除回溯的方法;掌握LL(1)文法的判断方法及预测分析表的构造;掌握递归下降的分析方法;了解并掌握各种语法分析方法对文法的要求
重点:消除左递归,消除回溯、递归下降子程序的构造,预测分析表的构造
难点:分析表的构造
第五章:语法分析——自下而上分析
(一)基本教学内容
5.1 自下而上分析基本问题
5.2 算符优先分析
5.3 LR分析法
(二)基本要求
教学目的:了解自下而上语法分析的总体方法;理解并掌握规范句型、短语、直接短语、句柄、素短语、最左素短语等概念;掌握FIRST()集合与LASTVT()集合的构造;掌握算符优先关系表(矩阵)的构造;掌握LR(0)分析表的构造及分析方法;了解SLR(1)、LR(1)、LALR(1)分析方法)了解并掌握各种语法分析方法对文法的要求。
重点:句柄的概念,算符优先分析法,LR(0)分析法
难点:分析表的构造。
第六章:属性文法和语法制导翻译
(一)基本教学内容
6.1 属性方法
6.2 基于属性方法的处理方法
6.3 S-属性文法的自下而上计算
6.4 L-属性文法的自顶向下翻译
6.5 自下而上计算继承属性
(二)基本要求
教学目的:了解属性文法的概念和类别;掌握语法制导翻译的一般方法与过程
重点:属性的计算
难点:属性的计算
第七章:语义分析和中间代码产生
(一)基本教学内容
7.1 中间语言
7.2 说明语句
7.3 赋值语句的翻译
7.4 布尔表达式的翻译
7.5 控制语句的翻译
(二)基本要求
教学目的:了解使用中间代码的意义及几种中间代码的形式;了解说明语句的翻译;掌握赋值语句、布尔表达式、控制语句、标号和转移语句的翻译;了解分支语句和过程调用的翻译;了解编译过程中的类型检查
重点:表达式和控制语句的翻译各种语句的翻译
难点:转移地址的回填
第八章:符号表
(一)基本教学内容
8.1 符号表的组织与作用
8.2 整理与查找
8.3 名字的作用范围
8.4 符号表的内容
(二)基本要求
教学目的:了解符号表的作用;掌握符号表的组织方式和标识符的作用域的处理
重点:符号表的作用、组织方法和内容,名字的作用范围
难点:符号表中作用域的处理。
第九章:运行时存储空间组织
(一)基本教学内容
9.1 目标程序运行时的活动
9.2 运行进存储器的划分
9.3 静态存储分配
9.4 简单的栈式存储分配
9.5 嵌套过程语言的栈式实现
9.6 堆式动态存储分配
(二)基本要求
教学目的:了解程序运行时过程的活动数据的作用域;掌握运行时存储器的划分和活动记录的作用;掌握四种参数的传递方式;掌握C和PASCAL语言的栈式存储分配方法;了解存储分配的策略,掌握静态存储分配策略;了解堆式存储分配方法。
重点:是活动记录及C和PASCAL语言的栈式存储分配方法
难点:是活动记录及C和PASCAL语言的栈式存储分配方法
第十章:优化
(一)基本教学内容
10.1 概述
10.2 局部优化
10.3 循环优化
(二)基本要求
教学目的:理解优化的原则和优化的主要方法;了解基本块和基本块的DAG表示;了解循环优化的主要途径。
重点:DAG表示及其应用,循环优化
难点:DAG表示及其应用、循环优化
三、课程各章节学时分配
序号
| 内容
| 理论学时
| 实验学时
|
计科
| 软工
|
| 计科
| 软工
|
|
1
| 引论
| 2
| 2
|
| 0
| 0
|
|
2
| 高级语言及语法描述
| 4
| 4
|
| 2
| 2
|
|
3
| 词法分析
| 6
| 6
|
| 4
| 4
|
|
4
| 语法分析-自上而下分析
| 6
| 6
|
| 6
| 6
|
|
5
| 语法分析-自下而上分析
| 6
| 6
|
| 2
| 2
|
|
6
| 属性文法和语法制导翻译
| 2
| 2
|
| 0
| 0
|
|
7
| 语义分析与中间代码生成
| 6
| 6
|
| 2
| 2
|
|
8
| 符号表
| 2
| 2
|
|
|
|
|
9
| 运行时存储空间的分配
| 2
| 2
|
|
|
|
|
10
| 优化
| 2
| 2
|
|
|
|
|
合计
| 38
| 38
|
| 16
| 16
|
|
四、本课程课外学习与修学指导
《编译原理》是计算机科学与技术专业的重要专业课之一,本课程主要介绍编译程序的工作原理与构造方法,详细介绍如何将一个用高级语言编写的源程序翻译成机器指令程序的过程。通过对本课程的学习,使学生了解编译程序的实现原理和技术;利用从本课程学习到的知识,增强编写和调试程序的能力。
由于该课程涉及内容复杂,难度较大,且具有很强的实践性,所以要学好本课程,必须做到理论与实践紧密结合,才能达到较好的学习效果。要求学生多参阅相关书籍,多做练习,多上机实验,才能掌握基本原理及其实现过程。
五、本课程考核方式及成绩评定标准
考核方式:闭卷考试
成绩评定方法:本课程的考核是平时成绩和期终考试成绩相结合。具体比例为:平时(出勤、作业)与上机及实验报告占30%,期末考试成绩占70%。
其中期未考试总分100分,基础题占60%,中等难度题占30%,较难题占10%。考试题型主要有:选择题、填空题、回答总题、简单应用题、综合题等。
六、教学参考书
1、《程序设计语言编译原理(第3版)》陈火旺、刘春林等编著,国防工业出版社,2008年。
2、《程序设计语言与编译》龚天富、侯文永编,电子工业出版社。
3、《编译原理》吕映芝、张素琴、蒋维杜主编,清华大学出版社,2006年
4、《编译原理》胡伦骏、徐兰芳、刘建农编,电子工业出版社2004年
5、《编译原理》(第二版)蒋立源、康慕宁主编,西北工业大学出版社,2008年
6、《编译原理习题精选》陈意云、张昱著,中国科技大学出版社,2006年
7、《编译原理习题与解析》 伍春香著,清华大学出版社,2004年
大纲撰写人:朱素英
大纲审阅人:罗如为
教学副主任:易叶青
编写日期:2012.6