程序设计语言编译原理第三版第1章ppt课件

上传人:工**** 文档编号:591570960 上传时间:2024-09-18 格式:PPT 页数:35 大小:391KB
返回 下载 相关 举报
程序设计语言编译原理第三版第1章ppt课件_第1页
第1页 / 共35页
程序设计语言编译原理第三版第1章ppt课件_第2页
第2页 / 共35页
程序设计语言编译原理第三版第1章ppt课件_第3页
第3页 / 共35页
程序设计语言编译原理第三版第1章ppt课件_第4页
第4页 / 共35页
程序设计语言编译原理第三版第1章ppt课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《程序设计语言编译原理第三版第1章ppt课件》由会员分享,可在线阅读,更多相关《程序设计语言编译原理第三版第1章ppt课件(35页珍藏版)》请在金锄头文库上搜索。

1、编译原理编译原理于静洋于静洋 yjyhenu.edu程序设计言语程序设计言语第一章第一章 引论引论1.1 1.1 什么叫编译程序什么叫编译程序1.2 1.2 编译过程概述编译过程概述1.3 1.3 编译程序的构造编译程序的构造1.4 1.4 编译程序与程序设计环境略编译程序与程序设计环境略1.5 1.5 编译程序的生成编译程序的生成1.1.1.1.什么是编译程序?什么是编译程序?什么是编译程序?什么是编译程序?1.1 什么叫什么叫编译程序程序翻译程序:一种言语程序翻译程序:一种言语程序-另一种言语程序另一种言语程序源言语源言语目的言语目的言语编译程序:高级言语程序编译程序:高级言语程序-低级言

2、语程序低级言语程序汇编程序:汇编言语程序汇编程序:汇编言语程序-机器言语程序机器言语程序解释程序:源言语程序解释程序:源言语程序-边解释边执行边解释边执行1 1编译方式:先编译后执行。编译方式:先编译后执行。2 2解释方式:以源程序作为输入,但不产生目的代码,而解释方式:以源程序作为输入,但不产生目的代码,而 是边解释边执行源程序本身。是边解释边执行源程序本身。 2.“2.“2.“2.“高级言语程序的执行方式高级言语程序的执行方式高级言语程序的执行方式高级言语程序的执行方式1.1 什么叫什么叫编译程序程序编译和解释的主要区别:编译和解释的主要区别:能否产生目的代码!能否产生目的代码!3. 3.

3、“编译程序在计算编译程序在计算机系统中的位置较机系统中的位置较接近于接近于“硬件硬件1.1 什么叫编译程序什么叫编译程序4.4.4.4.开展开展开展开展2020世纪世纪5050年代年代 第一个编译程序第一个编译程序 FORTRAN FORTRAN编译程序编译程序目前:编译原理与技术得到迅速开展,现已构成一套比较目前:编译原理与技术得到迅速开展,现已构成一套比较成熟的系统化的实际与方法,并开发出了一些好的编译程序成熟的系统化的实际与方法,并开发出了一些好的编译程序的实现言语、环境与工具。的实现言语、环境与工具。当时普遍以为设计和实当时普遍以为设计和实现编译程序是一件非常现编译程序是一件非常困难、

4、令人生畏的事情困难、令人生畏的事情1.1 什么叫什么叫编译程序程序1.2 编译过程概述程概述The elephant ate an banana.什么是言语?for K : = 1 to 100 dobeginM : = I + 10 * K ;N : = J + 10 * Kend一一. .类比自然言语翻译和编译过程类比自然言语翻译和编译过程英英汉汉 编译的任务过程编译的任务过程1)1)识别单词识别单词词法分析词法分析2)2)分析句子语法构造分析句子语法构造语法分析语法分析3)3)根据句子含义初步翻译根据句子含义初步翻译语义分析与中间代码产生语义分析与中间代码产生4)4)修饰译文修饰译文优化

5、优化5)5)写出最后译文写出最后译文目的代码生成目的代码生成1.2 编译过程概述程概述1.词法分析词法分析for K : = 1 to 100 dobeginM : = I + 10 * K ;N : = J + 10 * Kend 根本字 for 标识符 K 赋值号 := 常数 1 根本字 to 常数 100 根本字 do 根本字 begin . .1.2 编译过程概述程概述词法分析词法分析 规那么:规那么:规那么描画工具:规那么描画工具:义务:义务:依循词法规那么依循词法规那么.正规式和有限自动机正规式和有限自动机FAFA. .输入源程序,对构成源程序的字符串进展扫描和输入源程序,对构成源

