课程概况
该课程主要讲授编译器设计与实现中所涉及的主要理论和技术。主要内容包括词法分析、语法分析、语法树构建、语义分析、中间代码生成、代码优化、目标代码生成等主要内容。该课程主要面向计算机专业相关学生、对计算机感兴趣的学生、及相关技术的从业人员等。
课程大纲
第一章:编译概述
1.1 编译器历史
1.2 编译器主要结构
1.3 前后端划分及功能
第二章:词法分析
2.1 单词与记号
2.2 正则表达式
2.3 有限自动机
2.4 从正则表达式到有限自动机的转换
2.5 词法分析器的实现
第三章:语法分析
3.1 上下文无关文法
3.2 递归下降分析
3.3 LR分析
3.4 错误处理
3.5 语法分析器自动生成
第四章:类型检查
4.1 类型系统
4.2 属性文法
4.3 语法制导翻译
4.4 符号表管理
第五章:中间表示
5.1 抽象语法树
5.2 线性中间表示
5.3 图中间表示
第六章:中间代码生成
6.1 变量地址分配
6.2 算术表达式翻译
6.3 布尔表达式翻译
6.4 数组、结构体和字符串的翻译
6.5 控制流的翻译
6.6 函数调用的翻译
第七章:目标代码生成
7.1 目标体系结构
7.2 树匹配代码生成
7.3 基于动态规划的代码生成
7.4 寄存器分配
7.5 指令调度
第八章:代码优化
8.1 控制流分析
8.2 数据流分析
8.3 死代码删除
8.4 常量传播
8.5 拷贝传播
8.6 静态单赋值形式
面向人群
受众:计算机专业学生、对计算机专业感兴趣的学生、相关技术从业人员
预备知识
必需的基础课程:《C语言》《数据结构》
以下课程不是必须的,但有相应基础更好:《算法》《离散数学》
参考资料
《现代编译器实现---C语言描述》
《编译原理:技术与工具》
《编译器工程》
《高级编译器设计与实现》