编译原理专业课程教学大纲-西北师范大学在线教学系统

合集下载

《编译原理》课程教学大纲

《编译原理》课程教学大纲

《编译原理》课程教学大纲一、教学大纲说明(一)课程的地位、作用和任务编译原理》课程是信息与计算科学、信息安全专业的一门专业技术课。

通过本课程的学习,使学生掌握编译理论和方法方面的基本知识,具有设计、实现、分析和维护编译程序等方面的初步能力。

(二)课程教学的目的和要求通过本课程的学习,使学生掌握编译程序构造的基本原理、设计方法和实现技术,具有设计、实现、分析和维护编译程序等方面的基本技能,为今后从事应用软件和系统软件的开发打下一定的理论和实践基础。

掌握:编译原理的基本概念,自动机的理论,上下文文法、LL语法分析技术,LR语法分析技术,动作文法、属性文法理解:小型语言Micro的编译器,中间代码生成,目标代码的生成了解:运行时的存储空间(三)课程教学方法与手段采用理论与实例讨论相结合的教学方法,手段拟采用PowerPoint多媒体教学。

(四)课程与其它课程的联系本课程的前导课程是数据结构、离散数学、操作系统原理等,并与程序设计语言等课程相关联。

(五)教材与教学参考书教材:金成植编译,《程序构造原理和实现技术》,北京,高等教育出版社,2000年教学参考书:1、吕映芝等,《编译原理》,北京,清华大学出版社,1998年2、杜淑敏等,《编译程序设计原理》,北京,北京大学出版社,1990年3、杨宗源,《编译原理习题精选分析与解答》,北京,清华大学出版社,2003年二、课程的教学内容、重点和难点第一章编译程序概述内容:概述编译程序的功能结构、复杂性及其设计开发和测试维护等。

重点:编译程序和解释程序的区别、编译程序的功能分解和组织结构。

难点:编译程序和解释程序的区别。

第二章一个微小编译器内容:介绍小型语言Micro的编译器。

重点:单词的概念和词法分析、处理简单表达式的语义栈技术。

难点:处理简单表达式的语义栈技术。

第三章有限自动机与词法分析器内容:介绍正则表达式和有限自动机及词法分析器的构造。

重点:单词的内部表示、正则表达式、有限自动机、词法分析器的构造。

《编译原理》课程教学提纲

《编译原理》课程教学提纲

《编译原理》课程教学大纲一、课程的性质与目的本课程是软件工程专业必修的专业核心课。

本课程的教学目的,是使学生在学习程序设计基础及语言和数据结构的基础上,进一步理解程序及程序设计语言的本质,掌握程序词法分析和句法分析的基本原理和方法。

学会构造一个编译程序,用以将一种语言所编写的程序(如,用C语言编写的程序)等价变换为另一种语言所编写的程序(如,用汇编语言编写的程序),并能对变换过程中所生成的中间代码程序及变换所得的程序进行优化,以培养良好的程序设计优化思维,提高学生的编程能力,为学习有关专业课程和进行大型软件实践打下必要的基础。

二、课程内容的教学要求1. 编译原理及编译程序构造引论(1)开设编译原理课程的主要作用:让学生理解开设编译原理课程的意义和作用,编译原理课程在计算机专业课程体系中的地位,学习编译原理课程应采用的方法,编译原理课程知识体系结构,让学生初步认识学习编译原理课程的重要性和潜在的使用价值。

(2)编译程序及其构造过程概述:介绍编译程序的基本含义、作用和结构,简述编译程序构造的基本过程,以让学生形成编译程序构造的总体印象。

2. (程序设计)语言和语法描述(1)语言描述体系结构:了解语言的语法、语义和语用的基本含义及相互作用,掌握描述语言语法的基本方法和过程,使学生清楚语言语法描述应包括由字符构造单词的词法描述,及由单词构造句子的句法描述。

(2)语言和文法的基本概念:掌握语言与文法的相关基本概念,如,串、句子、句型、文法、产生式、推导与归约等,语言文法对语言语法描述的作用,文法的形式化描述方法和过程,Chomsky形式语言文法体系及其在语言语法描述中的应用、特别是正规文法及上下文无关文法在语言语法描述中的应用。

(3)从语言构造文法:了解常见语言句子构造模式,掌握从典型语言句子模式构造对应无 产生式文法的方法,使学生能够理解由语言构造文法的重要性。

