分层次独立完成一个不同难度的小型编译器

将编译器构建的全过程划分为若干阶段,每个阶段都能实现自动评判的实验教学方案,在信息化的云端教学平台的辅助下,为学生随时随地开展课程实践、实现精细化过程管理和辅导提供有力支持。

实验设计从一个文法的定义开始,引导学生以解读文法为基础,增量式实现编译器的词法分析、语法分析、错误处理、代码生成和代码优化功能,在教学平台上进行测试和自动评判。

难度层次一

仿Java虚拟机,编译解释性。完成PL/0或C0编译器的设计、编码、实现和测试(含出错处理能力。

难度层次二

面向特定硬件平台的代码生成。完成C1语言编译器的设计、编码、实现和测试(含出错处理能力)C1增加了数据结构类型,如数组;增加控制结构。

难度层次三

编译优化,竞速排名。在提高层级基础,进行编译器优化;挑战极限,竞速排名。

在线开课

在线开课入口

编译过程各阶段的自动化评测

学生可以从简单到复杂,最终构造出一个相对完整的小编译器。以便学生深刻地理解高级程序语言的运行机理, 理解一个完整地将高级程序设计语言编写的程序翻译为低级语言程序的过程。

实验过程全部自动化评测。

实验1:词法分析

根据给定的文法设计并实现词法分析程序。

实验2:语法分析

根据给定的文法设计并实现语法分析程序,能基于词法分析程序所识别出的单词,识别出各类语法成分。

实验3:错误处理

根据给定的文法设计并实现错误处理程序,能诊察出常见的语法和语义错误,进行错误局部化处理,并输出错误信息。

实验4:代码生成

在词法分析和语法分析的基础上,为编译器实现语义分析、代码生成功能。

实验5:代码优化

为编译器实现代码优化功能(MIPS)。

全国大学生系统能力培养-编译系统赛官方评测平台

大赛官网: compiler.educg.net

全国大学生计算机系统能力大赛编译系统设计赛(以下简称“大赛”)是由教育部高等学校计算机类专业教学指导委员会和系统能力培养研究专家组共同发起, 以学科竞赛推动专 业建设和计算机领域创新人才培养体系改革、培育我国高端芯片及核心系统的技术突破与产业化后备人才为目标,面向高校大学生举办的全国性大赛。

编译系统设计赛要求各参赛队综合运用各种知识(包括但不局限于编译技术、操作系统、计算机体系结构等),构思并实现一个综合性的编译系统,以展示面向特定目标平台的 编译器构造与编译优化的能力。

编译过程和知识点组织

高质量的编译技术教学资源

推荐采用北京航空航天大学计算机学院名师撰写的优秀教材,并配套讲义、习题和授课视频,视频公开课