6、程序的字符串进展扫描和分解,识别出一个个的单词符号,如根本字、标分解,识别出一个个的单词符号,如根本字、标识符、常数、算符、界符等。识符、常数、算符、界符等。1.2 编译过程概述程概述2. 语法分析语法分析for K : = 1 to 100 dobeginM : = I + 10 * K ;N : = J + 10 * Kend规那么:规那么:规那么描画工具:规那么描画工具:义务:义务:依循语法规那么依循语法规那么.上下文无关文法上下文无关文法. .在词法分析的根底上,根据言语的语法规那么,对单在词法分析的根底上,根据言语的语法规那么,对单词符号串进展语法分析,识别出各类语法单位,最终词符号

7、串进展语法分析,识别出各类语法单位,最终判别输入串能否构成语法上正确的判别输入串能否构成语法上正确的“程序。程序。1.2 编译过程概述程概述3.语义分析和中间代码产生语义分析和中间代码产生规那么:规那么:规那么描画工具:规那么描画工具:义务:义务:语义规那么语义规那么属性文法属性文法两部分任务:两部分任务:1.1.对每种语法范畴进展静态语义检查对每种语法范畴进展静态语义检查; ;2.2.假设语义正确,那么进展中间代码翻假设语义正确,那么进展中间代码翻译译. .对语法分析器识别出的各类语法单位,分析对语法分析器识别出的各类语法单位,分析其含义并进展初步翻译产生中间代码。其含义并进展初步翻译产生中

8、间代码。 中间代码:一种独立于中间代码:一种独立于详细硬件的记号系统,详细硬件的记号系统,更接近于机器代码更接近于机器代码 1.2 编译过程概述程概述for K : = 1 to 100 do begin M : = I + 10 * K ; N : = J + 10 * K end; K:=1L1: if 100K goto L2 T1:=10*K M:=I+T1 T2:=10*K N:=J+T2 K:=K+1 goto L1L2:语义分析后产生的中间代码:语义分析后产生的中间代码:三地址代码三地址代码详细实现:三元式,四元式,间接三元式详细实现:三元式,四元式,间接三元式1.2 编译过程概

9、述程概述 K:=1L1:if 100K goto L2 T1:=10*K M:=I+T1 T2:=10*K N:=J+T2 K:=K+1 goto L1L2:序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j*+*+j110010I10JKKKT1KT21K(9)T1MT2NK(2)四元式序列:四元式序列:1.2 1.2 编译过程概述编译过程概述义务:对中间代码进展加工变换,以期在最后阶段能产生出义务:对中间代码进展加工变换,以期在最后阶段能产生出 更为高效省时间和空间的目的代码。更为高效省时间和空间的目的代码。 4.4.优化优化包括:公共子表达式

10、的提取、包括:公共子表达式的提取、循环优化、删除无用代码等循环优化、删除无用代码等1.2 1.2 编译过程概述编译过程概述序号序号 OPOPARG1ARG1 ARG2ARG2 RESULTRESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j*+*+j110010I10JKKKT1KT21K(9)T1MT2NK(2)序号序号 OPOPARG1ARG1 ARG2ARG2 RESULTRESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=:=:=j+jII1100MNK K10101MNK(9)MNK(2)优化前优化前优化后优化后1.2 1.2 编译过程概述编译过

11、程概述义务:把中间代码变换成特定机器上的低级言语代码,义务:把中间代码变换成特定机器上的低级言语代码, 实现最后的翻译。实现最后的翻译。5.5.目的代码生成目的代码生成绝对指令代码绝对指令代码/ /可重定位的可重定位的指令代码指令代码/ /汇编指令代码汇编指令代码有赖于硬件系统构造和机器指令含义有赖于硬件系统构造和机器指令含义1.2 1.2 编译过程概述编译过程概述1.3 1.3 编译程序的构造编译程序的构造一一. .编译程序总框图编译程序总框图1.1.表格管理表格管理 编译各阶段都要涉及到构造、查找或编译各阶段都要涉及到构造、查找或 更新有关表格更新有关表格 。表格的作用:表格的作用: 登记