(4)语法树、分析树与二义文法:掌握语法树、分析树及二义文法的基本概念,如,语法树、分析树、短语、句柄、二义文法,语法树在语言语法分析过程中的作用,语法树构造方法和过程,二义文法对语言文法的简化描述的作用。

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学⼤纲《编译原理》教学⼤纲适⽤专业:软件⼯程专业总学时:(讲授/理论40学时,实验/技术/技能0学时,上机/课外实践0学时)先修课程:《C语⾔程序设计》、《离散数学》、《汇编语⾔程序设计》、《数据结构》(⼀)本课程地位、性质和任务《编译原理》课程是计算机专业学⽣的⼀门重要专业基础课,通过本课程学习,使学⽣掌握编译程序的⼀般构造原理,包括语⾔基础知识、词法分析程序设计原理和构造⽅法。

各种语法分析技术和中间代码⽣成符号表的构造、代码优化、并⾏编译技术常识及运⾏时存储空间的组织等基本⽅法和主要实现技术。

使学⽣掌握编译程序构造的基本原理、设计⽅法和实现技术,具有设计、实现、分析和维护编译程序德⽅⾯的基本技能,为今后从事应⽤软件和系统软件的开发打下⼀定的理论和实践基础。

它有⼀定的理论性,尤其是本课程的知识与计算机应⽤中很多领域有紧密联系与⼴泛应⽤。

了解与掌握本课程的基本内容将有利于学⽣提⾼专业素质和适应社会多⽅⾯需要的能⼒。

培养学⽣掌握构造编译程序的基本原理与设计⽅法,为培养计算机语⾔与⼤型应⽤程序的开发⼈才打下良好的基础。

(⼆)课程教学的主要内容及基本要求第1章概述1.1程序设计语⾔与编译程序1.2编译过程和编译程序的结构1.3编译程序的设计1.4编译程序的发展及应⽤第2章⾼级语⾔设计基础2.1符号和符号串2.2⽂法与语⾔2.3⾼级语⾔的设计2.4语⾔设计实例第3章词法分析3.1词法分析的任务和功能3.2词法分析器的设计3.3正规⽂法、正规式与有穷⾃动机3.4词法分析程序的⾃动⽣成第4章语法分析4.1语法分析概述4.2⾃上⽽下的语法分析4.3⾃下⽽上的语法分析4.4语法分析器的⾃动⽣成⼯具YACC4.5语法分析程序中的错误处理第5章语义分析和中间代码⽣成5.1概述5.2属性⽂法和语法制导的翻译5.3常见语句的语法制导的翻译5.4Sample语⾔语法制导的翻译程序的设计第6章运⾏时存储空间的组织6.1程序执⾏时的活动6.2程序执⾏时的存储器组织6.3静态存储分配6.4栈式存储分配策略6.5堆式存储分配第7章代码优化7.1概述7.2局部优化7.3循环优化第8章⽬标代码⽣成8.1概述8.2⽬标机器8.3简单的代码⽣成算法8.4从DAG⽣成⽬标代码8.5Sample代码优化及⽬标代码⽣成器的设计本课程的教学⼤纲是按编译程序的设计流程顺序展开的。

《编译原理》课程教学大纲

《编译原理》课程教学大纲

《编译原理》课程教学大纲(Principles of Compiler)课程性质: 专业课适用专业: 计算机科学与技术先修课程:PASCAL语言程序设计或C语言程序设计、离散数学、数据结构后续课程:总学分:4学分(其中实验0.5)一、教学目的与要求1.教学目的编译原理是计算机科学与技术专业中的一门很重要的专业课程,它在系统软件中占有十分重要的地位,是计算机科学与技术专业学生的一门主修课。

通过本课程的学习,使学生掌握编译理论基础,包括词法分析、语法分析、中间代码生成、代码优化和目标代码生成。

理解编译的实现方法,了解自动机语言的形式化定义、编译技术的各种概念以及具体实现过程的方法。

从形式语言理论角度讨论词法分析和语法分析技术,为学生从事系统软件开发打下良好的基础。

2.教学要求编译原理是一门重要的专业选修课程,本课程将以课堂讲授为主,讲授编译系统的一般构造原理、基本实现技术和一些自动构造工具,布置一定量的作业,配合相应的实验,帮助学生理解有关编译的基本概念,甚至更深入地理解编程语言。

