基于层次递进模式的“编译原理”课程教学研究与实践

  • 格式:pdf
  • 大小:1.12 MB
  • 文档页数:5

512019年3月刊

专业与课程建设Major Construction & Course Construction

0 引言

“编译原理”课程是计算机科学与技术专

业的专业课程,主要讲授计算机系统重要的系统

软件—程序设计语言编译程序的设计原理和实

现技术,其特点是理论抽象、系统性强、实践性

强,理论与实践结合紧密。同时,“编译原理”

课程中的经典算法蕴含着计算机科学中抽象问题、解决问题的思路和方法及形式化的描述等,

可提高学生的专业素养,培养其发现问题、分析

问题和解决问题的能力。“编译器设计的原理和

技术还可用于编译器之外的众多领域。因此,这

些原理和技术通常会在一位计算机科学家的职业

生涯中被多次用到。研究编译器的编写涉及程序

设计语言、计算机体系结构、形式语言理论、算

法和软件工程”[1]。鉴于此,对“编译原理”课

程教学的研究十分重要。

国内外高校一直致力于对“编译原理”课程

的教学内容和教学方式进行研究,根据学校专业

定位和培养目标,设计课程教学内容。斯坦福大

学“编译原理”课程选用“龙书”—《编译原

理技术和工具》作为参考教材,卡耐基梅隆大学

“编译器设计”课程选择“虎书”—《现代编

译原理》作为参考教材[1-4]。虽然选用的参考教材

不同,但课程内容包括形式语言、有限自动机、

词法分析、语法分析、语义分析、代码生成、代

码优化、类型检查等。课程的特点是重理论,更基于层次递进模式的

“编译原理”课程教学研究与实践

于双元,徐金安,丁 丁,陈钰枫

(北京交通大学计算机与信息技术学院,北京 100044)

【摘要】 “编译原理”课程是计算机科学与技术专业的重要专业课程之一,本文针对“编译原理”课程理论性强、抽象性强、实践性强、系统性强的特点,探讨了课程的目标定位,基于层次递进模式从课程教学内容设计、教学方法设计、教学实施等几个方面结合教学实际进行了研究和实践,阐述了相应的教学理解和教学体会。【关键词】层次递进;编译原理;教学设计;教学方法;教学过程【中图分类号】G642 【文献标识码】A 【文章编号】2095-5065(2019)03-0051-05

收稿日期:2018-12-30作者简介:于双元(1965—),女,黑龙江佳木斯人,硕士,副教授,硕士生导师,研究方向为分布式计算、机器学习和自然语言处理;徐金安(1970—),男,湖北荆州人,博士,教授,博士生导师,研究方向为自然语言处理和机器翻译;丁丁(1980—),女,内蒙古赤峰人,博士,副教授,博士生导师,研究方向为云计算、大数据;陈钰枫(1981—),女,福建南平人,博士,副教授,博士生导师,研究方向为自然语言处理、机器翻译和信息抽取。基金项目:2017年北京交通大学校级教改项目“‘编译原理’课程教材建设”(项目编号:暂无)。2019年3月刊

52 Industry and Information Technology Education工业和信息化教育

重实践,在考核体系中,斯坦福大学的实验成绩

占总成绩的50%,卡耐基梅隆大学的实验内容甚

至占到总成绩的70%,而且理论教学和实践教学

无论在内容上还是进程上都结合得十分紧密。

“编译原理”课程的理论教学内容、实践教学内

容、教学方式、教学过程等的设计对课程教学目

标的达成十分重要。国内高校结合学校的专业定

位和培养目标,在“编译原理”课程的教学内容

选取和教学方式设计上进行了多方位的研究和实

践[5-7]。

1 理论教学内容设计

“编译原理”课程的特点是抽象理论内容较

多,大多概念和方法基于形式化的描述;同时又

具有较强的实践性,实践内容与理论内容结合十

分紧密;编译过程包括词法分析、语法分析、语

义分析及中间代码生成、代码优化、目标代码生

成5个阶段,具有较强的系统性。因此,根据学

时安排设计精准的教学内容,对学生在课程学时

内理解、掌握课程的核心内容,并在以后的职业

生涯中延展学习十分关键。本文基于层次递进模

式研究并设计了教学内容,更有利于学生循序渐

进、逐步深入地学习。

1.1 理论教学内容设计原则

(1)选取能够体现编译程序设计原理实质

的基本理论和基本方法的内容。如形式语言与自

动机理论,使学生深刻理解和掌握课程的理论基

础,建立形式化方法的基本概念,深化抽象思维

的能力,这也是“编译原理”课程教学的本质

所在。

(2)选取能够体现编译过程实现核心和实现

技术的方法和内容。如LR分析法、语义分析和中

间代码生成等,使学生能够充分体会编译程序设

计核心方法的由来,理解设计思想及技术实现。(3)选取能够体现编译中理论与实践紧密结

合的内容,同步贯穿理论和实践的相关内容。如

实验项目中从词法分析、语法分析、语义分析到

目标代码生成的实验型语言编译程序的实现,使

学生深刻领会理论对实践的指导作用。

