《编译原理》实验教学大纲
课程编号: 773033
课程名称:编译原理
英文名称:Compiler Principle
课程类型: 模块课
学  时:5
学  分:4
适用对象: 软件开发各专业方向
先修课程:程序设计、计算机组成原理、数据结构、操作系统

一、课程性质、目的和任务
《编译原理》课程是计算机科学与技术专业的一门重要专业课。本课程系统讲述程序设计语言的编译程序的概念、构造、以及实现的主要算法和技术。通过本课程的学习,使学生掌握编译程序的前三个逻辑阶段:在词法分析中,深入理解正规表达式与有限自动机的理论和不确定的有限自动机转化为确定有限自动机的方法;在语法分析中,理解上下文无关方法的概念,掌握自上而下分析和自下而上分析的方法,深入理解消除左递归、消除回溯、提取左因子的方法和LL(1)分析法;在语义分析和中间代码生成中,掌握属性文法和语法制导翻译的基本思想、中间代码的格式和语句翻译的方法。了解编译程序的后两个阶段:优化和目标代码生成。除此之外,还需对符号表管理以及运行时存储空间组织的管理方法加以了解。为今后从事编译及其他有关软件的研究和开发工作打下较为坚实的基础。
二、教学基本要求
通过本课程的学习,应使学生达到以下基本要求:
1、正确理解什么是编译程序,掌握编译程序工作的基本过程及其各阶段的基本任务,熟悉编译程序总体框架,了解编译程序的生成过程和构造工具。
2、熟悉并掌握上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等,理解三种参数传递方式:传值、传地址、传名的含义。
3、熟悉并掌握词法分析器功能及形式、词法分析器设计的原理、状态转换图的原理及使用方法。
4、熟悉并掌握自上而下分析的基本思想、递归下降分析的基本方法、消除左递归和回溯的方法、构造递归下降子程序的方法,预测分析程序的基本原理和预测分析表的构造方法、LL(1)方法。
5、熟悉并掌握自下而上语法分析的基本思想以及归约、短语、句柄、分析树等概念,掌握算符优先分析基本方法,算符优先表和和算符优先函数构造技术。
6、熟悉并掌握语法制导翻译基本原理、基于属性文法的处理方法、自上而下分析制导翻译基本思想和实现方法。
7、掌握常见的几种中间语言:四元式、三元式、逆波兰表示,掌握各种语句到四元式的翻译方法,包括简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。
8、理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。

三、实验内容及要求
大纲基本内容包括5个必做的实验内容,在规定的16个学时内完成。
实验一 小型词法分析器的设计(设计性实验,2学时)
编写一个小型词法分析器,对于输入的一段英语文本,可以统计:
(1)该文本中有多少英语单词,并把每个单词都列出来;
(2)该文本中有多少不同的英语单词,并把不同的单词都列出来。
实验二 小型词法分析器的设计(设计性实验,2学时)
编写两个小型语法分析器,对于输入的数学表达式,可以获取其中的运算数和运算符;对于输入的一段程序,可以获取该程序的单词符号。作业要求:
(1)了解该语言的单词符号;
(2)为单词符号构造对应的状态转换图;
(3)根据状态转图的结构进行计算机实现。
实验三 小型语法分析器的设计(设计性实验,4学时)
对于给定的文法,采用递归下降分析程序构造方法为其实现一个小型语法分析器。该分析器能够对于给定的输入,按照先后顺序将使用的产生式输出。如果输入语法正确,则输出正确结果;如果输入语法错误,则报错。
实验四 小型语法分析器的设计(设计性实验,4学时)
对于给定的文法,采用算符优先分析算法为其实现一个小型语法分析器,该分析器能够对于给定的输入,输出算法优先分析步骤。如果输入语法正确,则输出正确结果;如果输入语法错误,则报错。(选做题:设计一个小型公式编辑器的上下文无关文法,并进行自上而下分析的实现。)
实验五 小型编译程序的设计(设计性实验,4学时)
根据给定的算术表达式的文法,利用翻译模式,制作可编程计算器。要求考虑
(1)语法正确与否问题;
(2)整形和浮点型问题;
(3)除数为0问题。
(选做题:将语义分析纳入到小型公式编辑器中,并将小型公式编辑器实现出来。)

四、考核方式
划分小组,作业考核采取小组组长和任课教师共同检查的制度。