从而使学生的编程能力得到真正的锻炼与提高。

二、课时安排三、教学内容1.引论(4学时)(1)教学的基本要求了解:编译程序与高级程序设计语言的关系;编译和解释的概念;编译程序的几个阶段所完成的任务及编写编译程序的主要方法理解:编译理论和实践相结合的重要性掌握:编译的各个阶段及其主要任务(2)教学内容①程序设计语言与编译②编译程序概述③编译程序的生成④编译程序的构造2.编译基础知识(4学时)(1)教学的基本要求了解:文法的分类;闭包、正闭包、文法、语言、推导、归约、语法树、二义文法的概念,无ε产生式的文法及文法的简化理解:文法与语言的关系掌握:文法与语言的形式化定义以及它们之间的关系,二义文法,短语、简单短语的概念(2)教学内容①字母表、符号表、闭包②文法与语言的关系③文法构造与文法简化④语法树、短语、简单短语、二义文法3.词法分析(6学时)(1)教学的基本要求了解:正规文法、正规集、正规式的概念;理解:词法分析扫描器的设计。

编译原理教学大纲

编译原理教学大纲

编译原理教学大纲一、课程介绍本课程主要介绍编译原理的相关概念、理论和实践技术,旨在培养学生对编译原理的理解和应用能力。

通过本课程的学习,学生将了解到编译器的工作原理、设计流程和实现方法,掌握常见编程语言的词法分析、语法分析、语义分析和代码生成等基本技术。

二、教学目标1. 熟悉编译原理的基本概念和基础知识;2. 掌握编译器的各个模块的设计和实现方法;3. 能够使用现有编译器工具进行编译器开发和优化;4. 培养学生的编程能力、分析问题和解决问题的能力。

三、教学大纲1. 编译原理基础1.1 编译器的作用和概念- 编译过程及其阶段- 编译器的核心功能1.2 语言文法和自动机理论- 正则文法和有限自动机- 上下文无关文法和下推自动机1.3 词法分析- 正则表达式和有限自动机实现词法分析器 - 关键字、运算符、标识符、字面量的识别 2. 语法和语义分析2.1 自顶向下语法分析- LL(1)文法及其分析方法- 预测分析表和递归下降分析2.2 自底向上语法分析- LR(0)文法及其分析方法- SLR(1)文法和LR(1)文法分析2.3 语义分析与语法制导翻译- 语义动作和属性文法- 语法制导翻译的实现方法3. 中间代码生成与优化3.1 中间代码的表示和生成- 三地址码和虚拟机- 递归下降翻译的中间代码生成3.2 基本块和流图- 基本块的概念和划分- 控制流的分析和优化3.3 数据流分析与优化- 活性变量分析- 常量传播和复写传播优化4. 目标代码生成和优化4.1 目标代码生成的基本原理- 寄存器分配和指令选择- 代码布局和指令调度4.2 目标代码优化- 数据流分析在目标代码优化中的应用- 循环优化和内存优化四、教学方法本课程采用理论课与实践相结合的教学方法。

理论课重点讲解编译原理的基本概念和原理,实践课通过编写实际编译器项目,培养学生的编程和问题解决能力。

五、考核方式1. 平时成绩占比:40%包括课堂参与、作业完成情况和实验报告等。

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学大纲一、课程概述编译原理是计算机科学与技术专业的一门重要课程,也是软件工程领域的基础课程之一、本课程通过对编译器的原理和实现技术的学习,使学生掌握编译器的设计和实现方法,培养学生独立解决实际问题的能力。

二、教学目标1.理解编译器的基本原理和工作流程;2.掌握常见编译器的构建方法和技术;3.能够设计和实现简单的编译器;4.培养分析和解决实际问题的能力。

三、教学内容和教学进度1.第一章:引论1.1编译器的定义和分类1.2编译器的基本工作流程2.第二章:词法分析2.1编译器的基本结构2.2词法单元的定义和识别方法2.3正则表达式和有限自动机3.第三章:语法分析3.1语法分析的基本概念3.2语法规则的定义和表示方法3.3自顶向下的语法分析方法3.4自底向上的语法分析方法4.第四章:语义分析4.1语义分析的基本概念4.2属性文法和语法制导翻译4.3语义动作和符号表管理5.第五章:中间代码生成5.1中间代码的定义和表示方法5.2基本块和控制流图5.3三地址码的生成方法6.第六章:优化6.1优化的基本概念和原则6.2常见的优化技术和方法6.3编译器的优化策略7.第七章:目标代码生成7.1目标代码生成的基本原理7.2目标代码的表示方法和存储管理7.3基本块的划分和目标代码生成算法8.第八章:附加主题8.1解释器和编译器的比较8.2面向对象语言的编译8.3并行编译和动态编译四、教学方法1.理论教学与实践相结合,注重教学案例的分析和实践;2.引导学生主动探索,注重培养学生的自主学习能力;3.激发学生的兴趣,鼓励学生提问和讨论。

