编译原理与技术 中国科学技术大学 计算机科学与技术学院 张昱、陈意云 0551-3603804,3607043 yuzhang,yiyun@ustc.edu.cn
编译原理与技术 中国科学技术大学 计算机科学与技术学院 张 昱、陈意云 0551-3603804, 3607043 yuzhang yiyun@ustc edu cn yuzhang, yiyun@ustc .edu .cn
课程简介 课程内容 -介绍编译器构造的一般原理和基本实现方法 包括的理论知识:形式语言和自动机理论、语法 制导的定义等 课程特点 强调对编译原理和技术的宏观理解,不把注意力 引导到理论和一些枝节算法上 一不偏向于任何源语言或目标机器 一鼓励用所学的知识去分析和解决实际问题
课 程 简 介 课程内容 – 介绍编译 构造的 般原 基本实 方法 介绍编译器构造的一般原理和基本实现方法 – 包括的理论知识:形式语言和自动机理论、语法 制导的定义等 • 课程特点 – 强调对编译原理和技术的宏观理解,不把注意力 引导到理论和一些枝节算法上 – 不偏向于任何源语言或目标机器 – 鼓励用所学的知识去分析和解决实际问题
课程简介 学习意义 理解编程语言的设计和实现,了解和编程语言有 关的理论 对宏观把握编程语言来说,起到奠基的作用 从软件工程看,编译器是一个很好的实例,所介 绍的概念和技术能应用到一般的软件设计之中 -编译技术的应用和编译技术的发展 高级语言设计、计算机系统结构的优化(并行、内 存分层)、新型计算机系统结构的设计、程序翻译 提高软件开发效率的工具、高可信软件
课 程 简 介 学习意义 – 理解编程语言的设计和实现,了解和编程语言有 关的理论 对宏观把握编程语言来说,起到奠基的作用 – 从软件工程看,编译器是 个很好的实例 编译器是一个很好的实例,所介 绍的概念和技术能应用到一般的软件设计之中 – 编译技术的应用和编译技术的发展 高级语言设计、计算机系统结构的优化 计算机系统结构的优化(并行、内 存分层)、新型计算机系统结构的设计、程序翻译、 提高软件开发效率的工具 、高可信软件
课程简介 教材和参考书 张昱、陈意云,编译原理与技术,高等教育出版 社,2010 张昱、陈意云,编译原理实验教程,高等教育出 版社,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
课 程 简 介 教材和参考书 – 张昱、陈意云,编译原理与技术 编译原理与技术,高等教育出版 社,2010 – 张昱、陈意云,编译原理实验教程 编译原理实验教程,高等教育出 版社, 2009 – A. V. Aho, M. S. Lam, R. S thi e , and J. D. Ullman, Compilers: Principles, Techniques, and Tools , 2nd edition, Addison-W l es ey, 2007 – 陈意云、张昱,编译原理习题精选与解析,高等 教育出版社,2005 – 教学资源网页:http://staff.ustc.edu.cn/~yiyun http://staff.ustc.edu.cn/~yuzhang/compiler
课程简介 课程要求 一质量上的目标:师生共同努力,达国内最好水平 讲课进展较快,平时不复习并加深理解,后面将 听不懂 作业:少而精,每周交一次作业 课程设计:自己动手,丰产丰收 考试:开卷,灵活运用知识 学期总评=考试成绩占50%,作业占10%,课程 设计40% -上课、设计、考试时间大体安排
课 程 简 介 课程要求 – 质量上的目标:师生共同努力,达国内最好水平 达国内最好水平 – 讲课进展较快,平时不复习并加深理解,后面将 听不懂 – 作业:少而精,每周交 次作业 一 – 课程设计:自己动手,丰产丰收 – 考试:开卷,灵活运用知识 – 学期总评 = 考试成绩占50%,作业占10%,课程 设计40% – 上课、设计、考试时间大体安排 考试时间大体安排
第1章引论 名词解释 翻译器(translator)、编译器(compiler) 解释器(interpreter) 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种 表示 本章通过描述编译器的各个阶段来介绍编译 这个课题
第1章 引 论 • 名词解释 – 翻译器(translator)、编译器(compiler) – 解释器(interpreter) • 编译器从逻辑上可以分成若干个阶段 • 每个阶段把源程序从一种表示变换成另一种 表示 • 本章通过描述编译器的各个阶段来介绍编译 这个课题
1.1编译器概述 源程序 符号表 词法分析器 独立于机器的代码优化器 语法分析器 代码生成器 语义分析器 依赖于机器的代码优化器 中间代码生成器 目标机器代码
1 1.编译器概述 源程序 符号表 词法分析器 语法分析器 独立于机器的代码优化器 语义分析器 代码生成器 依赖于机器的代码优化器 中间代码生成器 目标机器代码
1.1编译器概述 position initial rate 60 符号表 position 2 initial 词法分析器 3 rate id,1〉=〉id,2〉(+〉id,3》(*)60>
1 1.编译器概述 position = initial + rate 60 符 号 表 1 position . . . position initial + rate 60 p initial 2 . . . 词法分析器 3 rate . . . id, 1 = id, 2 + id, 3 60
1.1编译器概述 表达式的语法特征 任何一个标识符都 表达式 是表达式 任何一个数都是表 表达式 表达式 达式 表达式 表达式 如果e,和e,都是表 标识符 达式,那么 (initial) e+e2 标识符 (rate) 数, ● e ●(e) 也都是表达式 initial+rate*60的分析树
1 1. 1 编译器概述 表达式的语法特征 • 任何 个标识符都 一 表达 式 是表达式 • 任何 一个数都是表 式 任何 个数都是表 表达 式 + 表达 式 达式 • 如果 e 和 e 都是表 式 式 标识符 表达式 表达式 * + • 如果 e 1 和 e 2都是表 达式,那么 标识符 (initial) 标识符 数 * e 1 + e 2 e 1 * e 2 标识符 (rate) 数 (60) 1 2 ( e 1 ) 也都是表达式 initial + rate initial + rate * 60 的分析树
1.1编译器概述 id,1)=〉id,2)+)id,3》(*)60> 符号表 1 position 语法分析器 2 initial 3 rate a,1) id,2) ←一语法树 id,3)》
1 1.编译器概述 符 号 表 id, 1 = id, 2 + id, 3 60 符 号 表 1 position . . . initial 2 . . . 3 语法分析器 rate . . . = + id, 1 id 2 语法树 60 id, 2id, 3 语法树