程序设计语言编译原理(第三版)第1章.ppt
《程序设计语言编译原理(第三版)第1章.ppt》由会员分享,可在线阅读,更多相关《程序设计语言编译原理(第三版)第1章.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理于静洋于静洋程序设计语言程序设计语言第一章第一章 引论引论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 编译过程概述编译过程概述Theelephantateanbanana.什么是语言?forK:=1to100dobeginM:=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 for 标识符标识符 K K 赋值号赋值号:=:=常数常数 1 1 基本字基本字 to to 常数常数 100 100 基本字基本字 do do 基本字基本字 begin 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 编译过程概述编译过程概述forK:=1to100dobeginM:=I+10*K;N:=J+10*Kend;K:=1L1:if100KgotoL2T1:=10*KM:=I+T1T2:=10*KN:=J+T2K:=K+1gotoL1L2:语义分析后产生的中间代码:语义分析后产生的中间代码:三地址代码三地址代码具体实现:具体实现:三元式,四元式,间接三元式三元式,四元式,间接三元式1.2 编译过程概述编译过程概述 K:=1K:=1L L1 1:if 100K goto L:if 100K goto L2 2 T T1 1:=10
9、*K:=10*K M:=I+T M:=I+T1 1 T T2 2:=10*K:=10*K N:=J+T N:=J+T2 2 K:=K+1K:=K+1 goto L goto L1 1L L2 2:序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j*+*+j110010I10JKKKT1KT21K(9)T1MT2NK(2)四元式序列:四元式序列:1.2 1.2 编译过程概述编译过程概述任务:任务:对中间代码进行加工变换,以期在最后阶段能产生出对中间代码进行加工变换,以期在最后阶段能产生出 更为更为高效(省时间和空间)高效(省时间和空间)的目标代码。的
10、目标代码。4.4.优化优化包括:公共子表达式的提取、包括:公共子表达式的提取、循环优化、删除无用代码等循环优化、删除无用代码等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)优化前优化前优
11、化后优化后1.2 1.2 编译过程概述编译过程概述任务:任务:把中间代码变换成把中间代码变换成特定机器上特定机器上的低级语言代码,的低级语言代码,实现最后的翻译。实现最后的翻译。5.5.目标代码生成目标代码生成绝对指令代码绝对指令代码/可重定位的可重定位的指令代码指令代码/汇编指令代码汇编指令代码有赖于硬件系统结构和机器指令含义有赖于硬件系统结构和机器指令含义1.2 1.2 编译过程概述编译过程概述1.3 1.3 编译程序的结构编译程序的结构一一.编译程序总框图编译程序总框图1.1.表格管理表格管理 编译各各阶段都要涉及到构造、段都要涉及到构造、查找或找或 更新有关表格更新有关表格 。表格的作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 编译 原理 第三
限制150内