五、考核方式1.平时成绩:包括课堂测验、作业和实验报告等;2.期末考试:闭卷笔试,主要考查学生对编译原理的理论知识和实践能力的掌握程度。

六、参考教材1.《编译原理与技术》(第2版),龙书,机械工业出版社,2024年2.《现代编译原理-C语言描述》(第2版),谢路云,电子工业出版社,2024年七、参考资源1. 实验环境:Dev-C++、gcc、llvm等2.相关网站:编译原理教学网站、编译器开源项目等八、教学团队本课程由计算机科学与技术学院的相关教师负责教学,具体安排详见教务处发布的教学计划。

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学大纲大纲说明课程代码: 3225003总学时: 64 学时(讲课 48 学时,实验16 学时)总学分: 4课程类别:学科基础课适用专业 : 计算机科学与技术(专业)预修要求: C 语言程序设计、 C++ 程序设计、数据结构课程的性质、任务及地位:《编译原理》是计算机科学与技术专业的一门重要基础课。

通过对该课程的学习,使学生掌握编译过程中的相关原理和编译技术,让学生能初步进行编译程序的开发和维护,同时促进提高学生开发软件的能力。

教学目的与基本要求:本课程的目的,通过向学生讲述编译系统的结构、工作流程及编译程序各部分的设计原理和实现技术,使学生既掌握编译技术理论的基础与基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。

本课程理论性较强。

因授课对象为工科学生,所以在强调编译系统的构造原理和实现方法的同时,为培养学生的实际工作能力,通过上机实践进一步加深学生对课堂教学内容的理解。

目的是要使学生牢固掌握相关的基本理论和基本方法,并能初步利用上述理论和方法解决简单实际问题。

教学方法和教学手段的建议:在教学方法上,贯彻理论联系实际、“精讲、多练”的原则,进行案例式、启发式的教学,对于一些实际性较强的问题要多采用课堂讨论等方式,以提高学生的思辨能力和学习的主动性;引导学生读书、理解、体悟、运用相结合;提高学生的学习兴趣与热情,培养与发挥学生的提出、分析及解决问题的能力。

教学手段:运用多媒体教学手段 +黑板 +上机实验的手段。

采取课堂讲授、课堂讨论、课后练习与自学等形式。

大纲的使用说明:大纲对课程性质、目的等作简单说明,同时列出各章节要学习的知识点、重点、难点,便于教学时教授重点的安排和学生自学安排。

大纲正文第一章引论学时: 4 学时(讲课 4 学时,实验 0 学时)了解编译的概念;理解编译程序的各组成部分及功能。

本章讲授要点:介绍程序设计语言与编译程序间的关系,主要内容包括:各级程序设计语言的定义、源程序的执行、编译程序的构造、编译程序的分类、形式语言理论与编译实现技术的联系。

《编译原理》课程教学大纲

《编译原理》课程教学大纲

《编译原理》课程教学大纲一、课程基本信息注:1.课程类别:选填“通识核心课/通识拓展课/通修课/学科基础课/专业主干课/专业选修课/专业实践/ 素质拓展”2.课程性质:选填“选修/必修”3.授课语言:选填“中文/双语/全英文或其他语种”二、课程目标2 .学生学习预期成果:描述学生在学完本节内容后应获得的知识、能力或素养水平(下同).教学方式:包括讲授、讨论、案例、演示等,但不限于所列,根据课程实际需要列举实践(实验或实习)教学I2.实验类型:选填”验证性/综合性/设计性”;实习类型:选填“认识实习/生产实习/毕业实习”五、课程评价(一)考核内容、考核方式与课程目标对应关系注:1.课程目标在考核方式及占比:主要根据课程目标自行设计和制定多元化考核方式,表中所列仅为参考(红色数据可删除)。

