《编译原理》                                   清华大学

 

课程简介  

《编译原理》一直以来是国内外大学计算机相关专业的重要课程,其课程内容所面对的编译程序/系统是重要的计算系统核心支撑软件;其知识结构贯穿程序语言、系统环境(平台)以及体系结构;其理论基础是联系计算机科学和计算机系统的典范。

《编译原理》相关的知识和技能对专业人员的素质影响很大,除编译程序构造外有大量专业工作都可以从本课程的学习中受益。

本课程的基本教学目的:深入理解编译程序设计与实现的基本原理;掌握常用语言机制的实现技术;经历开发一个小型编译程序的主要阶段;具有使用特定编译构造工具的经验;会将所学的通用方法和技术应用于类似软件的设计和实现中。

课程涉及三个方面的训练,即原理、技术与工具。课堂讲授和课后训练内容互补:基础原理部分以课堂讲授为主,实现技术部分采取以课堂讲解和课后实验相结合的方式,辅助知识以及相关工具的使用等由同学课外自学。

 

教学大纲  

课堂教学的主要知识点包括:

Ÿ  编译程序/系统概述

基本概念,逻辑结构,组织方式,伙伴程序,生成环境,发展综述   (2学时)

PL/0编译器导读     (2学时)

Ÿ   词法和语法分析基础

以形式语言、文法为基础的一般性方法与原理,词法分析器的构造   (2学时)

Ÿ   自顶向下语法分析

LL(1) 分析方法及实现技术为主线,递归下降表驱动    (3学时)

Ÿ   自底向上语法分析

LR 系列分析方法及实现技术为主线(移进归约、分析表、LR(0)SLR(0)

LR(1)LALR(1、强制二义性消除)     (6学时)

Ÿ   语法制导的语义处理基础

基于属性文法和翻译模式进行语义处理的基本原理及实现技术     (4学时)

Ÿ   符号表组织

强调作用域及其组织方式      (1学时)

Ÿ   静态语义分析

课堂上以静态类型检查程序为重点,学生通过实验可自然掌握多种静态语

义检查类别         (1学时)

Ÿ   中间代码生成

以常用语言机制的实现技术为主线(课堂以语法制导方法为主,实 验中采

用不同的做法)     (2学时)

Ÿ   运行时存储组织

存储布局,存储分配策略,活动记录,过程实现,面向对象程序存储组织,……                  

 (2学时)

Ÿ   目标代码生成

以简单但完整的指令选择、寄存器分配过程为主线     (2学时)

Ÿ   代码优化

以基本块内的简单优化方法、控制流数据流分析基础等代码生成和优化相

关的基本知识为主线,辅以优化技术的综述      (2学时)

实验内容:

Ÿ   读懂并改写一个小型编译程序 (一个单遍的 PL/0 语言编译程序)

(近两届已对该实验不作考核,只要求根据课堂进度阶段性阅读)

Ÿ   实现一个简单的(强类型单继承)面向对象语言

目前分4个阶段,共8

Phase 1  借助 Lex Yacc 实现词法和语法分析一遍扫描后产生一种

高级中间表示(实验指定的抽象语法树)

Phase 2  遍历抽象语法树构造符号表、实现静态语义分析,产生带标注

的抽象语法树

Phase 3  从带标注的抽象语法树生成 TAC 中间表示(可转成MIPS

汇编码在SPIM 模拟器上运行)

Phase 4 基于 TAC 实现一些简单的数据流 分析

注:

(1) 每学年的实验内容为减少抄袭或其他原因会有小的改变,但大的架构近

年来未作大的变动。

(2) 有兴趣的同学还可以选修我们开设的《编译专题实践》,选择接受有关

开源编译器(目前主要是GCCORC/Open64)相关项目的训练。

评分方案:

Ÿ     平时(书面作业 + 表现)           5%

Ÿ     实验(4 阶段)                  40%

Ÿ     期末考试                             55% 

 

授课教案   (2007)

第一讲   第二讲  第三讲  第四讲  第五讲  第六讲  第七讲  第八讲

 

课程实验

Mind Project Introduction   Phase1   Phase2   Phase3   Phase4

Mind Language Specification

More...

 

参考书目

1Compilers: Principles, Techniquesand Tools .   1986

Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman, 人民邮电出版社影印,2002.

2Modern Compiler Implementation in C.

Andrew W.Appel,人民邮电出版社影印,2005.

3Advanced Compiler Design and Implementation.  1997

Steven S. Muchnick,  机械工业出版社影印,2003

4Engineering a Compiler.

Keith Cooper, Linda Torczon, Morgan Kaufmann, 2003.

5Programming Language Pragmatics.

Michaeil. Scott etc.,电子工业出版社中译本,2005.

6)程序设计语言编译原理(第3版).

陈火旺 等,国防工业出版社,2000.

7)编译原理(第2版).

张素琴 等,清华大学出版社,2005.

 

 


Built By Wang Shengyuan

Last Modified on 04/26/2008