hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

认证学习
为你提供认证成绩和证书,以及AI高效学习服务
查看详情
大学

国家精品

认证学习

智慧课程

理学工学农学

计算机

经济管理

外语

音乐与艺术

心理学

文史哲法

医学与保健

教育教学

大学生竞赛

软件实训

人工智能

升学/择业

考研

期末突击

专升本

四六级

保研及论文

求职就业

专四专八

大学应试英语

期末资料

终身学习

名师专栏

兴趣技能

hi,小mooc
期末不挂科
期末考试会员
认证学习
编译技术
第12次开课
开课时间: 2024年08月31日 ~ 2024年12月05日
学时安排: 3-5小时每周
当前开课已结束 已有 94 人参加
认证学习
认证成绩和证书
智能问答和解析
视频学习辅助
老师已关闭该学期,无法查看
课程详情
课程评价(20)
spContent=“编译技术”作为软件工程专业的核心课程,旨在对介绍编译器构造的一般原理和基本实现方法。本课程强调对编译原理和技术的宏观理解。通过课程讲解,使学生掌握文法与语言、词法分析、语法分析、语义分析、优化与目标代码的生成等基础理论知识。
“编译技术”作为软件工程专业的核心课程,旨在对介绍编译器构造的一般原理和基本实现方法。本课程强调对编译原理和技术的宏观理解。通过课程讲解,使学生掌握文法与语言、词法分析、语法分析、语义分析、优化与目标代码的生成等基础理论知识。
—— 课程团队
课程概述

各位同学,大家好:

感谢大家选择《编译技术》慕课课程,希望这门课程能够对大家有所帮助。


编译技术是计算机的核心技术之一。“编译技术”作为软件工程专业的核心课程,旨在对介绍编译器构造的一般原理和基本实现方法。本课程强调对编译原理和技术的宏观理解。通过课程讲解,使学生掌握文法与语言、词法分析、语法分析、语义分析、优化与目标代码的生成等基础理论知识。

授课目标

课程学习目标:

1、能够说出编译器的内涵与外延、以及对程序开发的作用

2、能够使用正规式、有限自动机进行词法分析,会使用子集构造法将NFA转换为DFA

3、能够使用自上而下的预测分析法和自下而上的移进归约分析法进行语法分析

4、运用S属性和L属性定义解决语义分析问题

5、能理解程序编译时和运行时的区别,理解运行时存储空间的组织与分配方法

6、能充分运用三地址代码、后缀表示、语法树解决中间代码生成问题

7、能够复述编译器的基本结构、编译器的基本工作原理

8、本课程列出了若干个讨论问题,由学生自己思考讨