但所列考核方式必须覆盖全体学生,可根据当学期具体教学情况酌情调整。

2.各考核方式占总成绩权重:根据课程实际情况对各考核方式占总成绩的权重予以赋值。

(二)考核方式评分标准1.课程作业评分标准2.注:考核方式和课程目标在考核方式中占比应与“(一)考核内容、考核方式与课程目标对应关系” 一致。

所列考核环节,除了笔试类均须依次给出评分标准,格式同上。

笔试类课程考核评分标准可以在本课程大纲里进行说明,也可以通过提交“试卷分析表”予以说明。

五、参考书目及学习资料1.[美]安佩尔,现代编译原理:c语言描述,人民邮电出版社,2006.劳顿著,冯博琴等译,编译原理及实践,机械工业出版社,20042.[美]Kenneth C. Louden,编译原理与实践,机械工业出版社,2002注:1 .支撑毕业要求指标点:选填项。

需要进行专业认证,有毕业要求指标点可参照的课程必填,无明确毕业要求指标点可参照的可不填。

三、理论教学内容类、NFA 到DFA 的转.掌握状态转换. Lex 工具的使用4 .理解单词符号 的识别:超前搜索 5.掌握正那么表达 式与正那么定义6 .掌握确定有限 自动机(DFA)7 .掌握非确定有 限自动机(NFA) 8.掌握正那么文法 与有限自动机的 等价性9 .掌握正那么式与 有限自动机的等 价性 10 .掌握确定有 限自动机的化简 11 . 了解 Lex 工 具的使用方法子程序 换、识别DFA图及实现第四章语法分析-自上而下分析1.属性文法第六章 语义分 析、语 法制导 翻译及 中间代 码生成 2 .翻译模式.语义处理 3 .语法制导翻译.中间代码 4 .简单赋值语句的翻译.数组的翻译5 .布尔表达式和控制结构的翻译1 . 了解基于属性文法的处理方法.理解属性的依 赖图和属性计算 方法2 . 了解S-属性文法的自下而上计 算. 了解L.属性文 法和自顶向下翻 译3 .理解自顶向下翻译及常见语言的翻译及中间代 码表示. 了解递归下降 翻译器的设计理 解符号栈的使用 与语法树的表示4 .理解后缀式、图表示法、三地址 代码的中间代码 表示方法.掌握四元式的 表示方法5 .理解说明语句的翻译方法.理解赋值语 句的翻译6 .理解简单算 术表达式及赋值 语句.理解数组元 素的引用7 .掌握控制结讲授、 讨论、 案例、习题课程目标 1, 2素养:科学素质构中的布尔式翻译14.理解简单控制语句的翻译注:1.思政融入点:至少写3条,简述该课程教学中将思政教育内容与专业教育内容有机融合的知识点(下同)。

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学大纲Compiler Principles一、课程性质《编译原理》是高等工科院校“计算机科学与技术”、“软件工程”、“信息安全”等专业的一门重要的必修专业基础课。

所含内容涉及学科抽象、理论、设计三个形态。

在学习编译原理所涉及的知识的同时,掌握问题求解的典型思路和方法,帮助学生从系统层面重新认识程序和算法。

二、课程目标本课程的教学目标是:通过学习该课程,使学生了解形式语言基本概念和术语、掌握词法分析、语法分析、语义分析及中间代码生成、代码优化、符号表管理、存储组织和分配及代码优化的基本原理和实现方法。

通过学习编译程序的构造原理和技术,将有助于深刻理解和正确使用程序设计语言。

除此以外,编译原理课程介绍的一些原理、方法和算法并不局限于编译器的构造,也广泛地应用于其他软件的设计与开发。

本课程具有思想素质、知识技能以及能力培养三个层面的通用课程目标:(一)思想、素质教育目标目标1.1 在教学过程中,激发学生自豪感与爱国情怀,鼓励学生通过努力学习掌握先进科学技术,服务国家,回馈社会。

目标1.2 在教学过程中,通过课程内容与中国传统文化思想相结合,提升学生的学习兴趣、人文关怀和道德情操,真正做到“传道、授业和解惑”。

(二)知识教学目标目标2.1 使学生理解编译系统的工作流程和编译器各功能模块的设计原理,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题。

目标2.2 使学生掌握词法分析器、语法分析器开发方法,能够编写词法分析程序和语法分析程序。

