北京邮电大学《编译原理与技术》课程教学大纲
编译原理 课程教学大纲
一、课程性质、目的与任务编译原理课程是计算机科学与技术专业学生的专业骨干课之一。
通过学习这门课程,使学生掌握编译程序的基本原理、方法和实现技术,使学生更好的理解程序语言的内部机制,培养学生初步掌握设计大型系统软件的方法、技术以及设计大型软件的能力。
二、教学基本要求1)正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。
2)正确理解上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等;能进行各种文法等价变换;熟练掌握NFA、DFA、正则表达式和正则文法之间的等价关系,能够进行相互转换,掌握DFA的最小化算法。
3)理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。
4)正确理解自上而下分析的基本思想;熟练掌握递归下降分析基本方法:消除左递归和公共前缀,消除回溯,构造递归下降子程序;掌握LL(1)分析程序的基本原理和LL(1)分析表构造;理解LL(1)方法的定义。
5)正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;掌握简单优先分析基本方法:简单优先关系矩阵;LR类语法分析的基本思想及其分析表的构造,掌握LR类语法分析的基本过程。
6)理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。
7)正确理解语法制导翻译基本原理;熟悉常见的几种中间语言:四元式、三元式、逆波兰表示;掌握各种语句到四元式的翻译方法,包括:简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。
了解自上而下分析制导翻译基本思想和实现方法。
8)正确理解代码优化的定义和各种可能的优化概念;掌握基于基本块的局部优化方法。
9)正确理解目标程序运行进存储空间的使用和组织管理方式;理解静态分配和动态存储分配基本思想;掌握栈式存储分配的处理方式;掌握栈式动态分配中活动记录和DISPLAY表作用、组织、内容及使用;了解嵌套过程语言程序运行时整个运行栈的内容的组织。
《编译原理》课程教学提纲
《编译原理》课程教学大纲一、课程的性质与目的本课程是软件工程专业必修的专业核心课。
本课程的教学目的,是使学生在学习程序设计基础及语言和数据结构的基础上,进一步理解程序及程序设计语言的本质,掌握程序词法分析和句法分析的基本原理和方法。
学会构造一个编译程序,用以将一种语言所编写的程序(如,用C语言编写的程序)等价变换为另一种语言所编写的程序(如,用汇编语言编写的程序),并能对变换过程中所生成的中间代码程序及变换所得的程序进行优化,以培养良好的程序设计优化思维,提高学生的编程能力,为学习有关专业课程和进行大型软件实践打下必要的基础。
二、课程内容的教学要求1. 编译原理及编译程序构造引论(1)开设编译原理课程的主要作用:让学生理解开设编译原理课程的意义和作用,编译原理课程在计算机专业课程体系中的地位,学习编译原理课程应采用的方法,编译原理课程知识体系结构,让学生初步认识学习编译原理课程的重要性和潜在的使用价值。
(2)编译程序及其构造过程概述:介绍编译程序的基本含义、作用和结构,简述编译程序构造的基本过程,以让学生形成编译程序构造的总体印象。
2. (程序设计)语言和语法描述(1)语言描述体系结构:了解语言的语法、语义和语用的基本含义及相互作用,掌握描述语言语法的基本方法和过程,使学生清楚语言语法描述应包括由字符构造单词的词法描述,及由单词构造句子的句法描述。
(2)语言和文法的基本概念:掌握语言与文法的相关基本概念,如,串、句子、句型、文法、产生式、推导与归约等,语言文法对语言语法描述的作用,文法的形式化描述方法和过程,Chomsky形式语言文法体系及其在语言语法描述中的应用、特别是正规文法及上下文无关文法在语言语法描述中的应用。
(3)从语言构造文法:了解常见语言句子构造模式,掌握从典型语言句子模式构造对应无 产生式文法的方法,使学生能够理解由语言构造文法的重要性。
(4)语法树、分析树与二义文法:掌握语法树、分析树及二义文法的基本概念,如,语法树、分析树、短语、句柄、二义文法,语法树在语言语法分析过程中的作用,语法树构造方法和过程,二义文法对语言文法的简化描述的作用。
《编译原理》教学大纲
《编译原理》教学大纲一、课程概述编译原理是计算机科学与技术专业的一门重要课程,也是软件工程领域的基础课程之一、本课程通过对编译器的原理和实现技术的学习,使学生掌握编译器的设计和实现方法,培养学生独立解决实际问题的能力。
二、教学目标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. 编程语言的开发环境,如C/C++或Java三、实验内容1.实验一:词法分析器设计与实现a)实验目的:学习词法分析器的原理和设计方法,掌握正则表达式、DFA和NFA的转换方法。
b)实验任务:i.设计并实现一个词法分析器的原型,能够正确地识别出给定的程序中的词法单元。
ii. 使用给定的正则表达式设计并实现识别给定程序中的关键字、标识符、常量等的词法分析器。
2.实验二:语法分析器设计与实现a)实验目的:学习语法分析器的原理和设计方法,掌握上下文无关文法和LR分析表的构造方法。
b)实验任务:i.学习并理解上下文无关文法和LR分析表的构造方法。
ii. 设计并实现一个简单的递归下降语法分析器。
3.实验三:语义分析器设计与实现a)实验目的:学习语义分析器的原理和设计方法,掌握语义动作的定义和处理方法。
b)实验任务:i.学习并理解语义分析器的原理和设计方法。
ii. 设计并实现一个简单的语义分析器,能够对给定的程序进行语义分析和语义动作的处理。
4.实验四:中间代码生成器设计与实现a)实验目的:学习中间代码生成器的原理和设计方法,掌握中间代码的生成和优化方法。
b)实验任务:i.学习并理解中间代码生成器的原理和设计方法。
ii. 设计并实现一个简单的中间代码生成器,能够将给定的程序翻译成中间代码。
5.实验五:目标代码生成器设计与实现a)实验目的:学习目标代码生成器的原理和设计方法,掌握目标代码的生成和优化方法。
b)实验任务:i.学习并理解目标代码生成器的原理和设计方法。
ii. 设计并实现一个简单的目标代码生成器,能够将中间代码翻译成目标代码。
《编译原理》教学大纲
《编译原理》教学大纲一课程简介本课程是计算机科学与技术专业的专业核心课程。
本课程主要讲述高级语言翻译为汁算机能执行的代码的原理、过程、方法和技术,核心是介绍髙级语言到汇编语言的翻译。
让学生理解编译和高级语言程序之间的关系, 掌握词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理、方法和实现技术,真正认识计算机信息处理的实质、训练抽象思维能力、体验系统软件的开发过程,进一步提升计算机科学与技术的专业素养。
二课程目标(一)课程具体目标1.掌握形式语言和自动机的基本概念,理解高级语言编译的基本原理,并能够将这些原理应用于高级语言的设计之中;(毕业要求1.3掌握汁算机基础理论,能够用于对计算机应用系统的设计方案和模型进行推理和验证。
)2.能够理解现有某高级语言的编译系统中各模块的功能和实现方法,能够对不同方法的优劣进行对比和分析:(毕业要求4.1能够运用科学方法,对计算机领域的复杂工程问题进行需求和功能分析。
)3.理解编译程序的结构及各个模块的功能,利用软件工程方法分析和设计某语言的编译程序的各个模块,并能够选择合适的方法实现。
(毕业要求1.4能够运用专业知识,对计算机领域复杂工程问题的解决方案进行分析、改进。
)(二)课程目标与毕业要求的关系本课程目标主要支撑的毕业要求指标点如表1所示。
除表1所列举指标点外,根据学生特点、本课程教学特色,教学目标还涉及对毕业要求5 (选择和使用现代工具)等能力培养,为弱支撑,不在表1中列举。
(三)教学内容安排总体思路本课程的教学内容,以课程具体目标为总体指导进行制左。
通过形式语言与自动机的相关基础知识、高级语言到汇编语言的翻译原理、方法和实现技术等教学内容,传授基于某种髙级语言编译程序构造的一般原理和基本方法, 如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等各个阶段的原理等知识,从而有针对性地培养学生模型构建能力(课程目标1)、系统分析能力(课程目标2)和方案选择与实现能力(课程目标3)。
《编译原理》课程教学大纲
《编译原理》课程教学大纲一、课程基本信息注: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、教学重点:与编译技术密切相关的一些术语和概念。
《编译原理》课程教学大纲--供四年制计算机科学与技术(医药软件开发)专业使用
《编译原理》教学大纲(供四年制计算机科学与技术(医药软件开发)专业使用)____________________________________________________________________一、前言本课程是计算机专业的重要专业课之一,主要介绍程序设计语言编译构造的基本原理和基本实现方法。
本课程主要讲授形式语言、有限自动机、自上而下和自下而上的语法分析、LR分析方法、属性文法和语法制导翻译、语义分析的蹭代码产生、存储器的动态分配与管理、符号表的组织与管理、优化问题、代码生成等内容。
本课程学生应掌握以下基本概念和原理,语言和文法、正规式、有限状态自动机、递归下降分析、算符优先分析、SLR 文法、代码生成、代码优化。
本课程的重点是突出基本概念、基本原理及算法,通过课堂教学与实践环节的训练,使学生掌握编译实现的基本方法和技术。
本课程的前导课程是计算机组成原理、数据结构、汇编语言程序设计、微机原理、操作系统原理等,并与程序设计语言等课程相关联。
本课程是考试课。
采用综合考核的考试方法,即在课程结束后一次性闭卷考试为主,并结合课堂提问、课后作业、上机作业等方面的考查,综合评定成绩。
本课程教学时数为:计算机科学与技术专业72学时,其中理论学时48,上机24学时。
教学采用课堂讲授法。
二、教学目的要求和内容第一章引论【目的要求】掌握编译的基本概念、编译过程概述、编译程序的结构了解编译程序与程序设计环境,编译程序的构造【教学内容】编译程序工作的基本过程及其各阶段的基本任务,编译程序总体框架。
【教学方法】课堂讲授第二章高级语言及其语法描述【目的要求】掌握程序语言定义、初等数据类型、数据结构熟悉高级高级语言的一般特性、程序结构、语句与控制结构掌握上下文无关文法,语法分析树与二义性。
【教学内容】上下文无关文法,程序语言定义参数传递。
【教学方法】课堂讲授第三章词法分析【目的要求】掌握词法分析器任务掌握词法分析器设计掌握正规表达式与有限自动机熟悉词法分析器自动生成。
北邮编译原理课程设计
北邮 编译原理课程设计一、课程目标知识目标:1. 让学生掌握编译原理的基本概念,如词法分析、语法分析、语义分析、中间代码生成和目标代码生成等;2. 使学生了解编译器各阶段的工作原理及其相互关系;3. 帮助学生掌握编译过程中涉及的数据结构和算法。
技能目标:1. 培养学生运用形式语言和自动机理论对程序语言进行词法分析的能力;2. 培养学生利用语法分析技术对程序结构进行分析的能力;3. 提高学生运用编译原理知识解决实际问题的能力,如编写简单的编译器或解释器。
情感态度价值观目标:1. 激发学生对编译原理的兴趣,培养其探究精神和自主学习能力;2. 培养学生严谨的学术态度,强调理论与实践相结合的重要性;3. 增强学生的团队合作意识,提高沟通与协作能力。
课程性质:本课程为计算机科学与技术专业核心课程,具有较强的理论性和实践性。
学生特点:北邮学生具备较好的计算机基础和逻辑思维能力,对编译原理有一定了解,但实际操作能力有待提高。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,以案例驱动教学,提高学生的实际操作能力。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 词法分析:介绍词法分析的基本概念,包括词法单位、词法规则、词法分析器的功能;讲解正则表达式和有限自动机理论,并结合案例使学生掌握词法分析器的设计方法。
教材章节:第一章 词法分析2. 语法分析:讲解语法分析的基本原理,如上下文无关文法、推导树、语法分析器的类型;介绍LL(1)、LR(1)等语法分析算法,并通过实例让学生学会构建语法分析器。
教材章节:第二章 语法分析3. 语义分析:阐述语义分析的作用和任务,讲解语义规则、语义动作、符号表等概念;介绍类型检查、过程声明等语义分析技术,使学生掌握语义分析的基本方法。
教材章节:第三章 语义分析4. 中间代码生成:讲解中间代码的作用、特点及常见形式,如三地址代码、四元式代码;分析中间代码生成的策略,并通过案例让学生学会设计中间代码生成器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理与技术》课程教学大纲
一、课程编号:1311020
二、课程名称:编译原理与技术(64学时)
Compiler Principle and Technology
三、课程教学目的
通过本课程的学习,使学生了解并掌握程序设计语言的编译程序的设计原理与实现技术,了解编译程序的构造方法;加深学生对高级程序设计语言的理解,做到触类旁通;使学生体会到其他专业基础知识如算法与数据结构、程序设计、操作系统、形式语言与自动机、计算机组成原理、汇编语言、软件工程等综合应用,对计算机的软硬件工作原理建立比较深刻的理解,提高学生的专业素养,使学生能够利用所学的理论知识解决实际问题,培养学生分析问题、解决问题的能力。
四、课程教学基本要求
1.了解编译的基本概念和步骤,编译程序的基本组成、结构、编译环境等基本概念。
2.掌握词法分析的原理、词法分析程序的设计和实现方法。
3.掌握语法分析的原理和实现技术、简单的语法分析程序的设计和实现。
4.掌握语法制导翻译技术。
5.理解利用语法制导翻译技术进行语义分析、中间代码生成的实现。
6.理解程序运行环境、代码生成相关的基本概念和实现方法。
7.了解代码优化技术的基本概念和方法。
五、教学内容及学时分配(含实验)
第一章编译概述2学时
1.翻译和解释
2.编译的阶段
3.编译程序的前后处理器(预处理器、汇编程序、连接装配程序)第二章词法分析4学时
1.词法分析器的作用
2.词法分析器的输入与输出
3.记号的描述与识别
4.词法分析程序的设计与实现
5*.软件工具LEX(规格说明、工作原理)
1.语法分析器的作用
2.自顶向下分析(预测分析器、非递归的预测分析器)
3.自底向上分析(规范归约、移进-归约方法实现)
4.LR分析器(模型及工作过程、SLR(1)分析器、LR(1)分析器、LALR(1)分析器)5.LR分析方法对二义文法的应用
6*.软件工具YACC (规格说明、二义性处理)
第四章语法制导翻译技术8学时
1.语法制导定义与翻译方案
2.S属性定义的自底向上翻译
3.L属性的自顶向下翻译
4.L属性的自底向上翻译
第五章语义分析4学时
1.语义分析的概念
2.符号表的组织与管理
3.类型检查(类型表达式、类型等价)
4.简单类型检查器的说明(语言说明、确定标识符的类型、表达式及语句的类型检查)
5*.类型检查有关的其他主题(函数和运算符的重载、类型转换、多态函数)第六章运行环境6学时
1.程序运行时的存储组织
2.存储分配策略(静态存储分配、栈式存储分配、堆式存储分配)
3.访问非局部名字
4.参数传递方式
第七章中间代码生成6学时
1.中间代码形式
2.赋值语句的翻译
3.布尔表达式的翻译
4.控制语句的翻译
5.过程调用语句的翻译
1.代码生成概述
2.基本块与流图
3.一个简单的代码生成程序
第九章代码优化2学时
1.优化概述
2.基本块的优化
3.循环优化
教学实践:
实验1.设计并实现一个C语言程序的词法分析程序4学时
实验2.设计并实现一个简单赋值语句的语法分析程序12学时
六、教学重点、难点
重点:语法分析、语法制导翻译技术、运行环境、中间代码生成
难点:语法分析、语法制导翻译技术
七、先修课程:计算机导论与程序设计、算法与数据结构、形式语言与自动机、计算机组成原理
八、适用专业:计算机科学与技术、网络工程
九、使用教材及参考书目
《编译原理与技术》李文生编著清华大学出版社 2009.1
执笔人: 李文生。