课程大纲
绪论
课时目标:【本章目标】本章目标对应课程学习目标1。本章简要介绍编译器的各个组成部分以及编译器技术的各种应用。完成本章学习后,学习者将能够:(1)复述编译器、编译软件设计的内涵与外延;(2)复述编译器划分为前端和后端,以及为什么这样划分。
本章的主要视频及课件资源列表如下(1学时):
1 课程简介
习题:
编译器概述
词法分析
课时目标:【本章目标】本章目标对应课程学习目标2。本章介绍正规式和有限自动机的概念以及词法分析器的自动生成方法。完成本章学习后,学习者将能够:(1)会使用正规式对词法记号进行描述与识别(2)掌握有限自动机的概念和转换算法(3)了解词法分析器的生成器
本章的主要视频及课件资源列表如下(5学时):
2.1 词法记号
2.2 正规式
2.3 有限自动机
2.4 DFA构建
2.5 Lex
习题:
词法分析器的功能
正规式与语言的对应关系
NFA与DFA的概念
语法分析
课时目标:【本章目标】本章目标对应课程学习目标2和学习目标3。本章介绍上下文无关文法的基本概念,详细介绍适合于手工实现的预测分析技术和自动工具采用的LR分析算法。完成本章学习后,学习者将能够:(1)掌握上下文无关文法的定义和作用(2)掌握语言和文法之间的关系(3)掌握自上而下分析的方法,会手工构造预测分析表(4)掌握自下而上分析的方法,会手工构造SLR/LR/LALR分析表
本章的主要视频及课件资源列表如下(15学时):
3.1.1 自上而下分析(上)语法分析
3.1.2 自上而下分析(下)提取左因子
3.2 first和follow
3.3 LL1
3.4.1 预测分析器(上)递归下降分析
3.4.2 预测分析器(下)非递归下降分析
3.5 语言和文法
3.6 归约句柄
3.7 移进归约分析过程
3.8 LR分析器
3.9 活前缀
3.10 SLR
3.11 LR
3.12 LALR
3.13 LR分析方法特点
3.14 非二义且非LR的上下文无关文法
习题:
上下文无关文法定义
二义性概念
形式语言鸟瞰
句柄概念
Yacc的相关概念
语法制导的翻译
课时目标:【本章目标】本章目标对应课程学习目标4。本章介绍语义规则和产生式相联系的两种方式:语法制导的定义和语法制导的翻译方案。。完成本章学习后,学习者将能够:(1)掌握语法制导的定义(2)掌握S属性定义的自下而上计算(3)L属性定义的自上而下计算(4)掌握L属性的自下而上计算
本章的主要视频及课件资源列表如下(8学时):
4.1 属性文法
4.2 属性依赖图和计算次序
4.3 S属性的自下而上计算
4.4 栈代码
4.5 L属性定义
4.6 翻译方案
4.7 预测翻译器的设计
4.8 L属性的自下而上计算
4.9 模拟继承属性的计算
习题:
继承属性、综合属性的概念
S属性定义的概念
注释分析树
L属性定义的概念
L属性定义的自下而上计算中辅助非终结符引入的目的
运行时存储空间的组织和管理
课时目标:【本章目标】本章目标对应课程学习目标5。本章介绍在代码生成之前,静态的程序正文和运行时的活动之间的联系,以及静态的名字和运行时数据对象之间的绑定关系。完成本章学习后,学习者将能够:(1)掌握局部存储分配策略(2)掌握全局栈式存储分配(3)掌握非局部名字的访问方法(4)掌握参数传递的几种一般方法
本章的主要视频及课件资源列表如下(4学时):
5.1 概述
5.2 全局栈式存储
5.3 调用序列
5.4 非局部名字
习题:
衬垫区、对齐的概念
静态作用域、嵌套深度的概念
中间代码生成
课时目标:【本章目标】本章目标对应课程学习目标6。本章基于语法制导定义的方法,介绍编程语言的基本结构怎样被翻译成独立于机器的中间表示。完成本章学习后,学习者将能够:(1)了解中间语言的种类(2)掌握声明语句的翻译(3)了解赋值语句的翻译
本章的主要视频及课件资源列表如下(2学时):
6.1 中间代码生成概述
6.2 声明语句
代码生成
课时目标:【本章目标】本章目标对应课程学习目标7。本章介绍代码生成器所需要解决的问题,通过一个简单的代码生成算法理解代码生成的全过程。完成本章学习后,学习者将能够:(1)了解代码生成器设计中的问题(2)了解基本块和流图的概念(3)了解一个简单的代码生成器的全过程
本章的主要视频及课件资源列表如下(2学时):
7.1 代码生成器的设计中的问题
7.2 目标机器
7.3 基本块和流图
7.4 一个简单的代码生成器
一个简易的编译器设计与实现
课时目标:【本章目标】本章目标对应课程学习目标8。本章介绍如何实现一个简单的基于Python的编译器。完成本章学习后,学习者将能够:(1)了解如何设计一个编译器(2)了解实现编译器过程中应该注意的事项。
本章的主要视频及课件资源列表如下(2学时):
8.1 Scanner
8.2 Parser -1LRItem
8.3 Parser-2ActionGoto
8.4 SA
8.5 SimpleJava
展开全部
预备知识

