万博manbetx登陆电脑版 > 万博manbetx登陆电脑版 >

编译原理课程教与学(教学大纲)

  本课程主要讲述高级语言翻译为计算机能执行的代码的原理、过程、方法和技术,核心是介绍高级语言到汇编语言的翻译。让学生理解编译和高级语言程序之间的关系,掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。

  1.掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3掌握计算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。)

  2.能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析;(毕业要求4.1能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。)

  3.理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。(毕业要求1.4能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。)

  本课程目标主要支撑的毕业要求指标点如表1所示。除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5(选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。

  通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种高级语言编译程序构造的一般原理和基本方法,如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。

  为达成课程具体目标,教学内容中除安排课内讲授知识外,还包括课程作业和课内实验,旨在巩固课堂传授知识点,使学生在面对计算机复杂工程问题时,能将编译技术合理运用于该类工程的设计实现之中,进行解决方案的分析和改进,并进行合理的需求分析、功能分析和验证。

  本课程的教学内容不仅完全覆盖课程拟达成的具体目标,同时,根据计算机科学与技术专业人才培养总体目标,以及课程所面向学生特点,课程内容还涉及计算机体系结构、汇编语言、项目管理等内容,旨在培养知识交叉应用、沟通交流等综合工程能力。

  ⑶掌握自上而下语法分析的特点,对文法的要求,能用两种不同的自上而下分析方法对给定的文法进行判断和分析。

  ⑷掌握自下而上语法分析的基本概念和特点,掌握用两种不同的自下而上分析方法,能对给定的文法进行判断和分析。

  重点:上下文无关文法的基本概念,LL(1)文法,OPG文法,LR文法,各种文法的分析的基本算法。

  课外学习要求:通过完成作业和实验,进一步掌握不同语法分析适合于不同种类的文法的要求。通过网络搜索,了解各种不同的语法分析自动生成器。

  设计并实现sample语言或者其他高级语言的词法分析器,读入源程序,根据对应高级语言的构词规则拆分出单词。其中用状态转换图的方法实现词法分析实验2学时,用自动生成器实现词法分析程序4学时。

  利用自上而下的方法,或者自下而上的语法分析方法,设计并实现sample语言或者其他语言的语法分析器。其中需要分别实现算术表达式、布尔表达式、控制语句的语法分析。

  利用属性文法和语法制导翻译方法,设计并实现sample语言或者其他语言的中间代码生成器。其中需要分别实现算术表达式、布尔表达式、控制语句的中间代码生成。

  实验内容:利用VC++或者其他语言的反汇编程序查看C语言程序生成的汇编代码,观察程序在内存中的存储情况。

  讲授环节主要采用教师讲解、演示、互动的教学形式。教师讲解知识点、演示程序代码,使学生对知识点形成直观印象,并通过课堂教学双方互相提问,与学生互动,鼓励学生在课堂上发表自己的见解,加深对知识点的理解,达到课程目标。

  上机环节主要采用教师安排任务、学生自主上机练习,教师现场指导、答疑的形式。上机练习可利用实验室电脑或学生个人电脑编程,通过安装在本地的编译环境进行上机练习。

  平时作业成绩:10%。主要考核对课程各单元的关键知识点、课外学习要求的完成、复习、理解和掌握程度。主要形式是学生提交的作业,通过批改作业对平时学习情况进行考核;或者进行两次课堂测试,对学生平时学习情况进行考核。

  实验成绩:30%。主要考核学生分析、解决问题的能力,以及算法设计与实现能力。学生通过搭建相应的实验环境,完成实验内容,并能获取实验数据,进行结果分析。

  期末考试成绩:60%。主要考核对编译原理基础知识、编译方法和技术的掌握程度,以及解决问题的能力。考试形式为卷面考试,主要题型为简答题、计算题,综合题和应用题。

  本书主要讲述设计和构造编译程序的一般原理、基本设计方法和主要实现技术,以高级语言程序编译的6个主要阶段——词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成为线索,阐述了各阶段的主要功能、原理、设计技术和实现方法。

  本课程的前修课程为面向对象程序设计、数据结构、离散数学、软件工程、计算机组成原理、汇编语言程序设计。

  其中,在《面向对象程序设计》课程中掌握程序设计的基本方法;在《数据结构》课程中掌握链表,图和树的操作方法;在《软件工程》课程中掌握大型软件的开发流程以及过程控制方法;在《离散数学》课程中掌握常见的一些集合理论和相关算法;在《计算机组成原理》中掌握计算机系统结构,常见指令等。