12、源程序的各类信息和编译各阶段的进展情况。登记源程序的各类信息和编译各阶段的进展情况。符号表:符号表: 用来登记源程序中出现的每个名字以及名字的各种属性。用来登记源程序中出现的每个名字以及名字的各种属性。 举例:名字举例:名字变量名变量名/ /常量名常量名/ /过程名过程名?变量名变量名类型?类型?/ /内存?内存?/ /地址?地址?1.3 1.3 编译程序的构造编译程序的构造2.2.出错处置出错处置 每一阶段都能够检测出错误,绝每一阶段都能够检测出错误,绝大多大多 数错误可在前三阶段检测数错误可在前三阶段检测出来出来 . .义务:设法发现错误,并把有关错误信息报告给用户义务:设法发现错误,并把

13、有关错误信息报告给用户. . 语法错误:源程序中不符合语法语法错误:源程序中不符合语法/ /词法规那么的错误。词法规那么的错误。 词法词法/ /语法分析时检测语法分析时检测语义错误:源程序中不符合语义规那么的错误。语义错误:源程序中不符合语义规那么的错误。 语义分析语义分析/ /运转时检测出来运转时检测出来1.3 1.3 编译程序的构造编译程序的构造二二. .遍遍1.1.编译过程的划分:编译过程的划分: 上述划分的五个阶段仅仅是逻辑功能上的一上述划分的五个阶段仅仅是逻辑功能上的一种划分种划分2.2.遍遍PassPass 对源程序或源程序的中间结果从头到尾扫描对源程序或源程序的中间结果从头到尾扫

14、描一次,并作有关的加工处置,生成新的中间结果一次,并作有关的加工处置,生成新的中间结果或目的程序。或目的程序。详细实现时,受各方面详细实现时,受各方面如源言语、设计要求如源言语、设计要求等限制,往往组织成等限制,往往组织成假设干遍假设干遍1.3 1.3 编译程序的构造编译程序的构造3.3.留意:留意:既可以将几个不同阶段合为一遍,也可以把一个既可以将几个不同阶段合为一遍,也可以把一个阶段的任务分为假设干遍阶段的任务分为假设干遍例如:例如:词法分析词法分析+ +语法分析语法分析 一遍一遍语法分析语法分析+ +语义分析与中间代码产生语义分析与中间代码产生 一遍一遍优化优化 假设干遍假设干遍单遍代码

15、单遍代码不太有效。不太有效。根据系统资源的情况、运转目的根据系统资源的情况、运转目的的要求等,可以将一个编译程序的要求等,可以将一个编译程序设计构成多遍扫描的方式,在每设计构成多遍扫描的方式,在每一遍扫描中完成不同的义务。一遍扫描中完成不同的义务。1.3 1.3 编译程序的构造编译程序的构造当一遍中包含假设干阶段时,各阶段的任务是交叉进展的当一遍中包含假设干阶段时,各阶段的任务是交叉进展的 。例如:例如:识别出一个语识别出一个语法单位时法单位时语法分析器语法分析器词法分析器词法分析器语义分析和中间代码产生器语义分析和中间代码产生器识别语法构造需识别语法构造需求下一个单词时求下一个单词时单单词词

16、符符号号1.3 1.3 编译程序的构造编译程序的构造三三. .编译前端与后端编译前端与后端1.1.前端:前端: 由与源言语有关但与目的机无关由与源言语有关但与目的机无关的那些部分组成的那些部分组成 包括包括词法分析、语法分析、语义分析与词法分析、语法分析、语义分析与中间代码中间代码 产生、部分代码优化任务产生、部分代码优化任务 2.2.后端:后端: 包括编译程序中与目的机有关的那些部分,包括编译程序中与目的机有关的那些部分,如与如与 目的机有关的代码优化和目的代码生成等。目的机有关的代码优化和目的代码生成等。不依赖于源言语而仅仅不依赖于源言语而仅仅依赖于中间言语依赖于中间言语1.3 1.3 编

17、译程序的构造编译程序的构造1.5 1.5 编译程序的生成编译程序的生成 一一. . 设计目的设计目的 目的程序小,执行速度快目的程序小,执行速度快编译程序小,执行速度快编译程序小,执行速度快诊断才干强,可靠性强诊断才干强,可靠性强可移植性,可扩展性可移植性,可扩展性 如何实现编译器?如何实现编译器?直接用可运转直接用可运转的代码编制的代码编制太费力!太费力!1.5 1.5 编译程序的生成编译程序的生成 2.2.问题问题 1 1历史上第一个高级言语的编译程序是怎样构造的?历史上第一个高级言语的编译程序是怎样构造的? - -自编译技术自展技术自编译技术自展技术2 2已有已有A A机器上的机器上的L

