第一章编译程序概述课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第一章编译程序概述课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 编译程序 概述 课件
- 资源描述:
-
1、第一章编译程序概述第一章编译程序概述教学要求教学要求1.1.上课时做笔记上课时做笔记2.2.每班选一位课代表每班选一位课代表 ,负责收作业,负责收作业,联系,准备记分册(标上班长、学联系,准备记分册(标上班长、学委电话)委电话)3.3.有问题及时向老师反馈有问题及时向老师反馈4.4.课堂纪律(上课不允许说话、上机课堂纪律(上课不允许说话、上机不允许玩游戏不允许玩游戏,手机打成震动)手机打成震动)辅导答疑辅导答疑n辅导答疑:辅导答疑:时间:每周周三时间:每周周三11、12节,课前后节,课前后地点:博观楼地点:博观楼209可以另约时间答疑可以另约时间答疑n联系方式:联系方式:Tel:Email:Q
2、Q:1458920766个人建议个人建议n 培养正思维培养正思维 思维模式思维模式=行为模式行为模式=最终结果最终结果 目标为了个人进步目标为了个人进步 培养良好学习习惯培养良好学习习惯 多讨论怎样做好,不讨论为什么没做好多讨论怎样做好,不讨论为什么没做好n 树立目标树立目标 目标目标=价值价值 专业学习目标专业学习目标周次周次星期星期节次节次实验室实验室第第2周周星期三星期三1-2 基础六基础六(96人人)第第4周周星期四星期四1-2 基础六基础六(96人人)第第7周周星期四星期四1-2 基础六基础六(96人人)第第9周周星期三星期三1-2 基础六基础六(96人人)第第13周周 星期四星期四
3、1-2 基础六基础六(96人人)主要内容主要内容n引入引入n编译程序与解释程序编译程序与解释程序n编译程序的功能分解与组织结构编译程序的功能分解与组织结构n编译程序的复杂性编译程序的复杂性n编译程序的设计与实现编译程序的设计与实现n编译程序的测试与维护编译程序的测试与维护n几个经典的编译程序几个经典的编译程序1 引入引入n计算机科学与技术计算机科学与技术n编译原理编译原理课程课程n编译原理编译原理主要内容主要内容n选用教材选用教材n为什么要学习编译原理为什么要学习编译原理n需要注意的问题需要注意的问题1.1 1.1 计算机科学与技术计算机科学与技术n含义含义 科学:构成计算基础的基本概念和模型
4、(又称为:科学:构成计算基础的基本概念和模型(又称为:形式理论)形式理论)技术:设计计算系统的工程和技术技术:设计计算系统的工程和技术n形式理论形式理论 有限自动机、正则表达式、正则集合有限自动机、正则表达式、正则集合 上下文无关文法上下文无关文法 下推机下推机 图灵机图灵机 不可判定性不可判定性n与编译原理的关系与编译原理的关系 形式理论是编译原理的理论基础形式理论是编译原理的理论基础 在后面我们要讲到前三个部分在后面我们要讲到前三个部分1.2 1.2 编译原理编译原理课程课程n课程性质课程性质 学科基础课学科基础课n先修课程先修课程 程序设计语言(程序设计语言(Pascal、C等)等)程序
5、设计、数据结构程序设计、数据结构 离散数学离散数学 操作系统操作系统1.31.3编译原理编译原理主要内容主要内容n按照编译程序的主要组成部分进行介绍按照编译程序的主要组成部分进行介绍 词法分析词法分析 语法分析语法分析 语义分析语义分析 代码生成和优化代码生成和优化 符号表和错误处理符号表和错误处理n一个编译程序实例一个编译程序实例 PL/0编译程序分析编译程序分析1.4 1.4 选用教材选用教材n教材教材 金成植:金成植:编译程序设计原理编译程序设计原理n编译程序编译程序 构造原理构造原理 实现技术实现技术n特点特点 采用原理与实例相结合的方法进行介绍采用原理与实例相结合的方法进行介绍 兼顾
6、原理和实现技术兼顾原理和实现技术1.5 为什么要学习编译原理为什么要学习编译原理n编译程序是一个大型综合、复杂的程序,编译程序是一个大型综合、复杂的程序,通过该课程的学习了解一个大型软件的通过该课程的学习了解一个大型软件的设计与实现设计与实现n有助于理解现有的编译程序的实现方法有助于理解现有的编译程序的实现方法n加深对程序设计语言的理解加深对程序设计语言的理解n提高调试程序能力提高调试程序能力n为进一步深造打下基础为进一步深造打下基础1.6 1.6 需要注意的问题需要注意的问题n对课程的难度应该有足够的思想准备对课程的难度应该有足够的思想准备n注意平时的听课和积累注意平时的听课和积累n原理侧重
7、理解原理侧重理解n具体的算法和程序需要实际动手分析具体的算法和程序需要实际动手分析2 2 编译程序与解释程序编译程序与解释程序n语言与程序设计语言语言与程序设计语言n程序设计语言主要内容程序设计语言主要内容n程序设计语言分类程序设计语言分类n编译原理基本概念编译原理基本概念n编译程序与解释程序的异同编译程序与解释程序的异同n使用解释程序的情况使用解释程序的情况2.1 2.1 语言与程序设计语言语言与程序设计语言n语言语言 人们用来交流的工具人们用来交流的工具n程序设计语言程序设计语言 人与计算机交流的工具人与计算机交流的工具n二者的区别二者的区别 对象对象 二义性二义性2.2 2.2 程序设计
8、语言主要内容程序设计语言主要内容n数据定义数据定义 字符集、常量、类型、变量、表达式字符集、常量、类型、变量、表达式n语句语句 顺序、分支和循环顺序、分支和循环n函数函数 过程、函数、子程序过程、函数、子程序n复杂数据类型复杂数据类型 数组、记录、指针等等数组、记录、指针等等2.3 2.3 程序设计语言的分类程序设计语言的分类n按照层次按照层次 高级语言高级语言 低级语言低级语言n按照结构按照结构 过程式语言(过程式语言(C、Pascal)函数式语言(函数式语言(LISP、ML)逻辑式语言(逻辑式语言(Prolog)对象式语言(对象式语言(SmallTalk、Java、C+)2.4 2.4 编
9、译程序基本概念编译程序基本概念n源程序:用程序设计语言编制的程序源程序:用程序设计语言编制的程序n目标程序:与源程序功能等价的目标代目标程序:与源程序功能等价的目标代码码n编译程序:把源程序转换成目标程序的编译程序:把源程序转换成目标程序的程序程序n解释程序:执行源程序得到执行结果的解释程序:执行源程序得到执行结果的程序程序n汇编程序:把汇编源程序转换成目标程汇编程序:把汇编源程序转换成目标程序的程序序的程序2.5 2.5 编译程序与解释程序区别编译程序与解释程序区别源程序源程序数据数据源程序源程序解释程序解释程序计算结果计算结果编译程序编译程序目标程序目标程序2.6 2.6 使用解释程序的情
10、况使用解释程序的情况n不追求执行速度不追求执行速度n有些程序允许执行式改变自身有些程序允许执行式改变自身n人机对话的交互语言人机对话的交互语言n由解释程序到编译程序的自动生成系统由解释程序到编译程序的自动生成系统3 3 编译程序的功能分解与组织结构编译程序的功能分解与组织结构n功能结构图功能结构图n遍的概念遍的概念n源程序的处理过程源程序的处理过程3.1 3.1 功能结构图功能结构图错误处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表处理3.1 3.1 功能结构图(续)功能结构图(续)n编译程序的输入:源程序编译程序的输入:源程序n编译程序的输出:目标程序
11、编译程序的输出:目标程序n编译程序的功能模块编译程序的功能模块 词法分析:把源程序变成单词串词法分析:把源程序变成单词串 语法分析:检察源程序是否符合语法结构语法分析:检察源程序是否符合语法结构 语义分析:标识符的含义是否正确语义分析:标识符的含义是否正确 代码生成:生成目标代码代码生成:生成目标代码3.2 3.2 遍的概念遍的概念n遍的概念遍的概念 对源程序或与其等价的中间代码扫描一次对源程序或与其等价的中间代码扫描一次n按遍划分按遍划分 一遍一遍 多遍多遍n一遍特点一遍特点 避免重复工作、速度快、代码质量不高避免重复工作、速度快、代码质量不高n多遍特点多遍特点 结构算法清晰、易于掌握、能够
12、产生好的目标代码结构算法清晰、易于掌握、能够产生好的目标代码3.3 3.3 源程序的处理过程源程序的处理过程n预处理器编译程序汇编程序装配连接扩展程序 源程序 目标汇编程序 可重定位机器代码 可执行机器码可重定位目标文件库3.3 3.3 源程序的处理过程(续)源程序的处理过程(续)n实例实例 以以DOS下的下的C语言处理过程为例语言处理过程为例 C是多遍编译是多遍编译 第一遍处理包含、宏等信息第一遍处理包含、宏等信息 以后各遍进行编译以后各遍进行编译 过程过程 第一遍编译得到标准第一遍编译得到标准C程序程序 经过经过C编译器的到目标程序编译器的到目标程序 经过连接得到可执行程序经过连接得到可执
13、行程序 装入装入DOS执行执行4 4 编译程序复杂性编译程序复杂性n元程序元程序 处理程序的程序处理程序的程序n编译程序复杂性编译程序复杂性 元级程序元级程序 高级语言与低级语言差别大高级语言与低级语言差别大 编译程序要求高编译程序要求高5 5 编译程序的设计与实现编译程序的设计与实现n设计编译程序条件设计编译程序条件n 精通源语言精通源语言n 精通目标语言精通目标语言n 精通编译技术精通编译技术n编译程序的性能编译程序的性能n 可靠性、速度、目标代码速度、占用空间、可靠性、速度、目标代码速度、占用空间、可移植性、可维护性、可扩展性可移植性、可维护性、可扩展性5 5 编译程序的设计与实现(续)
14、编译程序的设计与实现(续)n开发编译程序的途径开发编译程序的途径n 预处理法预处理法n 移植法移植法n 直接移植直接移植n 交叉编译交叉编译n 自展法自展法n 工具法工具法n 例如:例如:LEX、YACCn 理论法理论法6 6 编译程序的测试和维护编译程序的测试和维护n编译程序测试编译程序测试 机械证明机械证明 测试测试 测试用例设计测试用例设计n编译程序维护编译程序维护 长期有效地改正发现的错误长期有效地改正发现的错误7 7 几个经典的编译程序几个经典的编译程序nPascal编译程序编译程序n设计者:设计者:Wirthn使用技术:递归下降、一遍扫描、栈式抽象机使用技术:递归下降、一遍扫描、栈
15、式抽象机n特点:产生特点:产生P代码代码nC编译程序编译程序n设计者:设计者:D.M.Ritchien使用技术:递归下降、二遍扫描、有可选的第三遍使用技术:递归下降、二遍扫描、有可选的第三遍n特点:可移植性好特点:可移植性好nFortran编译程序编译程序n设计者:设计者:Lowry和和Medlockn使用技术:综合使用技术:综合n特点:优化好特点:优化好小结小结n内容内容 编译程序的基本概念和相关知识编译程序的基本概念和相关知识 编译程序的组成和复杂性编译程序的组成和复杂性 几个常见的编译程序几个常见的编译程序n要求要求 掌握编译程序的组成和复杂性掌握编译程序的组成和复杂性 预习标准的预习标
16、准的Pascal语言语言 预习预习Turbo Pascal开发环境开发环境PASCAL语言基础知识任课教师王养廷复习n编译程序的主要组成部分,每个部分的功能n编译程序为什么复杂n预习标准的Pascal语言n预习Turbo Pascal开发环境主要内容nPascal概述n数据n语句1 Pascal概述nPascal历史Wirth Pascal Pascal 语言最初由瑞士苏黎士理工学院的尼古拉斯-沃斯(Niklaus Wirth)教授在1971年设计,作为Algol语言(1960年设计)简化本用于教学目的。Turbo Pascal 1983年Borland公司推出了世界闻名的Pascal编译器-
17、Turbo Pascal。由于既简洁功能又强,Turbo Pascal成为当时最畅销的编译器之一,而且在PC平台上非常流行。Delphi中的Pascal 1995年Borland发布了Delphi,使Pascal成为一种可视化编程语言。1 Pascal概述(续)n一个Pascal程序实例program circle(input,output);constpi=3.1416;varr,l,s:real;beginread(r);l:=2*pi*r;s:=pi*r*r;write(r,l,s)end.2 数据n字符集n标识符和保留字n常量n变量n运算符2.1 字符集nPascal字符集 字母 数字
18、 其它符号 字符集的引申 多语言的处理(ASCII,UniCode)2.2 标识符和保留字n标识符 定义:以字母开头,后面跟字母、数字组成的字符串。作用:用来表示各种程序元素的名称 规定:大小写不敏感 有效长度8,超过8个不起作用 建议:采用一个或多个英文单词组成 举例 score、charPosition2.2 表识符和保留字(续)n保留字 Pascal系统已经使用的单词 主要保留字 例如:program、begin、end、const、var、read、write、if、then、else等等 详细内容参考Pascal教程 作用 用来标识程序的语法成分2.2 表识符和保留字(续)n注释注释
展开阅读全文