《编译原理》课程教学大纲
课程编号:773033
课程名称(中/英文):编译原理 / Compiler Principle
课程类型: 模块课
总 学 时:5学时/周 讲课学时:4学时/周 实验学时:1学时/周
学  分:4学分
适用对象: 软件开发各专业方向
先修课程:程序设计、计算机组成原理、数据结构、操作系统
后续课程:人工智能、数据挖掘
开课单位:软件与应用科技学院

一、课程性质和教学目标
《编译原理》课程是计算机科学与技术专业的一门重要专业课。本课程系统讲述程序设计语言的编译程序的概念、构造、以及实现的主要算法和技术。通过本课程的学习,使学生掌握编译程序的前三个逻辑阶段:在词法分析中,深入理解正规表达式与有限自动机的理论和不确定的有限自动机转化为确定有限自动机的方法;在语法分析中,理解上下文无关方法的概念,掌握自上而下分析和自下而上分析的方法,深入理解消除左递归、消除回溯、提取左因子的方法和LL(1)分析法;在语义分析和中间代码生成中,掌握属性文法和语法制导翻译的基本思想、中间代码的格式和语句翻译的方法。了解编译程序的后两个阶段:优化和目标代码生成。除此之外,还需对符号表管理以及运行时存储空间组织的管理方法加以了解。为今后从事编译及其他有关软件的研究和开发工作打下较为坚实的基础。

二、教学基本要求
通过本课程的学习,应使学生达到以下基本要求:
1、正确理解什么是编译程序,掌握编译程序工作的基本过程及其各阶段的基本任务,熟悉编译程序总体框架,了解编译程序的生成过程和构造工具。
2、熟悉并掌握上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等,理解三种参数传递方式:传值、传地址、传名的含义。
3、熟悉并掌握词法分析器功能及形式、词法分析器设计的原理、状态转换图的原理及使用方法。
4、熟悉并掌握自上而下分析的基本思想、递归下降分析的基本方法、消除左递归和回溯的方法、构造递归下降子程序的方法,预测分析程序的基本原理和预测分析表的构造方法、LL(1)方法。
5、熟悉并掌握自下而上语法分析的基本思想以及归约、短语、句柄、分析树等概念,掌握算符优先分析基本方法,算符优先表和和算符优先函数构造技术。
6、熟悉并掌握语法制导翻译基本原理、基于属性文法的处理方法、自上而下分析制导翻译基本思想和实现方法。
7、掌握常见的几种中间语言:四元式、三元式、逆波兰表示,掌握各种语句到四元式的翻译方法,包括简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。
8、理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。

三、教学内容及要求
第1章 引论

  1. 课程性质与任务
  2. 编译过程概述
  3. 编译程序的结构
    教学目的:理解并掌握编译程序的各个逻辑阶段及各阶段的意义、遍的概念。

第2章 高级语言及其语言描述
1.程序语言的定义
2.高级语言的分类
3.语句与控制结构
4.上下文无关文法
5.语法分析树与二义性
教学目的:理解并掌握符号串和符号串集合的相关概念以及相关运算、上下文无关文法、推导与归约、语法分析树、二义性、形式语言鸟瞰,即四种类型的文法。

第3章 词法分析
1.词法分析器的要求
2.词法分析器的设计
3.正规表达式
4.有限自动机
5.词法分析器的自动产生
教学目的:理解并掌握词法分析器的相关概念、状态转换图、NFA、DFA、NFA与DFA的转换、DFA的化简、正规式与正规集。

第4章 语法分析—自上而下分析
1.语法分析器的功能
2.自上而下分析面临的问题
3.LL(1)分析法
4.递归下降分析程序构造
5.预测分析程序
6.LL(1)分析中的错误处理
教学目的:理解并掌握语法分析器的相关概念、自上而下分析面临的问题、左递归的消除、公共左因子的提取、first集和follow集、LL(1)文法的条件以及LL(1)分析表的构造及预测分析过程。

第5章 语法分析—自下而上分析
1.自下而上分析基本问题
2.算符优先分析
3.语法分析器的自动产生工具
教学目的:理解并掌握算符优先分析算法、LR分析步骤、掌握LR(0)分析表、SLR分析表、规范LR分析表、LALR分析表的画法。