已经修完程序设计、离散数学、数据结构、操作系统、等计算机基础课程。


最低知识:至少学过一门程序语言,并能够实现hello world程序的编写和运行。


如果学过Python、Java、CPP、C等任何一门语言,都对于本课程有更多帮助。


本课程的学习者,应具备以下先导知识:


1. 程序语言设计:学习过相关课程,能独立编写200行以上代码的程序。本课程是支撑课程学习目标1-5的先导知识。


2. 计算机组织与结构:学习过计算机组织与结构课程,了解计算机内部5大部件的工作原理。本课程是支撑课程学习目标4的先导知识。


3. 操作系统原理:学习过操作系统原理课程,了解文件、目录、IPC等机制的基本原理;本课程是支撑课程学习目标5和6的先导知识。


4. 数据结构与算法:学习过数据结构与算法课程,能熟练使用理解简单数据结构及算法解决问题;本课程是支撑课程学习目标5的先导知识。

参考资料

本课程推荐教材及与课程学习目标对应关系如下:


1. 授课教材:《编译原理》 陈意云 张昱编著 高教育出版社 2016年第三版 ISBN:9787040404913。

(1)教材特点:该教材为陈意云和张昱老师编著,是该书第三版。是目前国内编译技术课程使用的主流教材。

(2)使用方法:本教材对应课程学习目标1-5,可以做到对课程内容的全覆盖,请同学们学习完视频之后,一定要详细阅读教材中的对应部分,并针对课后习题进行联系,能够有效提高学习质量;


2. 参考教材1:《编译原理》Alfred V.Aho等编著 机械工业出版社 2018年第二版 ISBN:9787111251217。

(1)教材特点:相比于授课教材受篇幅限制的问题,本教材内容更加详尽。《编译原理》抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。

*注:为方便国内本科学生学习,本书还有一本精简版的《编译原理》(本科教学版),推荐大家学习。

(2)使用方法:本教材对应课程学习目标5。建议将来有志于进行完整编译器软件设计和开发的同学通读本教材,并动手完成教材中的编译器开发案例;


3. 参考教材2:《现代编译原理 C语言描述》修订版(图灵出品) 人民邮电出版社 2018年第二版 ISBN:9787115476883。

(1)教材特点:按照编译器处理过程组织章节顺序,并精心设计了一个“学生项目编译器”,全面讲述现代编译器的结构、编译算法和实现方法。前端增加了面向对象的程序语言设计、函数式程序设计语言等现代语言的编译实现方法,后端增加了针对现代计算机体系结构特征的一些比较成熟的优化方法。

(2)使用方法:本教材对应课程学习目标5,建议对编译器设计更有兴趣的同学动手实现教材中的全部代码。

常见问题

Q : 本课程的教材是哪本呢?

A : 本课程选用高等教育出版社的教材。《编译原理》高教出版社,张煜 陈意云 主编。第四版。


Q : 本课程的课件可以提供吗?

A : 可以,在每个视频对应章节均提供了对应的课件,请大家学习。


Q : 学完本课程是否能自己写一个编译器呢?

A : 是的,如果都学完本课程,能够写一个小型语言的编译器。


Q : 哇,真的呀?

A : 嗯嗯,是真的,在本课程中第八章已经配备一个学生写的小型语言编译器SimpleJava,有详细的演示视频,供大家学习参考一下。


Q : 这一次开课有哪些新的变化呢?

A : 课程组教师已经制作好全部字幕,并进行了校对字幕,本次开课所有视频已经配备字幕,以方便大家的学习。此外还进一步丰富了课程习题,为每一章均配备了章节习题测试。



祝大家学习愉快!

大连理工大学
3 位授课老师
徐秀娟

徐秀娟

副教授

任志磊

任志磊

副教授

	贾棋

贾棋

副教授

推荐课程

【DeepSeek适用】小白玩转AI大模型应用开发

林粒粒

226人参加

小白玩转 Python 数据分析

林粒粒

92人参加
下载
下载

下载App