编译原理第一章精品.ppt
文本预览下载声明
已有 要求 S T I C A A J A A C A A J A C J A A S T I 已有 要求 C A A C B B C B C C A A C B A C B C C B B 2 1 * * 编译程序总框 * 教学进度 计算机科学与工程系 编译原理(Compiler Construction) 主讲:方凤美 505 信息学院505 ffmscau@ bianyiscau@ 09xr2011 关于编译原理课程 到底学什么? 为什么要学? 怎么学? 课程知识点前后关联很紧密,一定要紧跟进度。 课程介绍: 编译原理是计算机各专业的重要专业基础课,是一门涉及设计和构造编译程序的一般原理、基本方法和主要实现技术的课程。内容主要包括:高级语言的形式化、词法分析方法、语法分析方法、语法制导翻译技术、优化技术等。 学习指导:《少走弯路:学习编译原理的相关建议 》 /pcedu/empolder/life/0504/597581.html 教材与参考资料: 教材:编译原理(第三版) 刘铭 徐兰芳 骆婷 编 电子工业出版社 ISBN 978-7-121-12938-4 参考教材: 1.程序设计语言编译原理(第三版) 陈火旺 等编著 国防工业出版社 2.编译原理(Alfred V.Aho等 著) 李建中等译 机械工业出版社 图片 教学环节: 理论教学(上课、作业) 实验(上机检查、实验报告) 期末考试 成绩评定: 平时成绩: (30%) 实验、作业、课堂提问、考勤 期末考试: (70%) 二进制代码 汇编指令 用户 高级语言程序 计算机 编译 编写 执行 学习内容 第一章 编译概述 编译的概念 编译过程 编译器的逻辑结构 编译器的生成 翻译程序:将一种语言程序(源)转换成另一种语言程序(目标),两者在逻辑上是等价的。 如果源语言是高级语言,目标语言是低级语言,则称为编译程序。 1.1 编译的基本概念 先编译,后执行 解释程序:边转换边执行,不生成目标代码 编译程序(Compiler) 目标程序 源程序 把高级语言程序翻译成等价的低级语言 程序。 编译程序(Compiler)的功能 1.2 编译过程和编译程序的结构 编译过程一般可分为五个阶段: 一、词法分析 二、语法分析 三、语义分析与中间代码生成 四、优化 五、目标代码生成 例如,有源程序段如下: float r,h,s; s= 2*3.1416*r*(h+r); 一、词法分析:识别出源程序中的一个个单词符号 保留字,float 标识符,r 分界符, , 标识符, h 分界符,, 标识符, s 分界符,; 标识符, s 算符, = 常数 , 2 算符,* 常数 , 3.1416 算符,* 标识符,r 算符,* 分界符,( 标识符, h 算符,+ 标识符,r 分界符,) 分界符,; float r,h,s; s= 2*3.1416*r*(h+r); 二、语法分析:把单词符号串组合成各类语法单位 标识符, s 算符, = 常数 , 2 算符,* 常数 , 3.1416 算符,*标识符,r 算符,* 分界符,( 标识符, h 算符,+ 标识符,r 分界符,) (即s= 2*3.1416*r*(h+r) ) 识别2*3.1416*r*(h+r)为表达式 识别s= 2*3.1416*r*(h+r)为赋值语句 词法分析是线性分析, 语法分析是一种层次结构分析 赋值语句经语法分析生成语法分析树 赋值语句经语法分析生成语法分析树 赋值语句s= 2*3.1416*r*(h+r) 的语法树 = s * 2 * 3.1416 r * r h + 表达式 赋值语句 表达式 表达式 表达式 三、语义分析与中间代码生成:分析语法范畴的含义,并进行初步翻译(产生中间代码) 中间代码:一种含义明确、便于处理的记号系统,通常独立于具体的硬件系统。与机器指令较接近,易于转换成机器指令。 中间代码可用四元式、三元式、间接三元式、逆波兰式、树形表示等 赋值语句经语义分析生成语义树 例赋值语句s= 2*3.1416*r*(h+r)经语义分析生成语义树如下 = s * 2 * 3.1416
显示全部