(三)能力教学目标目标3.1使学生理解编译系统的工作流程和编译器各功能模块的设计原理,培养学生抽象思维和逻辑思维能力,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题的特征。

目标3.2 使学生掌握设计、编制、分析和维护编译程序的方法和技术,能够应用这些基本方法和技术分析和解决软件开发中的实际问题,使学生具有系统能力,能站在系统的全局去看问题、分析问题和解决问题。

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学大纲《编译原理》课程教学大纲英文名称:Compiler Principles课程类型:专业选修课学时/学分:48/3授课对象:计算机科学与技术专业本科生先修课程:离散数学,数据结构,C程序设计课程简介:本课程属于计算机科学与技术专业的一门重要的专业选修课。

通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。

各种语法分析技术和中间代码生成符号表的构造、代码优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。

它有一定的理论性,又有一定的实践性,尤其是本课程的知识与计算机应用中很多领域有紧密联系与广泛应用。

了解与掌握本课程的基本内容将有利于学生提高专业素质和适应社会多方面需要的能力。

教学目的和要求:教学目的:培养学生掌握构造编译程序的基本原理与设计方法,为培养计算机语言与大型应用程序的开发人才打下良好的基础。

本课程坚持理论与实践教学并重的原则,理论上主要叙述语言和文法的形式定义、自动机理论、词法分析、语法和语义分析、优化和代码生成等环节的基本理论和方法。

教学要求:通过本课程的学习,学生应掌握形式语言理论与编译实现相关的基础概念,了解与掌握编译程序构造的基本原理与技术,从形式语言理论的角度,进一步认识与理解程序设计语言及其与编译程序的联系。

做习题是理解课程中基本概念、培养思考能力和解题能力的重要方面,要求学生认真做好习题,并注意解题规范化。

教学内容:第1章编译程序概述(2学时)1、教学内容:1.1 什么是编译程序1.2 编译过程概述1.3 编译程序的结构1.4 编译阶段的组合1.5 编译技术和软件工具2、教学重点:编译程序的结构3、教学难点:编译程序的结构,以及每一阶段任务第2章文法与语言(6学时)1、教学内容:2.1 文法的直观概念2.2 符号和符号串2.3 文法与语言的形式定义2.4 文法的分类2.5 上下文无关文法及其语法树2.6 句型的分析2.7 有关文法实用中的一些说明2、教学重点:与编译技术密切相关的一些术语和概念。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西北师范大学计算机科学与技术专业(非师范类)课程教学大纲编译原理(71022411)一、说明(一)课程性质《编译原理》课程是计算机科学与技术专业、软件工程专业学生必须掌握的重要专业必修课,也是一门理论性、实践性和技术性很强的课程。

编译系统是现代计算机系统的基本组成之一,编译程序构造的基本原理和技术不仅应用于编译程序的设计,也广泛应用于一般软件的设计和实现。

(二)教学目的本课程的学习目的在于使学生掌握编译程序的基本概念、基本原理、设计方法和实现技术,具有初步分析实际编译系统的能力,并能编制和调试简单编译程序,为今后从事编译及其他有关软件的研究和开发工作打下较为坚实的基础。

(三)教学内容本课程系统讲述程序设计语言的编译程序的概念、构造、以及实现的主要算法和技术。

通过对本课程的学习,使学生较为透彻地理解编译程序的概念、原理,了解语言翻译的全过程(词法分析、语法分析、语义分析与中间代码生成、代码优化和目标代码生成),掌握编译程序中常用的主要算法和技巧;并通过上机实习初步掌握编译器构造的基本方法。

(四)教学时数教学总学时数90,其中:理论课54实验课36(五)教学方式理论讲授与实验相结合。

二、本文理论部分第1章绪论教学要点:1. 高级语言程序的执行方式2. 编译程序的基本结构及其各阶段的基本任务教学时数:3学时教学内容:1.1 引言了解:高级程序设计语言与编译技术之间的联系1.2 程序设计语言与程序(1学时)了解:程序设计语言的定义涉及到的四个方面掌握:BNF范式高级语言程序的两种执行方式1.2 编译程序构造及有关概念(2学时)理解:编译程序的功能掌握:编译程序基本结构以及每一阶段的任务第2章文法与语言教学要点:1、符号串和符号串集合及其运算。

2、文法和语言的形式定义。

3、文法和语言的分类4、文法等价变换5、语法树,句型分析。