18、1L1言语如:言语如:C C言语的编译程序,如何言语的编译程序,如何构造构造A A机器上的机器上的L2L2言语如:言语如:PASCALPASCAL言语的编译程序?言语的编译程序?3 3已有已有A A机器上的机器上的L L言语的编译程序,如何构造言语的编译程序,如何构造B B机器上的机器上的L L言语的编译程序?言语的编译程序? - -交叉编译交叉编译 / /移植移植STI源言语源言语编译程序编译程序实现言语实现言语目的言语目的言语普通采用基于普通采用基于T T形图的方式:形图的方式:表现言语翻译的表现言语翻译的T T形图形图1.5 1.5 编译程序的生成编译程序的生成 问题:知问题:知A A机

19、上有一个用机上有一个用A A代码实现的高级言语代码实现的高级言语L1L1的编译的编译程序,可以用程序,可以用L1L1实如今实如今A A机上能运转一个新言语机上能运转一个新言语L2L2编写编写的程序。的程序。 L1AA知条件目的L2L1A二二. . 多级编译程序多级编译程序 1.1.本机编译器利用本机编译器利用 分析:分析:1.5 1.5 编译程序的生成编译程序的生成 条件目的L2L1AL1AAL2AAL1L1言语写成的言语写成的L2L2言言语的编译程序语的编译程序A A代码写成的代码写成的L1L1言语的编译程序言语的编译程序得到得到A A代码写成的代码写成的L2L2言语的编译程序言语的编译程序

20、P0P0P1P1P2P2阐明:阐明:P0L2P0L2言语的编译程序,用言语的编译程序,用L1L1言语实现言语实现 P1L1 P1L1言语的编译程序,用言语的编译程序,用A A代码实现代码实现 P2L2 P2L2言语的编译程序,用言语的编译程序,用A A代码实现代码实现 1.5 1.5 编译程序的生成编译程序的生成 问题:知问题:知A A机上有一个用机上有一个用A A代码实现的高级言语代码实现的高级言语L L的编的编译程序即译程序即A A机上可直接运转机上可直接运转L L言语程序,能否可利言语程序,能否可利用该编译程序实如今用该编译程序实如今B B机上运转机上运转L L言语程序?言语程序? LA

21、A条件目的LLB2. 2. 交叉编译交叉编译/ /移植思索移植思索1.5 1.5 编译程序的生成编译程序的生成 LAA条件LLB目的LLBLAALABLLBLBB阐明:过程阐明:过程 在在A A机上运转的产生机上运转的产生B B代码的代码的L L编译程序源程序编译程序源程序L L言语编写言语编写1.5 1.5 编译程序的生成编译程序的生成 1.5 1.5 编译程序的生成编译程序的生成 3.3.自编译过程自编译过程 经过一系列自展途径而构成编译程序的过程叫做自编译过程。经过一系列自展途径而构成编译程序的过程叫做自编译过程。 1.5 1.5 编译程序的生成编译程序的生成 三三. .如何学习构造编译

22、程序如何学习构造编译程序 要在某一台机器上为某种言语构造一个编译程序,必需要在某一台机器上为某种言语构造一个编译程序,必需掌握以下内容:掌握以下内容: 源言语:对被编译的源言语,要深化了解其构造语法和源言语:对被编译的源言语,要深化了解其构造语法和 含义语义。含义语义。目的言语:假定目的言语是机器言语,那么,目的言语:假定目的言语是机器言语,那么, 就必需搞清硬就必需搞清硬 件的系统构造和件的系统构造和OSOS的功能。的功能。编译方法:把一种言语程序翻译为另一种言语程序的方法很编译方法:把一种言语程序翻译为另一种言语程序的方法很 多,但必需准确的掌握一、二。多,但必需准确的掌握一、二。 第第1 1章章 总结总结1.1.编译程序的概念编译程序的概念2.2.编译过程掌握编译过程掌握3.3.根本概念:遍,编译前端根本概念:遍,编译前端/ /后端掌握后端掌握4.T4.T型图了解型图了解

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号