XX大学软件学院
《编译原理》课程标准

制定人:张晨光

课程代码: 773033
课程名称(中文 / 英文):编译原理 / Compiler Principle
学时( 实验学时 )/ 学分: 周5学时 / 4学分
课程性质:专业必修
先修课程:JAVA程序设计
后续课程:无
适用专业:软件开发专业(JAVA、.NET方向)、软件测试专业、信息工程专业
选用教材: 书名: 程序设计语言编译原理???
作者: 陈火旺,刘春林,谭庆平等编著
??? 出版社: 国防工业出版社
??? 出版日期: 2007

一、教学目的与任务

通过对该课程的学习,使学生能够了解编译程序构造的一般原理、基本设计方法和主要实现技术。使学生掌握编译程序的五个逻辑阶段:在词法分析中,深入理解正规表达式与有限自动机的理论和不确定的有限自动机转化为确定有限自动机的方法;在语法分析中,理解上下文无关方法的概念,掌握自上而下分析和自下而上分析的方法,深入理解消除左递归、消除回溯、提取左因子的方法和LL(1)分析法;在语义分析和中间代码生成中,掌握属性文法和语法制导翻译的基本思想、中间代码的格式和语句翻译的方法;在优化和目标代码生成中,了解其基本方法。除此之外,还需对符号表管理以及运行时存储空间组织的管理方法加以了解。

二、教学方法与特色

在学习编译原理之前,首先要求学生对一些源语言(如C或Java)和目标机器有所了解。
在教学过程有,其方法和特色有:
(1)在介绍语言实现技术的同时,强调一些相关的理论知识,如形式语言和自动机理论、语法制导的定义和属性方法、类型论等。
(2)在介绍编译器各逻辑阶段的实现时,强调形式化描述技术。
(3)强调对编译原理和技术的宏观理解和把握,而不把读者的注意力分散到一些枝节的算法上。
(4)在教学过程中,不偏向于某种源语言或是目标机器。
(5)鼓励学生在学习过程中用所学的知识去分析和解决实际问题,激发学生学习编译原理和技术的积极性。

三、教学内容与要求

第1章 引论

1、课程性质与任务
2、编译过程概述
3、编译程序的结构
第2章 高级语言及其语言描述
1、程序语言的定义
2、高级语言的分类
3、语句与控制结构
4、上下文无关文法
5、语法分析树与二义性
第3章 词法分析
1、 词法分析器的要求
2、词法分析器的设计
3、正规表达式
4、有限自动机
5、词法分析器的自动产生
第4章 语法分析—自上而下分析
1、语法分析器的功能
2、自上而下分析面临的问题
3、 LL(1)分析法
4、递归下降分析程序构造
5、预测分析程序
6、LL(1)分析中的错误处理
第5章 语法分析—自下而上分析
1、自下而上分析基本问题
2、算符优先分析
3、语法分析器的自动产生工具
第6章 属性文法和语法制导翻译
1、属性文法
2、基于属性文法的处理方法
3、S-属性文法的自下而上计算
4、L-属性文法和自顶而下翻译
5、自上而下计算
第7章 语义分析和中间代码生成
1、中间语言
2、说明语句
3、赋值语句的翻译
4、Bool表达式的翻译
5、控制语句的翻译
6、过程调用的处理
7、类型检查
第8章 符号表
1、符号表的组织与作用
2、整理与查找
3、名字的作用与范围
4、符号表的内容
第9章 运行时存储空间组织
1、目标程序运行时的活动
2、运行时存储器的划分
3、简单的栈式存储分配
第10章 优化
1、 局部优化
2、 循环优化
第11章 目标化码生成
1、目标代码生成的基本问题
2、目标机器模型
3、简单的代码生成器
4、寄存器分配
5、DAG的目标代码
6、 窥孔优化
第12章 并行编译基础
1、 并行编译的基本概念
2、 并行编译的依赖关系
3、 依赖关系测试
4、 循环的向量化
5、 循环变换技术

四、教学安排及方式

本课程总学时90学时,课堂总学时72学时,实践总学时18学时。

章次 内容 总学时 课堂学时数 实践学时数
1 引论 4 4 0
2 高级语言及其语言描述 10 8 2
3 词法分析 14 12 2
4 语法分析—自上而上分析 16 12 4
5 语法分析—自下而上分析 16 12 4
6 属性方法和语法制导翻译 10 8 2
7 语义分析和中间代码生成 10 8 2
8 符号表 6 4 2
9 运行时存储空间组织 1 1 0
10 优化 1 1 0
11 目标代码生成 1 1 0
12 并行编译基础 1 1 0
90 72 18

五、考核方式

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

六、参考教材
(1) 陈意云, 张昱编. 编译原理(第2版).高等教育出版社.
(2) Louden, K.C编. 编译原理及实践(文版).中信出版社.
(3) Aho,A. V., Sethi, R, Ullman,J.D.编. 编译原理技术与工具(英文版).人民邮电出版社.