教学时数:9学时教学内容:2.1 符号串与符号串集合(1学时)了解:符号串与符号串集合的定义,以及相关运算2.2 文法与语言的形式定义(2学时)理解:规则和文法的定义推导和归约熟练掌握:句子与句型,短语与简单短语,句柄语言的定义,由文法产生句型(句子),由句型(句子)确定文法难点:短语、简单短语、句柄的求法由文法产生句型(句子),由句型(句子)确定文法2.3 语言的分类(1学时)了解:形式语言与自动机掌握:Chomsky文法的定义文法和语言的分类2.4 文法等价于等价变换(4学时)掌握:文法等价的概念熟练掌握:压缩文法等价变换消去左递归的文法等价变换难点:压缩文法等价变换消去左递归的文法等价变换2.5 语法分析树与句型分析(1学时)了解:句型分析存在的基本问题理解:语法分析树规范推导和规范归约掌握:文法二义性的判断句型分析技术难点:文法二义性的判断第3章词法分析教学要点:1、状态转换图的构造和运行2、DFA和NFA以及他们之间的转换3、词法分析程序的实现教学时数:7学时教学内容:3.1 引言了解:词法分析与词法分析程序词法分析程序的实现方式3.2 正则表达式与有穷状态自动机(4)了解:正则式的性质掌握:正则式正则式和有穷自动机之间的相互转换正则文法构造正则式熟练掌握:构造状态转换图,运行状态转换图确定的有穷自动机(DFA),不确定的有穷自动机(NFA)NFA→DFA的转换,DFA的化简难点:NFA→DFA的转换,DFA的化简正则式和有穷自动机之间的相互转换3.3 词法分析程序的实现(1学时)了解:手工编写词法分析程序的基本思路理解:单词的描述工具3.4 词法分析程序的自动生成(1学时)理解:词法分析程序自动生成的思想和实质第4章语法分析—自顶向下分析技术教学要点:1、自顶向下分析技术解决的问题2、递归下降分析技术及实现3、预测分析技术及实现教学时数:8学时教学内容:4.1 引言理解:自顶向下分析技术的实质和要解决的问题4.2 带回溯的自顶向下分析技术(2学时)理解:带回溯的自顶向下分析技术的基本思想,存在的问题及解决方法4.3无回溯的自顶向下分析技术(6学时)理解:递归下降分析技术的实现思想递归下降程序的构造方法应用递归下降分析技术识别句子掌握:实施无回溯的自顶向下分析技术的先决条件预测分析技术的基本实现思想应用预测分析技术进行句型分析时语法分析树的构造熟练掌握:预测分析表的构造应用预测分析技术进行句型识别第5章语法分析—自底向上分析技术教学要点:1、算符优先分析技术2、LR(k)分析技术教学时数:12学时教学内容:5.1引言(1学时)理解:自底向上分析技术的实质和要解决的基本问题掌握:移入-归约法5.2算符优先分析技术(5学时)了解:优先函数的引入算符优先矩阵和优先函数的不足理解:算符优先分析技术算符文法和其性质熟练掌握:算法优先矩阵,算符优先关系的构造应用算符优先分析技术识别句型优先函数的构造5.3LR(k)分析技术(6学时)了解:LR(k)的定义和性质LALR(1)分析表的构造理解:LR识别程序和识别算法四种LR分析技术之间的关系掌握:可归前缀和子前缀,识别活前缀的有限自动机活前缀及其可归前缀的一般计算方法;LR(0)分析技术的相关概念,LR(0)文法SLR(1)分析技术的相关概念,SLR(1)文法LR(1)项集规范族的构造,LR(1)分析表的构造熟练掌握:LR(0)项集规范族的构造,LR(0)分析表的构造SLR(1)分析表的构造第6章语义分析与目标代码生成教学要点:1.中间代码的形式2.几种常见语句和结构的翻译教学时数:9学时教学内容:6.1 概况(1学时)了解:属性文法;语法制导翻译概论6.2中间代码生成(2学时)了解:产生中间代码的必要性掌握:几类中间代码的格式6.3控制语句的翻译(6学时)了解:数组元素引用的翻译过程语句的翻译说明语句的翻译熟练掌握:简单算术表达式和赋值语句的翻译布尔表达式的翻译控制语句的翻译第7章运行环境教学要点:几种存储分配策略教学时数:1学时教学内容:7.1存储分配策略(1学时)了解:静态存储分配,栈式存储分配,堆式存储分配第8章代码优化教学要点:1.优化的定义、分类2.局部优化3.循环优化教学时数:4学时教学内容:8.1引言理解:代码优化的概念和分类8.2基本块的优化(2学时)了解:dag图掌握:几种基本块的优化技术8.3循环优化(2学时)了解:循环优化的实现掌握:循环优化的几种技术8.4窥孔优化了解:窥孔优化的概念和技术第9章程序错误的检查和校正教学要点:1.程序错误的必然性和类别2.词法错误的复原和校正3.语法错误的复原和校正教学时数:1学时教学内容:9.1 概况了解:程序错误的必然性和类别9.2词法错误的复原和校正了解:词法错误种类和校正方法9.3语法错误的复原和校正了解:语法错误种类和校正方法实验部分(一)基本要求《编译原理》是计算机科学与技术专业的一门重要专业必修课,是一门理论性和实践性都比较强的课程。