五、推荐教材和教学参考书
教 材:
《程序设计语言编译原理 (第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. html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx

    编译原理实验报告词法分析器(内含源代码) 编译原理实验(一) --词法分析器 实验描述 运行环境:vc++2008 对某特定语言A ,构造其词法规则. 该语言的单词符号包括: 1该程序能识别的单词符号 ...

  2. 编译原理逆波兰式实验java_逆波兰式算法的编译原理实验过程.doc

    逆波兰式算法的编译原理实验过程 实验目的 深入理解算符优先分析法 掌握FirstVt和LastVt集合的求法有算符优先关系表的求法 掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化 实验内容及要求 ...

  3. 编译原理实验:代码生成作业(1)

    编译原理实验4:中间代码生成实验包-C++文档类资源-CSDN下载编译原理实验4:中间代码生成实验包更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.net/d ...

  4. 编译实验 lr c语言代码,编译原理-实验5-LR(1)分析法

    <编译原理-实验5-LR(1)分析法>由会员分享,可在线阅读,更多相关<编译原理-实验5-LR(1)分析法(6页珍藏版)>请在人人文库网上搜索. 1.编译原理实验报告项目名称 ...

  5. 编译原理--实验2 语法分析

    文章目录 前言 1.1实验目的 1.2 实验任务 1.3 实验内容 1.3.1 实验要求 1.3.2 输入格式 1.3.3 输出格式 1.3.4 样例 1.4 程序 1.4.1 程序流程图 1.4.2 ...

  6. 编译原理实验二:赋值语句的语法分析程序设计

    编译原理实验二:赋值语句的语法分析程序设计 1.1实验内容 目的: 在前面实验的基础上,通过设计.编制.调试一个典型的赋值语句的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查,进一步掌握 ...

  7. 编译原理实验:自上而下语法分析

    编译原理实验:自上而下语法分析 1. 实验题目:自上而下语法分析 实验目的 实验内容 实验要求 输入输出 2. 设计思想 3. 算法流程 4. 源程序 5. 调试数据 1. 实验题目:自上而下语法分析 ...

  8. java编程实现算符优先分析法,编译原理实验三-算符优先分析法

    编译原理实验3-算符优先分析法 #include #include #include #include #define SIZE 128 char priority[6][6]; //算符优先关系表数 ...

  9. 编译原理实验 -- 文法分析

    编译原理实验 – 文法分析 终结符 和 非终结符 终结符 通常使用小写字母表示,例如 abcdef 非终结符 通常使用大写字母表示,例如 ABCDEF 产生式 通俗来说,就是由终结符和非终结符组合成的 ...

  10. c语言词法分析器实验原理,词法分析器的设计与实现 编译原理实验报告.doc

    词法分析器的设计与实现 编译原理实验报告 中北大学软件学院 实 验 报 告 专 业 软件工程 课程名称 编译原理 学 号 姓 名 辅导教师 张静 成绩 实验日期2015.5.19实验时间14:00~1 ...

最新文章

  1. mysql(五)查询缓存
  2. sphinx索引分析续
  3. RKNN Toolkit使用教程
  4. Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取
  5. php+正则匹配qq,正则表达式对qq号进行验证的实例
  6. C++静态成员函数小结(转)
  7. 使用python进行渗透测试_利用Python进行Web渗透测试(五):剖析HTTP请求
  8. 中国输卵管癌治疗行业市场供需与战略研究报告
  9. 字符串查找函数(BF)
  10. list 分页_mybatis一对多分页查询
  11. sftp非交互式每日定时拉取增量数据文件至本地合并至存量
  12. HTML-特效代码大全
  13. H3C无线 AC旁挂式部署无线开局(WEB版)
  14. jdk11压缩包下载
  15. [附源码]java毕业设计网络身份认证技术及方法
  16. 详解人工智能(AI) 机器学习(ML) 深度学习(DL)
  17. 读书笔记--《围城》
  18. Python编程竞赛训练 - 微信公众号排行榜分析
  19. Idea集成SVN报错:Error:‘C:\Program‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  20. fastadmin 子账号看不到菜单,菜单没有查看,编辑等选项

热门文章

  1. Spring Cloud OpenFeign使用教程
  2. Java for循环的几种用法
  3. Mapreduce,mapper任务无输出以及相关问题解决,日志的正确用法
  4. UnpooledDirectByteBuf源码分析
  5. raft中集群成员变更
  6. 2pc_two phase commit详情
  7. 数据结构(5) -- 图
  8. 项目——迁移/home分区
  9. git add后取消_Python 命令行之旅:使用 click 实现 git 命令
  10. 在jsp页面实现保存登录用户名和密码