《编译原理》课程标准相关推荐

  1. 国内外编译原理课程实践教学现状分析

    <自己动手写编译器.链接器> 冯向萍 (新疆农业大学计算机与信息工程学院)   摘 要:本文主要从教材的选择,实践项目的设置以及实践课程占总评成绩的比例等方面分析和比较了国内外多所高校编译 ...

  2. PL/0语言编译器扩展 编译原理课程实践(1)

    转眼大学生活就要结束,编译原理课程学的东西很多都忘记了.当时我们编译原理课程实践是PL/0语言编译器扩展,在原有PL/0语言文法进行扩展.我写这次博文一是为了回忆以前学的知识,加深记忆:二是和大家分享 ...

  3. 编译原理课程作业-Cminus语言的词法及语法分析器实现

    Cminus Compiler 编译原理课程作业-Cminus语言的词法及语法分析器实现 设计思想 词法分析 使用确定有限态自动机(DFA)实现与Lex自动分析两种方式实现. 语法分析 使用递归下降方 ...

  4. 【20200422】编译原理课程课业打卡十七之求解文法FirstVTLastVT构造文法算符优先关系表

    [20200422]编译原理课程课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表 一.课业打卡十七之求解文法FirstVT&LastVT&构造 ...

  5. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  6. 编译原理课程设计-对pl0语言进行扩充

    文章目录 一. 设计目的及要求 1.1 设计目的 1.2 设计要求 1.2.1 要求一 1.2.2 要求二 1.2.3 要求三 二.程序设计 2.1 程序的组织结构 2.1.1 PL/0编译程序函数定 ...

  7. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器

    编译原理课程实践--实现具有初等函数运算语言的解释器或编译器 作者:Sylvan Ding |转载请注明文章出处! 摘要:本文主要内容是设计词法分析器.语法分析器(LL(1).SLR(1))和语义分析 ...

  8. 【编译原理】Compiler_Stanford University 编译原理课程地址

    课程简介 编译原理课程作为计算机专业本科生的必修课,能够使学生们增加对编译过程的了解.因为想加深对编译器的了解和实现一个简单的编译器,所以我找到了该课程,通过阅读该课程的简介,觉得该课程还是十分不错的 ...

  9. 编译原理公式计算器C语言,编译原理课程设计-简单计算器实现.doc

    编译原理课程设计-简单计算器实现 课程设计报告课程:编译原理学号:姓名:班级:11级嵌入式应用技术班教师:时间:2014年6月计算机科学与技术系 设计名称:简单计算器的实现设计内容.目的与要求:设计内 ...

  10. 编译原理课程设计词法分析

      编译原理课程设计词法分析任务书 5)参考文献: (1)张素琴,吕映芝. 编译原理[M]., 清华大学出版社 (2)蒋立源.康慕宁等,编译原理(第2版)[M],西安:西北工业大学出版社 6)课程设计 ...

最新文章

  1. 无法访问D盘,执行页内操作时的错误
  2. 计算机软件和硬件比较,软件与硬件RAID优劣之比较
  3. 利用GoogleEarth影像打造Skyline MPT案例(转载)
  4. word文档基本编辑功能_word基本编辑的方法?word基本知识文件操作和文本编辑?...
  5. ubuntu知道文件名查找文件路径
  6. listbox wpf 取消边框_停止使用箭头C#WPF导航列表框(Stop listbox from navigating with arrows C# WPF)...
  7. 模糊理论在机器人传感器中的应用_智能家电中的传感器应用大全
  8. python中print的用法_Python中print函数简单使用总结
  9. 表格打印没有左边线_office办公软件Excel表格的打印技巧,建议收藏
  10. ps怎么更改背景图层大小_PhotoShop处理图层的一些技巧方法、PS图层处理教程
  11. 当我设计游戏服务器时,我在想些什么?(1)
  12. 小程序入门学习16--上传小程序至github
  13. Oracle Sql Developer 改成英文界面
  14. golang版微信小程序图片上传,服务器保存
  15. 蚂蚁支付宝小程序开发从零开始[含demo]
  16. 出中的意思是什么_从里出来是什么意思
  17. xxm系统-DB中勒索病毒
  18. 如何删除tmp计算机桌面,教你Win10系统中tmp文件删除不了应该如何解决?
  19. python列表索引超出范围 等于啥_Python列表错误,列表索引超出范围
  20. 带符号的矩阵进行运算时,出现conj

热门文章

  1. 看动画学算法之:排序-选择排序
  2. Scala教程之:面向对象的scala
  3. Leet Code OJ 2. Add Two Numbers [Difficulty: Medium]
  4. Leet Code OJ 119. Pascal's Triangle II [Difficulty: Easy]
  5. 分布式系统理论基础 - 一致性、2PC和3PC
  6. 【言简意赅】四句话搞懂第一范式,第二范式,第三范式,以及BCNF
  7. 如何获得所有CSDN勋章的获取方式?
  8. signature=8cc1e8491a741a9dc954b549013b75e5,基于小波的SAR影像纹理分析
  9. 第一章 Spring基础
  10. python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白