第6章 属性文法和语法制导翻译
1.属性文法
2.基于属性文法的处理方法
3.S-属性文法的自下而上计算
4.L-属性文法和自顶而下翻译
5.自上而下计算
教学目的:理解并掌握综合属性、继承属性、S-属性文法、L-属性文法、语法制导定义、翻译模式。

第7章 语义分析和中间代码生成
1.中间语言
2.说明语句
3.赋值语句的翻译
4.Bool表达式的翻译
5.控制语句的翻译
6.过程调用的处理
7.类型检查
教学目的:理解并掌握中间语言的表示形式、布尔表达式和控制语句的翻译。

第8章 符号表
1.符号表的组织与作用
2.整理与查找
3.名字的作用与范围
4.符号表的内容
教学目的:理解并掌握符号表的组织与作用。

四、课程建设与改革
编译原理的教学内容涉及大量的理论知识,这些知识比较抽象且逻辑复杂,如形式语言理论、正规式、有限自动机理论、上下文无关文法、自下而上分析、自上而下分析,属性文法和语法制导翻译等。大量的概念、算法和符号很容易使学生对学习产生恐惧心理,而且大量的理论知识与有限的教学时间之间的冲突,使得教师很难将所有内容都详细展开、深入讲解。最终导致学生在学完整门课程之后,只在表面了解,而不知道各知识点在编译器中究竟有什么作用。
为了解决上述问题,在课堂教学中,教师针对学生情况优化和调整教学内容,避免教师唱“独角戏”,强调学生的参与性。以“问题”为中心,以“学习”为目标,坚持授人以渔的原则,引导学生、启发学生,调整教师和学生在教学活动中的角色,在维持教师主导地位的同时,强调学生的主体地位。根据编译原理的特点,可以使用两种教学模式。一是在教师的组织下,学生通过问题进行学习,再通过学习来解决问题。二是使学生模拟科学家从事科研过程的方式,教师不直接参与其中,只在必要时给予学生一定的指导。

五、各教学环节学时分配
讲课 习题课 讨论课 实验 其他 合计
第一章 引论 4 0 0 0 0 4
第二章 高级语言及其语言描述 8 0 0 2 0 10
第三章 词法分析 12 2 0 2 0 16
第四章 语法分析—自上而上分析 10 0 0 4 0 14
第五章 语法分析—自下而上分析 16 0 0 4 0 20
第六章 属性方法和语法制导翻译 4 2 0 4 0 10
第七章 语义分析和中间代码生成 2 0 0 0 0 2
第八章 符号表 1 3 0 0 0 4
合计 57 7 0 16 0 80

六、考核及成绩评定方式

  1. 教学大纲所规定的教学内容和教学要求,是考核的唯一依据。考核要突出解决问题的能力和实践能力,知识要点最好能从考核中体现。
  2. 考核成绩评定:采用百分制,包括理论部分与平时成绩部分,总成绩不及格者补考。总成绩比例:理论部分70% + 平时成绩部分30%。
  3. 考试形式:理论部分为课程结束后闭卷机试,平时成绩部分为平时作业及考勤。

七、教材和参考书目 (黑体,小4号字)
教 材:《程序设计语言编译原理 (第3版)》,陈火旺、刘春林编著,国防工业出版社,2007年。
参考书目:
(1)陈意云、张昱,编译原理(第3版),高等教育出版社, 2014
(2)陈意云、张昱,编译原理习题精选与解析(第3版),高等教育出版社,2014
(3)Alfred V.Aho,编译原理,机械工业出版社,2009
(4)Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman, 编译原理 技术与工具(英文版), 人民邮电出版社 ,2002
(5)Louden, K.C, 编译原理及实践(英文版), 中信出版社 ,2004

大纲制订人:
大纲审定人:
制订日期:

《编译原理》课程教学大纲相关推荐

  1. 《软件建模技术》课程教学大纲

    <软件建模技术>课程教学大纲     课程编号:90615505     学时:32     学分:2     适用专业:计算机科学与技术     开课部门:信息工程学院     一.课程 ...

  2. 中职计算机网络技术教学大纲,计算机网络技术课程教学大纲

    计算机网络技术课程教学大纲 <计算机网络技术>课程教学大纲 一.课程的性质和任务 <计算机网络技术>课程是高等职业教育计算机应用与维护专业必修的一门职业技术课程.学生在学习本课 ...

  3. UML软件建模技术-基于IBM RSA工具的基础实训

    IBM Rational Software Architect基础实训 引言 本实训帮助软件设计和开发人员使用IBM RSA开始UML建模.学习者将获得使用IBM RSA的实际操作经验,熟悉IBM R ...

  4. 语音识别基础课程教学大纲.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp语言学 语音识别基础课程教学大纲.doc3页 本文档一共被下载 ...

  5. 嵌入不同源的页面_嵌入式技术课程教与学(教学大纲和试卷)

    微控制器原理课程教学大纲 课程代码:INTE2001 课程类别:专业必修课程 授课对象:物联网工程专业 开课学期:3上 学    分:3.5学分(3+1) 主讲教师:王宜怀.王林.曹国平.刘晓升.曹金 ...

  6. 计算机应用技术课程本科,《计算机应用技术I》课程教学大纲(共本科29级用)().doc...

    <计算机应用技术I>课程教学大纲(共本科29级用)() 课程编号 <计算机应用技术I> 教学大纲 课程名称:计算机应用技术I英文名称:Computer Application ...

  7. 天津大学计算机学院课表,天津大学软件实践1汇编语言课程教学大纲-天津大学计算机学院.PDF...

    天津大学软件实践1汇编语言课程教学大纲-天津大学计算机学院 天津大学<软件实践 1(汇编语言)>课程教学大纲 软件实践1(汇编 课程编号: 2160276 课程名称: 语言) 学 时: 4 ...

  8. 天津大学matlab软件许可,天津大学《MATLAB基础和应用》课程教学大纲.PDF

    天津大学<MATLAB 基础与应用>课程教学大纲 MATLAB 基础与 课程编号: 2160283 课程名称: 应用 学 时: 48 学 分: 2.5 学时分配: 授课: 28 上机: 2 ...

  9. 数学计算机软件课程,《数学软件》课程教学大纲.doc

    PAGE PAGE 13 本 科 教 学 大 纲 学 院 (部): 信息工程学院 课 程 名 称: 数学软件 教务处 二○一七年十月 <数学软件>课程教学大纲 课程名称:(中文)数学软件 ...

  10. 计算机应用技术课程本科,1101001《计算机应用技术I》课程教学大纲(共本科2009级用).doc...

    1101001<计算机应用技术I>课程教学大纲(共本科2009级用) 课程编号 <计算机应用技术I> 教学大纲 课程名称:计算机应用技术I英文名称:Computer Appli ...

最新文章

  1. R语言ggplot2可视化柱状图添加数值说明并控制文本、数值字体大小、轴标签字体大小实战
  2. sql优化之:深入浅出理解索引(系列二)(讲解非常透彻)
  3. MASH结构相噪分析的simulink仿真
  4. Oracle AWR 介绍
  5. php fpm xcache,php扩展xcache
  6. Java SimpleTimeZone setStartYear()方法与示例
  7. 遍历同辈节电的方法_jQuery遍历节点
  8. 为什么我的crontab不起作用呢
  9. 怎么修改管家婆服务器密码忘记,管家婆操作员密码找回教程.doc
  10. CLRC66301国产替代,国产首颗全协议NFC芯片,可兼容A卡,B卡,F卡,15693卡,KK量级出货。
  11. 内存延时cl_内存延迟和内存时序有什么关系?内存速率和时钟周期| Crucial(英睿达)...
  12. 华为xpro重装linux,HUAWEI MateBook X Pro 2019款重装win10系统以及Bios设置方法
  13. 快速掌握Python的捷径-Python基础前传(1) 1
  14. 谈一谈Normalize.css
  15. 基于auto.js的微信朋友圈自动点赞脚本
  16. 转换字母大小写(小写转大写)
  17. 【CSS】css文字超出显示省略号/文字超过三行显示省略号..
  18. freeswitch部署及网关调试
  19. 微型计算机基础知识,第1章微型计算机基础知识
  20. 递归方式实现打印一个整数的每一位

热门文章

  1. 【Java文件操作】txt文件的创建
  2. Google Megastore介绍
  3. 在Java语言里 ==和equals的区别
  4. php把一个数组放在另一个数组的后面,在PHP中的另一个数组之间注入一个数组
  5. C++ getline() 和 get()
  6. poj 1144 割点和桥
  7. AJAX实现图片文件上传
  8. 分布式CAP理论:为什么CAP理论中的三个指标不能同时满足呢?
  9. 【最新合集】编译原理习题(含答案)_答案全集_MOOC慕课 哈工大陈鄞
  10. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第六章 课后答案