编《编译原理》
课程简介
《编译原理》一直以来是国内外大学计算机相关专业的重要课程,其课程内容所面对的编译程序/系统是重要的计算系统核心支撑软件;其知识结构贯穿程序语言、系统环境(平台)以及体系结构;其理论基础是联系计算机科学和计算机系统的典范。
《编译原理》相关的知识和技能对专业人员的素质影响很大,除编译程序构造外有大量专业工作都可以从本课程的学习中受益。
本课程的基本教学目的:深入理解编译程序设计与实现的基本原理;掌握常用语言机制的实现技术;经历开发一个小型编译程序的主要阶段;具有使用特定编译构造工具的经验;会将所学的通用方法和技术应用于类似软件的设计和实现中。
课程涉及三个方面的训练,即原理、技术与工具。课堂讲授和课后训练内容互补:基础原理部分以课堂讲授为主,实现技术部分采取以课堂讲解和课后实验相结合的方式,辅助知识以及相关工具的使用等由同学课外自学。
教学大纲
课堂教学的主要知识点包括:
编译程序/系统概述
基本概念,逻辑结构,组织方式,伙伴程序,生成环境,发展综述
(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) 有兴趣的同学还可以选修我们开设的《编译专题实践》,选择接受有关
开源编译器(目前主要是GCC,ORC/Open64)相关项目的训练。
评分方案:
平时(书面作业 + 表现) (5%)
实验(4 个 阶段)
(40%)
期末考试 (55%)
授课教案 (2007)
第一讲
第二讲 第三讲 第四讲 第五讲 第六讲 第七讲 第八讲
课程实验
Mind Project Introduction Phase1 Phase2 Phase3 Phase4
参考书目
(1)Compilers: Principles,
Techniques,and Tools . (1986)
Alfred V.Aho, Ravi Sethi,
Jeffrey D.Ullman, 人民邮电出版社影印,2002.
(2)Modern Compiler Implementation in C.
Andrew
W.Appel,人民邮电出版社影印,2005.
(3)Advanced Compiler Design and Implementation. (1997)
Steven
S. Muchnick, 机械工业出版社影印,2003
(4)Engineering a Compiler.
Keith
Cooper, Linda Torczon, Morgan Kaufmann, 2003.
(5)Programming Language Pragmatics.
Michaeil.
Scott etc.,电子工业出版社中译本,2005.
(6)程序设计语言编译原理(第3版).
陈火旺 等,国防工业出版社,2000.
(7)编译原理(第2版).
张素琴 等,清华大学出版社,2005.
Built
By Wang Shengyuan
Last
Modified on