《编译原理》课程教学大纲
principlesof compiler
课程代码: 课程性质:专业课 必修
适用专业:计算机、网络、软件 总学分数:3
总学时数:48 修订年月:
编写年月:2014.3 执笔 者:张巍
中文简介
《编译原理》是计算机类专业的主干课程之一。本课程讲述高级程序设计语言的编译程序构造的基本原理和实现技术,是计算机软件的核心技术之一。通过本课程的学习,学生应掌握文法和形式语言基础知识,具有分析和实现编译程序的初步能力,加深对程序设计语言原理的理解,并且提高中、大型程序的分析和开发能力。
英文简介
compiling principle is the main course of the computer discipline.this course describes the fundamentals of programming language compiler and presentsits construction and implementation. compiler is core technology of computersoftware. through learning this course, students should master the basicgrammar and knowledge of the formal language. students can analyze and solutethe simple problems based on compiling knowledge, and raise the large-scaleprogram analysis and development capabilities.
一、课程目的
《编译原理》是计算机类专业的主干课程之一。本课程讲述高级程序设计语言的编译程序构造的基本原理和实现技术,是计算机软件的核心技术之一。通过本课程的学习,学生应掌握文法和形式语言基础知识,具有分析和实现编译程序的初步能力,加深对程序设计语言原理的理解,并且提高中、大型程序的分析和开发能力。
二、课程教学内容及学时分配
教学课时分配
第1章 绪论 (2学时)
主要内容:编译程序;解释程序;编译程序的组成;编译程序的构造。
重点:掌握编译程序的基本概念;了解通用程序设计语言的主要特征;了解编译器在计算机系统中的地位和作用;了解编译器的基本工作原理;了解编译器各个阶段的工作与任务;理解对编译程序性能的基本要求;了解编译器的编写工具。
第3章 文法和形式语言基础 (7学时)
主要内容:符号串;文法和语言的形式定义;文法的分类;语法树和二义性;文法的限制和变换。
重点:文法和形式语言的基本概念,尤其是上下文无关文法与上下文无关语言。
第4章 词法分析 (5学时)
主要内容:词法分析程序的任务;词法分析程序的设计;正则文法、正则表达式和有限自动机;词法分析程序;pl/0词法分析的设计与实现
重点:了解词法分析器的作用和基本工作方式,理解构词规则与词法分析的关系,掌握利用状态转换图构造词法分析器的基本方法。
第5章 自顶向下优先分析分析 (6学时)
主要内容:递归子程序分析法;ll(1)分析法。pl/0语法分析程序的设计与实现。
重点:ll(1)文法的相关技术方法,递归下降分析器构造方法和ll(1)分析表构造方法。
第6,7章 自底向上语法分析 (8学时) 主要内容:自底向上方法概述,简单优先分析法,lr(0)分析法;slr(1)分析法; lr(1)分析法;lalr(1)分析法。
重点:lr族文法、可归前缀图构造以及分析表的构造。
第8章 语法制导翻译和中间代码的生成 (8学时)
主要内容:逆波兰表示;三元式和树表示;四元式;简单赋值语句的翻译;布尔表达式的翻译;控制语句的翻译;简单说明语句的翻译;数组和结构的翻译。
重点:三种中间语言:四元式、三元式、逆波兰表示;算术表达式的翻译,布尔表达式的翻译,控制语句的翻译。pl/0语言语义分析程序的设计与实现。
第9章 符号表 (2学时)
主要内容: pl/0语言的符号表。
第10章 目标程序运行时的存储组织(5学时)
主要内容:数据空间的管理方法,栈式存储分配,参数传递,过程调用、进入和返回。
重点:栈式存储分配的实现;分程序结构的存储管理;参数传递
第11章 代码优化 (3学时)
主要内容:合并常数;消除多余运算;外提不变运算;削减运算强度;下标变量优化。
重点:基本块和循环相关的代码优化方法
第12章 代码生成 (2学时)
主要内容:代码生成概述;pl/0编译程序的目标代码结构和代码生成。
重点: pl/0编译程序的目标代码结构和代码生成
三、课程教学的基本要求
本课程是计算机类专业的专业核心课程,要求理论与实践紧密结合。
(1)总体目标
① 对编译程序的整体结构有清晰的了解。
② 掌握词法分析和语法分析的基本方法。
③ 具有设计各种常见语言成分的目标结构的能力。
④ 掌握静态和动态存储分配技术。
⑤ 熟悉编译程序中各种主要的数据结构。
⑥ 具有分析和实现编译程序的初步能力。
四、本课程与其它课程的联系与分工
先修课程:
《c语言程序设计》:高级语言是编译程序的源语言,其数据类型、表达式、语句、程序结构、参数传递方式和存储管理方法等,是设计和实现编译程序的基础。
《汇编语言程序设计》:汇编语言是编译程序的目标语言,汇编语言的指令形式、寄存器、变址器以及寻址方式等,与编译程序代码生成直接相关。
《数据结构》:在编译过程中,需要对源程序和中间语言程序的语法结构和语义信息进行组织、管理和查找,大量使用各种数据结构及其算法。
《离散数学》:编译原理建立在形式语言与自动机的理论基础上,在编译程序的词法分析、语法分析和代码优化等方面,大量应用离散数学的理论与方法。
五 建议教材与教学参考书
建议教材:
《编译原理课(第二版)》 张素琴 吕映芝 清华大学出版社 2005年2月
建议参考书:
【1.】 《现代编译原理--c语言描述 》 (美)andrew w.appel 译者: 赵克佳,黄春,沈志宇人民邮电出版社 2003年2月
【2.】 《高级编译器设计与实现》作者:(美)steven s.muchnick译者: 赵克佳
机械工业出版社 2005年7月
【3.】 《编译原理》[美]a.v.aho等著,李建中等译,机械工业出版社,2003
【4.】 《编译原理及实践》[美]k.c.louden等著 英文影印版:机械工业出版社, 2002 中文版:冯博琴等译,机械工业出版社,2000
【5.】 《程序设计语言编译原理》(第3版)陈火旺等, 国防工业出版社,2000
【6.】 《编译原理课程设计》王雷 刘志成 周晶 机械工业出版社 2005年3月