本课程主要内容包括:编译程序/系统概述,形式语言、文法和自动机的基础知识,词法分析,语法分析,语法制导的语义处理基础,语义分析和中间代码生成,符号表组织,运行时存储组织,代码优化和目标代码生成。
1、课程定位
编译程序/系统在计算机科学技术的发展历史中发挥了巨大作用,是计算机系统的核心支撑软件。编译原理一直以来是国内外大学计算机相关专业的重要课程,其知识结构贯穿程序设计语言、系统环境以及体系结构,其理论基础是联系计算机科学和计算机系统的典范。
本课程是计算机专业核心课,主要讲授编译程序/系统构造的基本原理和技术,为学生深入学习计算机系统相关的专业知识以及今后从事科学研究或技术开发工作打下扎实的基础。
2、课程简介
本课程主要内容包括:编译程序/系统概述,形式语言、文法和自动机的基础知识,词法分析,语法分析,语法制导的语义处理基础,语义分析和中间代码生成,符号表组织,运行时存储组织,代码优化和目标代码生成。
3、教学要求
本课程的教学目的是系统掌握编译程序/系统的设计原理以及实现技术。要求学生:
(1)深入理解编译程序/系统的基本构造原理;
(2)掌握常用语言机制的实现技术;
(3)经历开发一个小型编译程序的主要阶段;
(4)具有学习和使用特定编译构造工具的能力;
(5)会将所学的通用方法和技术应用于类似软件的设计和实现中;
(6)具备综合运用知识开发具有一定规模的软件系统的能力。
4、教学内容
第1讲 课程概述
基础概念;逻辑结构;组织方式;伙伴程序;生成环境
第2讲 实验项目介绍
项目框架的总体结构;实验内容;实验环境;实验安排;考核方案
第3讲 文法/正规式/有限自动机 ─ 基础知识
形式语言概念;上下文无关文法及语言;正规语言及其描述
第4讲 词法分析
词法分析概述;词法分析程序的设计与实现;词法分析程序的自动构造
第5讲 符号表
符号表的作用;符号表的常见属性;符号表上的操作;符号表的组织;符号表与作用域
第6讲 自顶向下语法分析
自顶向下分析思想;自顶向下预测分析;LL(1)分析;几种文法变换;LL(1)分析的出错处理
第7讲 自底向上语法分析
自底向上分析思想;移进-归约分析;LR分析基础;LR(0)、SLR(1)、LR(1)、LALR(1)等系列分析方法;二义文法在LR 分析中的应用;LR 分析的出错处理;几类分析文法之间的关系
第8讲 语法制导的语义处理基础
属性文法;基于属性文法的语义处理;翻译模式;基于翻译模式的语义处理
第9讲 语义分析与中间代码生成
语义分析与中间代码生成概述;常规处理介绍(类型检查、说明语句、赋值语句及算数表达式、数组说明和数组元素引用、布尔表达式、控制语句、拉链与代码回填技术、过程调用)
第10讲 运行时存储组织
运行时存储组织概述;程序运行时存储空间的布局;存储分配策略;活动记录;过程调用与参数传递;面向对象程序运行时组织
第11讲 目标代码生成及代码优化
基本块、流图和循环;数据流分析基础(数据流方程,典型数据流分析举例,UD链,DU链);基于 DAG 表示的局部优化;目标代码生成技术(代码生成基础,一个简单的代码生成算法,图着色物理寄存器分配算法);代码优化技术简述