1.2 理论教学内容设计

根据设计原则,本文设计了层次递进模式的

教学内容总体结构,如图1所示。

教学内容可归纳为理论基础、原理方法、技

术实现3个递进层次,理论基础是编译原理依托的

原理;原理方法是编译程序设计的原理和方法,

涵盖“编译原理”课程的经典问题;技术实现是

编译程序依托原理方法在实现时采用的技术和

手段。

经典问题

理论基础原理方法编译程序实现

编译程序设计技术实现

图1 层次递进模式的教学内容总体结构

(1)在理论基础方面,主要包括:①符号串

的概念、文法的形式定义;②语言的形式定义;

③推导与归约的形式定义;④语法树和二义性;

⑤句型和句子、短语的基本概念和意义;⑥简单

短语、句柄的基本概念和意义;⑦有限自动机的

形式定义等。其中,符号串、句子、句型的概念

是理解编译程序的输入—源程序的关键;句型

与句子的关系、符号串与源程序的关系、句子与

源程序的关系;文法和语言的形式化描述是形式

化方法理解的关键;推导与归约、语法树与二义

性是词法分析方法、语法分析方法设计的最直接

的理论基础;句子、句型及句型中的概念是词法

分析、语法分析中理解分析方法的关键。

首先,以符号串、句子和源程序为例,编

译程序是对符号串进行分析,句子是符号串的子532019年3月刊

专业与课程建设Major Construction & Course Construction

集,而正确的源程序是句子,错误的源程序不是

句子。所以,编译程序的根本任务是判定用户书

写的源程序是不是文法中合法的句子。这样,就

把基础理论与编译程序的设计联系起来,而不是

单纯地介绍基础理论。

其次,以最左推导和规范归约为例,最左推

导是词法分析中左线性正则文法状态转换图、语

法分析中递归下降分析方法和LL(1)分析方法

的理论基础;规范归约是词法分析中右线性正则

文法状态转换图、简单优先分析、算符优先分析

(所谓的规范归约)、LR分析的理论基础。

(2)在原理方法方面,主要内容包括:①正

则文法到状态图的转换;②正则表达式到有限自

动机的转换;③递归下降分析方法;④LL(1)

分析方法;⑤算符优先分析法;⑥LR分析法;

⑦语义分析、目标代码结构分析;⑧目标代码生

成寄存器分配算法等。这些原理与方法是词法分

析、语法分析、语义分析及中间代码生成、目标

代码生成设计思想的核心。尽管很多教材不再介

绍算符优先分析法,但是其中“最左素短语”概

念的由来,对于培养学生解决问题的能力是有

益的。

首先,以正则文法到状态图转换为例,词法

分析所识别的单词符号由正则文法描述,而由正

则文法构造状态转换图、状态转换图识别符号串

的过程是词法分析程序的设计依据。同时,这一

过程的理论基础是最左推导和规范归约,也是句

型分析中的自上而下分析和自下而上分析的设计

依据。有限自动机也是词法分析自动生成工具的

理论依据。

其次,以LR分析法为例,LR分析法是自下向

上的语法分析方法,可解决大部分无二义性的上

下文无关文法,其核心思想是规范归约过程,所

以寻找当前句型的句柄是LR分析的关键所在。LR

分析方法也是语法分析自动生成工具设计的理论

依据。

(3)在技术实现方面,侧重理论与实践的

紧密结合,主要包括:①词法分析程序的实现; ②递归下分析程序的编写和First、Follow集合的

构造;③LL(1)分析中分析表的构造和总控程

序的设计;④算符优先分析最左素短语的确定与

算符优先矩阵构造;⑤LR分析中分析表的构造及

LR分析器的构造;⑥语义分析中目标代码结构的

分析与语义动作的添加;⑦目标代码生成中四元

式引用信息和活跃信息的建立及寄存器分配方法

等。作为编译程序实现的技术方法,这些技术方

法使学生在理论课程学习的同时,同步完成实验

型语言编译程序的设计与实现。

首先,以LL(1)分析为例,LL(1)分析

的理论基础是最左推导,为了实现无回溯无左递

归的最左推导过程,在技术上需要构造LL(1)

分析表,建立分析栈,设计总控程序,进而实现

LL(1)分析。

其次,以LR(0)分析为例,LR(0)分析的

理论基础是规范推导,为了实现这种规范推导过

程,在技术上需要构造LR(0)分析表,建立分析

栈,设计总控程序,进而实现LR(0)分析。

2 实践教学内容设计

2.1 实践教学设计原则

编译程序是计算机重要的系统软件,“编

译原理”课程主要讲授编译程序的构造原理和实

现,因此其实践环节(从抽象理论到设计方法再

到技术实现的研究过程)是必不可少的,否则学

生无法真正领会编译原理的实质,也无法体会计

算机解决问题的基本方法。实践教学的设计原则

是与理论教学紧密结合,同步实现编译过程的每

个阶段。

2.2 实践教学内容设计

为完成实验型语言的编译程序设计的主要阶

段,课程安排了6个实验项目:①词法分析程序设