课程简介 课程内容 介绍编译器构造的一般原理和基本实现方法 包括的理论知识:形式语言和自动机理论、语法 制导的定义和属性文法、类型论与类型系统、程 序分析原理等 强调形式描述技术和自动生成技术 强调对编译原理和技术的宏观理解,不把注意力 分散到枝节算法,不偏向于任何源语言或目标机 器
课 程 简 介 课程内容 – 介绍编译器构造的一般原理和基本实现方法 – 包括的理论知识:形式语言和自动机理论、语法 制导的定义和属性文法、类型论与类型系统、程 序分析原理等 – 强调形式描述技术和自动生成技术 – 强调对编译原理和技术的宏观理解,不把注意力 分散到枝节算法,不偏向于任何源语言或目标机 器
课程简介 学习意义 对编程语言的设计和实现有深刻的理解,对和编 程语言有关的理论有所了解,对宏观上把握编程 语言来说,起一个奠基的作用 从软件工程看,编译器是一个很好的实例,所介 绍的概念和技术能应用到一般的软件设计之中 编译技术的应用和编译技术的发展 高级语言设计、计算机体系结构的优化(并行、内 存分层)、新型计算机体系结构设计、程序翻译、 提高软件开发效率的工具、高可信软件
课 程 简 介 学习意义 – 对编程语言的设计和实现有深刻的理解,对和编 程语言有关的理论有所了解,对宏观上把握编程 语言来说,起一个奠基的作用 – 从软件工程看,编译器是一个很好的实例,所介 绍的概念和技术能应用到一般的软件设计之中 – 编译技术的应用和编译技术的发展 高级语言设计、计算机体系结构的优化(并行、内 存分层)、新型计算机体系结构设计、程序翻译、 提高软件开发效率的工具、高可信软件
课程简介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2008 张昱、陈意云, 编译原理实验教程,高等教育出 版社, 2009 A.V.Aho,M.S.Lam,R.Sethi,and J.D.Ullman, Compilers:Principles,Techniques,and Tools,2nd edition,Addison-Wesley,2007 陈意云、张昱,编译原理习题精选与解析,高等 教育出版社,2005 教学资源网页:http:/staff.ustc.edu.cn/~yiyun http://staff.ustc.edu.cn/~yuzhang/compiler
课 程 简 介 教材和参考书 – 陈意云、张昱,编译原理,高等教育出版社, 2008 – 张昱、陈意云,编译原理实验教程,高等教育出 版社, 2009 – A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools , 2nd edition, Addison-Wesley, 2007 – 陈意云、张昱,编译原理习题精选与解析,高等 教育出版社,2005 – 教学资源网页:http://staff.ustc.edu.cn/~yiyun http://staff.ustc.edu.cn/~yuzhang/compiler
课程简介 课程要求 质量上的目标:师生共同努力,达国内最好水平 讲课进展较快,平时不复习并加深理解,后面将 听不懂 -作业:少而精,周一课间交作业 课程设计:自己动手,大有收获 考试:开卷,灵活运用知识 -学期总评=考试成绩占60%,作业占10%,课程 设计30% 一上课、设计、考试时间大体安排
课 程 简 介 课程要求 – 质量上的目标:师生共同努力,达国内最好水平 – 讲课进展较快,平时不复习并加深理解,后面将 听不懂 – 作业:少而精,周一课间交作业 – 课程设计:自己动手,大有收获 – 考试:开卷,灵活运用知识 – 学期总评 = 考试成绩占60%,作业占10%,课程 设计30% – 上课、设计、考试时间大体安排
课程简介 课程设计要求 内容:独立地研发扩展PL0语言的编译器和解释 器 目标:巩固对理论和技术的理解, 提高程序设计 能力 技术准备:VC++的编程环境,C语言编程 考查与评分:对截止时间前提交的程序,通过测 试和答辩进行公开评分 前四年课程设计的经验和教训 对该课程设计的综合性认识不足 。对考查的“动真格”认识不足
课 程 简 介 课程设计要求 – 内容:独立地研发扩展PL/0语言的编译器和解释 器 – 目标:巩固对理论和技术的理解,提高程序设计 能力 – 技术准备:VC++的编程环境,C语言编程 – 考查与评分:对截止时间前提交的程序,通过测 试和答辩进行公开评分 – 前四年课程设计的经验和教训 • 对该课程设计的综合性认识不足 • 对考查的“动真格”认识不足
对课程的评论 本校少年班1994级一个同学,Stanford大学 博士(1999年) Actually I think the quality of the compiler course in USTC is really very good and can be compared with any universities here. 本系某考研同学(2006年〉 感觉您出的题目很有创意,也很有深度,没有 局限于固定的算法和题型,只看课本和复习往年的 题目而不深入思考的人是做不出来的,能够真正从 本质上考察一个考生的水平
对 课 程 的 评 论 • 本校少年班1994级一个同学,Stanford大学 博士(1999年) Actually I think the quality of the compiler course in USTC is really very good and can be compared with any universities here. • 本系某考研同学(2006年) 感觉您出的题目很有创意,也很有深度 ,没有 局限于固定的算法和题型,只看课本和复习往年的 题目而不深入思考的人是做不出来的,能够真正从 本质上考察一个考生的水平
对课程的评论 西南科技大学某考研学生(2004年) 看过你编的书后,感觉编译的原理可以一下子 和我平常学的很多学科和语言都联系起来了,可以 学到很多可以实际用到的东西,虽然是在讲同样的 东西,但您的教学方式让我很适应,学起来也很有 兴趣,大大减轻了我考研的疲劳感
对 课 程 的 评 论 • 西南科技大学某考研学生(2004年) 看过你编的书后,感觉编译的原理可以一下子 和我平常学的很多学科和语言都联系起来了,可以 学到很多可以实际用到的东西,虽然是在讲同样的 东西,但您的教学方式让我很适应,学起来也很有 兴趣,大大减轻了我考研的疲劳感
第一章引论 ·名词解释 翻译器(translator)、编译器(compiler) 解释器(interpreter) 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种 表示 本章通过描述编译器的各个阶段来介绍编译 这个课题
第一章 引 论 • 名词解释 – 翻译器(translator)、编译器(compiler) – 解释器(interpreter) • 编译器从逻辑上可以分成若干个阶段 • 每个阶段把源程序从一种表示变换成另一种 表示 • 本章通过描述编译器的各个阶段来介绍编译 这个课题
1.1编译器概述 源程序 符号表 词法分析器 独立于机器的代码优化器 语法分析器 代码生成器 语义分析器 依赖于机器的代码优化器 中间代码生成器 目标机器代码
1.1 编译器概述 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 独立于机器的代码优化器 代码生成器 依赖于机器的代码优化器 目标机器代码 符号表
1.1编译器概述 p0 sition=initial+rate*60←-字符流 符号表 position 2 initial 词法分析器 3 rate id,1〉(=〉(id,2〉〈+〉(id,3》(*)60〉←-记号流
符 号 表 position initial rate . . . . . . . . . 1 2 词法分析器 3 id, 1 = id, 2 + id, 3 60 position = initial + rate 60 1.1 编译器概述 记号流 字符流