进行上机实验的目的是使学生通过完成上机实验题目加深对课堂教学内容的理解,同时培养学生实际动手能力。

教学目的:1.通过实验要学会用BNF范式定义一个简单的程序设计语言。

2.学会用高级程序设计语言设计词法分析器、语法分析器、中间代码产生器,用这个简单的程序设计语言书写一段程序,并调试运行出来。

3.进行科学研究的基本训练,培养学生严谨认真的科学态度,提高分析问题和解决问题的能力。

基本要求:1.实验前做好预习,明确实验目的,基本原理及操作要点,2.在实验的整个过程中要注意观察试验结果,必要时重复实验;3.对实验结果进行分析,做好实验报告;(二)实验项目总表(三)实验项目内容及要求实验一文法的表示与压缩1、实验目的及要求:1.掌握文法在计算机内的存储表示;2.了解Chomsky文法的四元组表示;3.掌握文法压缩的方法2、实验内容及学时分配:(6学时)1. 输入任意上下文无关文法,输出四元组形式;2. 输入任意的上下文无关文法,输出压缩后的文法实验二从正则文法构造FA并运行1、实验目的及要求:1. 掌握有穷状态自动机的概念2. 掌握FA的存储表示及其与正则文法的关系;3. 运行有穷状态自动机;3、实验内容及学时分配:(6学时)1.输入任意的正则文法,五元组形式输出相应的有穷状态自动机。

2.识别有穷状态自动机是确定的还是非确定的。

3.输入该文法的句子,运行FA实验三预测分析表的生成,及应用预测分析技术识别句子1、实验目的及要求:1. 掌握firse集合和follow集合的构造算法2. 掌握应用预测分析表的构造3. 利用预测分析技术进行句型分析;2、实验内容及学时分配:(8学时)1. 输入任意的LL(1)文法及其待识别的符号串。

2. 输出first 集合和follow集合以及预测分析表3. 判断输入符号串是否问文法的句子实验四SLR(1)分析表的生成及应用SLR(1)分析技术识别句子1、实验目的及要求:1. 掌握LR(1)分析表生成的基本思想2. 掌握应用LR(1)分析技术进行句型分析;2、实验内容及学时分配:(8学时,选做)1. 输入任意压缩了的上下文无关文法,输出相应的SLR(1)分析表2. 对待识别的符号串进行句型分析3. 给出表列形式的语法分析树实验五赋值语句的语义分析实现1、实验目的及要求:掌握结合SLR(1)分析技术实现翻译方案2、实验内容及学时分配:(8学时)输入文法的任意赋值语句,输出相应的四元式序列。

实验报告要求:要求实验报告包括如下内容:实验目的要求、算法描述、程序结构、主要变量说明、程序清单、结果分析、心得体会。

成绩评定:根据程序设计的规范和技巧、程序运行的结果、实验报告的内容综合评定实验成绩。

三、教材与参考书目教材张幸儿,《编译原理》,科学出版社,1999年4月,第三版参考书目1、吕映芝、张素琴、蒋维杜,《编译原理》,清华大学出版社,1998年1月,第二版2、陈火旺,《程序设计语言编译原理》,国防工业出版社,2001,第三版3、Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman,Compilers:Principles,Techniques,and Tools,人民邮电出版社,2002年2月出版本课程使用教具和现代教育技术的指导性意见多媒体教学。

相关文档
最新文档