spContent=自从1946年世界上第一台现代电子计算机“埃尼阿克(ENIAC)”诞生以来,计算机世界中的语言已经超过了1000种,在不久的将来,计算机世界的语言总量就会超过人类世界语言的总量。编译原理就是讨论如何把符合人类思维方式的某种程序设计语言翻译成计算机能够理解和执行的形式,通过课程的学习,不仅可以了解程序设计语言的运行机制,克服学习新的程序设计语言的恐惧,从系统层面重新认识程序和算法,还可以建立计算思维,掌握问题求解的典型思路和方法,培养解决复杂工程问题的能力。
自从1946年世界上第一台现代电子计算机“埃尼阿克(ENIAC)”诞生以来,计算机世界中的语言已经超过了1000种,在不久的将来,计算机世界的语言总量就会超过人类世界语言的总量。编译原理就是讨论如何把符合人类思维方式的某种程序设计语言翻译成计算机能够理解和执行的形式,通过课程的学习,不仅可以了解程序设计语言的运行机制,克服学习新的程序设计语言的恐惧,从系统层面重新认识程序和算法,还可以建立计算思维,掌握问题求解的典型思路和方法,培养解决复杂工程问题的能力。
—— 课程团队
课程概述
编译原理是高等工科院校面向计算机相关专业大三学生开设的专业核心必修课。所含内容既有便于抽象的问题,也有较成熟的理论,涉及学科抽象、理论、设计三个形态。课程使用形式化的巴科斯范式描述程序设计语言,涉及的概念多,算法抽象,不易理解;同时,本课程注重计算思维的培养,强调理论指导下的工程实践。
通过学习该课程,使学生了解形式语言基本概念和术语,掌握词法分析、语法分析和语义分析与中间代码生成技术的基本原理和实现方法。通过将“抽象、自动化、形式化、转化、约简、递归、嵌入、分解、仿真和容错”等计算思维与“形式语言基本理论、词法分析、语法分析、和语义分析与中间代码生成”等内容进行对应,帮助学生更好地从计算思维的角度去理解和分析编译的理论和技术。
通过学习编译程序的构造原理和技术,不仅有助于深刻理解和正确使用程序设计语言,更可以培养计算机学科乃至其他学科解决问题的思维和方法(即如何形式化地描述问题,以及如何通过演绎和归纳来设计解决方案)。这些思维和方法对于应用软件、系统软件以及人工智能的设计与开发具有重要的启示意义,为从事计算机相关行业打下基本的理论和工程实践基础。
授课目标
通过课程学习,使学生了解形式语言基本概念和术语,掌握词法分析、语法分析和语义分析与中间代码生成技术的基本原理和实现方法。通过将“抽象、自动化、形式化、转化、约简、递归、嵌入、分解、仿真和容错”等计算思维与“形式语言基本理论、词法分析、语法分析、和语义分析与中间代码生成”等内容进行对应,帮助学生更好地从计算思维的角度去理解和分析编译的理论和技术。
通过学习编译程序的构造原理和技术,不仅有助于深刻理解和正确使用程序设计语言,更可以培养计算机学科乃至其他学科解决问题的思维和方法(即如何形式化地描述问题,以及如何通过演绎和归纳来设计解决方案)。这些思维和方法对于应用软件、系统软件以及人工智能的设计与开发具有重要的启示意义,为从事计算机相关行业打下基本的理论和工程实践基础。
具体课程目标如下:
课程目标1:借助形式语言、词法分析、语法分析、语义分析与中间代码生成的相关知识,立足优秀传统文化,培养学生等价转化、形式化与抽象、约简、递归、自动化、权衡等计算思维和解决问题的通用方法,使学生在掌握计算机问题求解的基本思想和方法的同时树立文化自信。
课程目标2:了解编译技术的发展历程,理解形式语言的基本概念,掌握编译系统的工作流程和编译器各功能模块的设计原理,能够应用这些基本方法和技术分析和解决软件开发中的实际问题。
课程目标3:使学生掌握词法分析器、语法分析器开发方法,学习构造编译器的各种工具的使用方法,培养学生软件开发能力,具备开发系统软件的能力,并最终养成严谨、求实、守信、创新的科学态度,具有敬业品质、团队协作等职业素养。
课程大纲
第一章 引论
课时目标:了解程序设计语言及翻译程序的发展历史,以及翻译程序的分类,初步理解编译的主要组成部件、编译程序的构造方法、编译技术的应用。
1.1 计算思维与编译技术的发展
1.2 程序设计语言的发展历程
1.3 程序设计语言的翻译机制
1.4 编译程序的基本组成
1.5 编译程序的构造方法
1.6 编译技术的应用
第二章 形式语言基本知识
课时目标:掌握形式语言基本概念和术语,重点用文法产生法描述语言。
2.1 引言
2.2 字母表和符号串的基本概念
2.3 用文法产生法描述语言
2.4 文法和语言的分类
2.5 文法的其他表示方法
2.6 文法实用性限制说明
第三章 词法分析
课时目标:掌握词法分析程序设计、正规表达式和有穷自动机的概念、基本原理和方法,重点掌握如何由正规文法构造有穷自动机,如何由正规文法构造正规表达式,如何由正规表达式构造DFA。
3.1 词法分析概述
3.2正规文法与状态转换图
3.2.1 由左线性文法构造状态转换图
3.2.2 由右线性文法构造状态转换图
3.2.3 左右线性文法的等价转换
3.3 有穷自动机
3.3.1确定的有穷自动机
3.3.2非确定的有穷自动机
3.3.3将非确定的有穷自动机转为确定的有穷自动机
3.4 正规表达式
3.4.1正规表达式的定义
3.4.2正规表达式的性质及其构造
3.4.3 由正规表达式构造转换系统
3.4.4 将转换系统变为确定的有穷自动机
第四章 语法分析
课时目标:掌握自顶向下语法分析、自底向上语法分析的基本原理和方法,了解语法分析自动生成工具,重点掌握递归下降分析法、LL(1)分析法、简单优先分析法、算符优先分析法、LR(K)分析法。
4.1 语法分析基本概念
4.2 自顶向下语法分析概述
4.3 路标法的基本操作
4.4 递归下降分析法
4.5 LL(1)分析法
4.6 简单优先分析法
4.7算符优先分析法
4.8 LR分析法
第五章 语法制导翻译
课时目标:掌握语法制导翻译技术,包括中间语言和自底向上语法制导翻译基本原理和方法,重点掌握如何在语法制导下,将源语言编写的语句经过语义分析,转化为由中间语言(尤其是四元式)表示的中间代码
5.1 语法制导翻译概述
5.2 中间语言
5.3 自底向上的语法制导翻译
展开全部
预备知识
与本课程关系最为密切的是《高级语言程序设计》,高级语言程序设计侧重于程序设计和软件开发,本课程重点是阐述高级语言程序开发工具中的编译系统的工作原理。在课程的算法讲授中会运用到《离散数学》和《数据结构A》等课程相关知识点。
证书要求
本学期的线上成绩由四部分组成,单元测验+单元作业+线上期末考试+线上讨论,其比例分别是40%、20%、30%和10%
参考资料
教材:黄海平,蒋凌云,沙超,徐康. 北京:人民邮电出版社,2022
参考资料:
[1] Terence Parr.编程语言实现模式.武汉:华中科技大学出版社,2013.
[2] Alfred V. Aho.编译原理.北京:机械工业出版社,2009
[3] 蒋宗礼, 姜守旭. 编译原理. 北京: 高等教育出版社, 2017