《编译原理(Principles of Compilation)》教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:计算机科学与技术专业
(二)课程代码:3DX1040A
(三)学分/课内学时:3学分/48学时
(四)课程类别:专业教育
(五)课程性质:必修/理论课
(六)先修课程:C语言程序设计与应用、离散数学、数据结构与算法、汇编语言程序设计
(七)后续课程: 毕业设计(论文)
二、课程教学目标
本课程是计算机科学与技术专业的一门研究性专业教育必修课程,理论与实践兼顾、偏重于理论,是计算机类各专业的一门重要专业基础课。本课程主要介绍设计和构造编译程序的一般原理、基本方法和主要实现技术,系统介绍编译程序结构及各部分功能、文法和语言的基本概念与表示、词法分析、语法分析、属性文法与语法制导翻译技术等内容。通过本课程的学习,使学生掌握编译程序的基本结构、工作流程及其各组成部分的设计原理和常用算法,为今后从事应用软件和系统软件开发打下一定的理论和实践基础。
(一)具体目标
目标1:了解编译程序的发展历史,增强学生科技自主创新意识,树立科技报国信念;能理解形式语言与文法的关系,掌握文法的形式定义、推导和归约、语法树等概念和方法,培养抽象思维能力和逻辑推理能力。
目标2:掌握编译程序中词法分析、语法分析、语义分析等过程中的常用分析方法和程序设计方法,理解自动生成编译程序的基本理论,培养学生严谨治学的科学精神,引导学生建立"代码即责任"的职业伦理观。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
2. 能够应用自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析计算机软件系统中的复杂工程问题,以获得有效结论。 |
观测点 2.5:能运用基本原理分析实际工程的影响因素,证实解决方案的合理性。 |
目标1 |
编译概述、文法和语言的基本知识 |
平时作业 试卷考试 |
4. 能够基于科学原理,采用适当的工程方法对计算机应用系统的复杂工程问题进行研究,包括系统方案设计、分析与解释数据、并通过信息综合得到合理有效的结论。 |
观测点 4.1:能够采用正确的系统设计方法和工具分析计算机应用系统的功能、性能和参数。 |
目标2 |
词法分析与有穷自动机 |
平时作业 课内实验 试卷考试 |
观测点 4.3:能选用或搭建系统架构,采用科学的组织方法,安全地开展系统方案的开发。 |
目标2 |
语法分析、语法制导翻译技术和中间代码生成 |
平时作业 课内实验 试卷考试 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 课程目标 |
备注 |
1 |
编译概述 |
课程概况。翻译程序与编译程序,编译过程和编译程序的基本结构,编译程序的生成方法,编译技术在软件开发中的应用。 思政元素:对比中外编译技术发展现状,强化科技自立意识,XCode后门事件揭示编译系统自主可控重要性。 |
理解翻译程序和编译程序的概念,掌握编译过程和编译程序的基本结构,了解编译程序的生成方法和编译技术在软件开发中的应用。 |
2 |
讲授 |
目标1 |
|
2 |
文法和语言的基本知识 |
字母表和符号串的基本概念,文法和语言的形式定义,短语、直接短语和句柄,语法树与文法的二义性,文法和语言的分类。 思政元素:结合形式化方法培养严谨科学态度。 |
理解文法与形式语言的关系,理解递归规则的作用,掌握短语和句柄的识别方法,掌握文法的二义性的证明方法,掌握文法的形式定义、推导和归约、语法树等基本概念和方法。 |
4 |
讲授 讨论 |
目标1 |
|
3 |
词法分析与有穷自动机 |
词法分析程序的功能,单词符号及输出单词的形式,正规集、正规式和正规文法,正规式与有穷自动机,正规文法与有穷自动机,词法分析程序的编写方法。 思政元素:规范化思维与科研严谨性,复杂问题分解协作,资源优化意识。 |
了解词法分析程序的功能,理解正规集、正规式和正规文法的概念和基本方法,掌握正规式到有穷自动机、正规文法到有穷自动机的转换方法,掌握有穷自动机的确定化和最小化方法,掌握编写词法分析程序的一般方法。 |
6 |
讲授 案例 讨论 |
目标2 |
|
4 |
实验一 |
词法分析程序设计 |
掌握有穷自动机模拟程序和词法分析程序的设计方法 |
4 |
讲授 实验 |
目标2 |
必做 验证性 |
5 |
语法分析 |
语法分析程序的功能,文法的左递归性和回溯的消除,递归下降分析法,LL(1)分析法,算符优先分析法,LR分析法。 思政元素:以高德纳(Donald Ervin Knuth)的科研历程诠释"十年磨一剑"的科学家精神, 通过最左归约算法培养系统思维与全局观。 |
了解语法分析程序的功能、非确定自上而下语法分析法的思想,理解自上而下与自下而上语法分析法的一般思想原理,掌握递归下降分析法、LL(1)分析法、算符优先分析法、LR分析法等语法分析方法。 |
12 |
讲授 案例 讨论 |
目标3 |
|
6 |
实验二 |
递归下降分析法程序设计 |
理解递归下降分析法的思想,掌握递归下降分析法程序设计的基本方法。 |
2 |
讲授 实验 |
目标3 |
必做 验证性 |
7 |
实验三 |
LL(1)分析法程序设计 |
掌握LL(1)分析法程序设计方法。 |
2 |
讲授 实验 |
目标3 |
必做 验证性 |
8 |
实验四 |
算符优先分析法程序设计 |
掌握算符优先分析法程序设计方法。 |
2 |
讲授 实验 |
目标3 |
必做 验证性 |
9 |
实验五 |
LR分析法程序设计 |
掌握LR分析法程序设计方法。 |
2 |
讲授 实验 |
目标3 |
必做 验证性 |
10 |
语法制导翻译技术和中间代码生成 |
属性文法,语法制导翻译的基本思想,中间代码的形式,自下而上语法制导翻译(简单算术表达式和赋值语句的翻译、布尔表达式的翻译、简单说明语句的翻译),递归下降语法制导的翻译。 思政元素:对比中外中间代码标准差异,增强技术标准话语权意识。 |
了解递归下降语法制导的翻译方法,理解属性文法、语法制导翻译的基本思想和方法,掌握中间代码的各种形式及简单语句到中间代码的翻译方法。 |
8 |
讲授 案例 讨论 |
目标3 |
|
11 |
实验六 |
语义分析程序设计 |
理解属性文法的作用,掌握结合LR分析法完成语义分析的方法。 |
4 |
讲授 实验 |
目标3 |
必做 设计性 |
(二)教学方法
1.课堂讲授
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在教学内容上,系统讲授编译过程、编译程序的基本结构、文法和语言的基本知识、词法分析与有穷自动机、语法分析、语法制导翻译技术和中间代码生成 ,使学生系统地了解并掌握程序设计语言编译程序的基本结构与构造原理。
(3)在教学过程中采用电子教案,多媒体教学、案例教学与传统板书相结合,提高课堂教学信息量,增强教学的直观性。
(4)理论课与实验课的有机结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代主流程序设计方法和手段进行程序设计,培养其识别、表达和解决计算机类专业相关工程问题的思维方法和实践能力。
(5)课内讨论和课外答疑相结合,每周至少一次进行答疑。
2.实验教学
实验教学是本课程中重要的实践环节,目的是提升学生的算法分析与设计和程序设计能力,培养学生严谨细致的工作作风。课程必做实验6个,各实验要求学生独立完成,并提交实验报告。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核以考核学生能力培养目标的达成为主要目的,以检查学生对各知识点的掌握程度和应用能力为重要内容,包括平时考核和期末考核两个部分。平时考核采用平时作业、实验等方式评定学生成绩;期末考核采用笔试评定学生成绩。各课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
目标1:了解编译过程和编译程序的基本结构,能理解翻译程序和编译程序的概念,能理解文法与形式语言的关系,掌握文法的形式定义、推导和归约、语法树等概念和方法。 |
编译过程和编译程序的基本结构、文法和语言的基本知识 |
平时作业 |
5% |
100% |
A1 |
|
文法和语言的基本知识 |
纸笔考试 |
6% |
10% |
E1 |
目标2:理解有穷自动机与设计词法分析程序的关系,掌握根据词法规则构造有穷自动机的基本方法,能根据给定的词法规则完成词法分析程序的设计。 |
正规集、正规式和正规文法、正规式与有穷自动机、正规文法与有穷自动机 |
平时作业 |
5% |
100% |
A2 |
|
有穷自动机、词法分析程序设计 |
实验 |
4% |
100% |
B1 |
正规集、正规式和正规文法、正规式与有穷自动机、正规文法与有穷自动机 |
纸笔考试 |
12% |
20% |
E2 |
目标3:能理解自上而下和自下而上语法分析的基本思想,能根据给定文法采用恰当的语法分析方法设计语法分析程序,并能结合语法分析方法设计语义分析程序。 |
文法的左递归性和回溯的消除、递归下降分析法、LL(1)分析法、算符优先分析法、LR分析法 |
平时作业 |
10% |
100% |
A3 |
|
语法分析程序设计、语义分析程序设计 |
实验 |
16% |
100% |
B2 |
文法的左递归性和回溯的消除、递归下降分析法、LL(1)分析法、算符优先分析法、LR分析法、语法分析程序设计、属性文法、语法制导翻译的基本思想、中间代码的形式、自下而上语法制导翻译 |
纸笔考试 |
42% |
70% |
E3 |
总评成绩(100%)=平时作业(20%)+实验(20%)+纸笔考试(60%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
1.平时作业:平时作业共4次,支撑目标1、目标2、目标3,共占总评分20%,目标1占5%、目标2占5%、目标3占10%。对应目标的评分标准如下:
对应目标 |
目标1:了解编译过程和编译程序的基本结构,能理解翻译程序和编译程序的概念,能理解文法与形式语言的关系,掌握文法的形式定义、推导和归约、语法树等概念和方法。 目标2:理解有穷自动机与设计词法分析程序的关系,掌握根据词法规则构造有穷自动机的基本方法,能根据给定的词法规则完成词法分析程序的设计。 目标3:能理解自上而下和自下而上语法分析的基本思想,能根据给定文法采用恰当的语法分析方法设计语法分析程序。 |
考查点 |
解题过程 |
结果 |
成绩比例 |
50% |
50% |
评分标准 |
100% 至 90% |
解题过程正确并符合规范,计算或推理过程逻辑严谨,语言描述精准,详略得当。 |
结果90~100%正确 |
89.9% 至 80% |
解题过程正确,计算或推理过程逻辑比较严谨,语言描述准确通顺,详略合理。 |
结果80%~89.9%正确 |
79.9 至 70% |
解题过程正确,计算或推理过程逻辑基本正确,语言描述准确通顺,详略基本合理。 |
结果70%~79.9%正确 |
69.9% 至 60% |
解题过程基本正确或存在轻微错误,计算或推理过程逻辑基本正确,语言描述基本准确,详略基本合理。 |
结果60%~69.9%正确 |
59.9%至 0 |
没有解题过程或解题过程严重错误,计算或推理过程逻辑不正确。 |
结果0%~59.9%正确 |
2.实验:必做实验6次,支撑目标2、目标3,共占总评分20%,目标2占4%、目标3占16%。对应目标的评分标准如下:
对应目标 |
目标2:理解有穷自动机与设计词法分析程序的关系,掌握根据词法规则构造有穷自动机的基本方法,能根据给定的词法规则完成词法分析程序的设计。 目标3:能理解自上而下和自下而上语法分析的基本思想,能根据给定文法采用恰当的语法分析方法设计语法分析程序,并能结合语法分析方法设计语义分析程序。 |
考查点 |
程序代码 |
实验报告 |
成绩比例 |
50% |
50% |
评分标准 |
100% 至 90% |
程序功能完善,完全满足实验任务要求,程序结构非常合理,编码符合主流规范,注释合理,程序可读性非常好,程序健壮性也非常好,程序运行效率表现优秀,程序界面设计非常合理。 |
有很强的总结实验和撰写报告的能力,实验报告内容完整、正确,有很好的分析与见解。文本表述清晰,书写工整,格式规范。 |
89.9% 至 80% |
程序功能较好地满足实验任务要求,程序结构合理,编码符合主流规范,注释比较合理,程序可读性较好,程序健壮性较好,程序运行效率表现良好,程序界面设计比较合理。 |
有较强的总结实验和撰写报告的能力,实验报告内容完整、正确,有较好的分析与见解。文本表述较为清晰,书写比较工整,格式规范。 |
79.9 至 70% |
程序功能满足实验任务要求,程序结构合理,编码基本符合主流规范,注释不合理或没有注释,程序可读性较好,程序健壮性一般,程序运行效率表现良好,程序界面设计合理。 |
有良好的总结实验和撰写报告的能力,实验报告内容较完整、正确,有自己的分析与见解。文本表述较为清晰,书写较为工整,格式较为规范。 |
69.9% 至 60% |
程序功能满足实验任务基本要求,程序结构基本合理,编码基本符合主流规范,注释不合理或没有注释,程序可读性一般,程序健壮性较差,程序运行效率一般,程序界面设计基本合理。 |
有一定的总结实验和撰写报告的能力,实验报告内容基本完整、正确,没有分析或见解。文本表述基本清晰,书写基本工整,格式基本规范。 |
59.9%至 0 |
程序功能不全,没有达到实验任务基本要求。程序结构不合理,可读性差,编码规范性差,运行效率差,程序健壮性非常差,程序界面设计不合理。 |
总结实验和撰写报告的能力差,实验报告内容不完整、错误多。文本表述不清晰,书写潦草、格式不规范。 |
五、参考学习资料
(一)推荐教材
刘铭,骆婷,徐丽萍. 编译原理(第5版),ISBN:978-7-121-47636-5. 北京:电子工业出版社,2024.
(二)参考资料
王生原,董渊,张素琴,吕映芝,蒋维杜. 编译原理(第3版),ISBN:9787302381419. 北京:清华大学出版社,2015.
王生原,吕映芝,张素琴. 编译原理课程辅导,ISBN:9787302140375. 北京:清华大学出版社,2007.
网络资源: https://www.icourse163.org/course/NUDT-1003101005