欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网
全部分类
  • 图纸下载>
  • 教育资料>
  • 专业文献>
  • 应用文书>
  • 行业资料>
  • 生活休闲>
  • 办公材料>
  • 毕业设计>
  • ImageVerifierCode 换一换
    首页 人人文库网 > 资源分类 > PPT文档下载  

    [工学]编译原理ppt.ppt

    • 资源ID:17703414       资源大小:985KB        全文页数:43页
    • 资源格式: PPT        下载积分:15积分
    扫码快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
    二维码
    微信扫一扫登录

    手机扫码下载

    请使用微信 或支付宝 扫码支付

    • 扫码支付后即可登录下载文档,同时代表您同意《人人文库网用户协议》

    • 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败

    • 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费

    账号:
    密码:
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源(1积分=1元)下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [工学]编译原理ppt.ppt

    编 译 原 理 A,授课:吴振华 2011-03 办公室:D315 Email: jimver.wugmail.com,软件学院软件工程专业,本课程的地位,计算机专业的专业基础课 是软件技术基础 是计算机专业的学生必修的一门主干课,学习任务,掌握编译的理论基础和形式化系统 了解编译的全过程及其具体实现方法,学习方法,坚持课前预习、课后复习 认真听课,认真理解书中的基本概念、基本原理与基本算法 弄懂书中的例题与习题 在看书时或理解例题时,一定要划出相应的细节变化过程,通过画图来加深理解 在理解的基础上记忆 理论结合实践,课时、考核及参考书,讲授46课时,实验10课时 考核办法 笔试考核。成绩由平时成绩(30% :包括点名、作业占20%,上机占10%),期末考试(70%)两部分组成。 教学用书、参考书目 张素琴,吕映芝,蒋维杜等编著:编译原理,清华大学出版社,2005年,第2版; 李建中等译著:编译原理,机械工业出版社,2003年,第1版; 张幸儿编著:计算机编译原理,科学出版社,2004年,第1版; 斯传根编著:编译设计与开发技术,清华出版社,2003年,第2版 。,章节按排,第一章 引论 第二章 PL0编译程序 第三章 文法语言 第四章 词法分析 第五章 自顶向下语法分析 第六章 自底向上优先分析 第七章 LR分析 第八章 语法制导翻译和中间代码生成 第九章 符号表 第十章 目标程序运行时的存储组织 第十一章 代码优化 第十二章 代码生成,第一章 引论、PL0编译程序,1.1 什麽是编译程序 1.2 编译过程和编译程序的结构 1.3 编译技术和软件工具的介绍,什麽是编译程序,过程式语言 Fortran,Pascal,C 函数式语言 Lisp 逻辑式语言 Prolog 对象式语言 C+ 汇编语言 机器语言,程序设计语言:用来编写计算机程序的语言。,程序设 计语言,高级语言 低级语言:面向机器的语言,什麽是编译程序,程序设计语言,机器语言:直接用计算机能够识别的二进制代码指令来编写程序的语言。由二进制的指令代码组成。 1 + 3 表示为 10000001 00000001 00000011 是最底层的计算机语言,不需要翻译就可以直接被计算机硬件识别。对应不同的计算机硬件有不同的机器语言。 特点:执行速度快,但编写程序的难度大,修改、调试不方便,直观性差,不易移植。,什麽是编译程序,汇编语言:又称为符号语言。与机器语言一一对应,采用能帮助记忆的英文缩写符号(指令助记符)来代替机器语言指令中的操作码,用地址符号来代替地址码。用指令助记符及地址符号书写的指令称为汇编指令,用汇编指令编写的程序称为汇编语言源程序。 将X、Y中的内容相加 表示为 ADD X Y 机器不能直接识别汇编语言程序,必须把它翻译为机器语言程序才能执行。 特点:比机器语言直观,容易理解和记忆,比高级语言的执行效率高,但通用性和移植性较差。,什麽是编译程序,什麽是编译程序,编译程序的功能:把高级语言程序翻译成等价的低级语言程序。,编译程序是一种软件,是系统软件。通常认为系统软件是居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。 编译程序也是一种语言处理系统,即把软件语言书写的各种程序处理成可在计算机上执行的程序。,什麽是编译程序,源程序,目标程序,可执行程序,编辑 程序,汇编或 编译程序,连接 程序,预处理程序,把目标程序以及所需的功能库等转换成一个可执行的装入程序。完成此功能的程序叫连接程序。,用于编写高级语言程序,第一章 引论、PL0编译程序,1.1 什麽是编译程序 1.2 编译过程和编译程序的结构 1.3编译技术和软件工具的介绍,编译过程和编译程序的结构,编译器内部包括了许多步骤或称为阶段,它们执行不同的逻辑操作。将这些阶段设想为编译器中一个个单独的片断是很有用的,尽管在应用中它们是经常组合在一起的,但它们确实是作为单独的代码操作来编写的。,编译过程概述,编译过程和编译程序的结构,编译工作的基本过程是: 词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等6个阶段。 每个阶段都有表格管理和出错处理部分。,编译过程概述,编译过程和编译程序的结构,编译过程和编译程序的结构,编译逻辑过程 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成,编译过程和编译程序的结构,词法分析 像翻译英文句子一样,先要分析单词,弄清各单词的意义和句中的作用,才能对句子进行翻译。 主要任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 单词:是高级语言中有实在意义的最小语法单位,它由字符构成。,识别右边程序中的单词 保留字:int float void 标识符:a b c d x y computing 常数:50 运算符: × 界符:, ( ) ;,Void computing() int y,c,d; float x,a,b; x=a+b*50; y=(c+d)*(x+b); ,编译过程和编译程序的结构,单词类型 单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 60 界符 ;,词法分析(自动分词+词性标注) position := initial + rate * 60;,编译过程和编译程序的结构,词法分析后可能返回: 单词类型 单词值 保留字 int 标识符(变量名) a 界符 ; 标识符(变量名) a 算符(赋值) = 标识符(变量名) a 算符(加) + 整数 2 界符 ;,又如一个C源程序片断: int a; a = a + 2;,编译过程和编译程序的结构,语法分析程序与自然语言中句子的语法分析类似。语法分析定义了程序的结构元素及其关系。通常将语法分析的结果表示为分析树或语法树。 主要任务:在词法分析的基础上,将单词组合成各类语法短语。 一般语法短语可表示成语法树。 功能:层次分析.依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树). position := initial + rate * 60 ;,语法分析(自动句法分析),编译过程和编译程序的结构,Pascal语言的赋值语句的规则 :=“:=” :=“+” :=“*” :=“(”“)” := := :=,语法分析(自动句法分析),编译过程和编译程序的结构,语法分析(自动句法分析),编译过程和编译程序的结构,id1:=id2+id3*N,编译过程和编译程序的结构,语义审查(静态语义) 按照语法树的层次关系和先后次序,逐个语句地进行语义处理。 主要任务: 进行类型审查,审查每个算符是否符合语言规范,不符合时应报告错误。 类型匹配 类型转换,语义分析,编译过程和编译程序的结构,修改后: Program p(); Var rate:real; Var initial :real; Var position :real ; position := initial + rate * 60,例: Program p(); Var rate:real; procedure initial; position := initial + rate * 60 /* error */ /* error */ /* warning */; ,编译过程和编译程序的结构,语义分析,编译过程和编译程序的结构,中间代码生成:,如:position:initialrate×60 生成四元式序列: (inttoreal 60 t1 ) (× id3 t1 t2) ( id2 t2 t3) (: t3 id1),运算符,运算对象1,运算对象2,结果,语法分析和语义分析之后,有时将源程序变成一种内部表示形式,这种内部表示形式叫中间代码,该代码是一种简单的记号系统。三元式、四元式等 四元式的形式为: (算符,运算对象1,运算对象2,结果),id1,id2,id3,t1,t2,t3是临时变量,编译过程和编译程序的结构,代码优化:,主要任务:对中间代码进行变换,使目标代码更为高效。(节省时间和空间) 原则:等价变换 主要方面:公共子表达式的提取、合并已知量、删除无用语句、循环优化等 id1:= id2 + id3 * 60,(1) (inttoreal 60 - t1 ) (2) (* id3 t1 t2 ) (3) (+ id2 t2 t3 ) (4) (:= t3 - id1),(1) ( * id3 60.0 t1 ) (2)( + id2 t1 id1 ),变换,编译过程和编译程序的结构,目标代码生成:,主要任务:将中间代码变换成特定机器上的绝对指令代码或可重定位的汇编指令代码。主要与硬件系统结构和指令含义有关。,(* id3 60.0 t1 ) (+ id2 t1 id1 ),MOV id3,R2 MUL #60.0,R2 MOV id2,R1 ADD R2,R1 MOV R1,id1,编译过程和编译程序的结构,符号表管理:,记录用来记录源程序的各种信息以及编译过程中的各种状况 。 与编译前三阶段有关的表格有:符号表、常数表、标号表、分程序入口表、中间代码表等。,编译过程和编译程序的结构,出错处理:,编译程序在各个阶段应诊断和报告源程序中的错误,包括词法错误,语法错误,语义错误。 编译程序应报告出错地点,并给出简明准确的提示信息。,编译过程和编译程序的结构,编译阶段的组合,前端和后端 源程序 中间代码 目标代码 仅依赖源程序 仅依赖目标计算机 遍(PASS): 对输入文件(源程序或其等价的中间形式)从头到尾扫视,完成预定的处理。,前端,后端,输入文件,遍,输出文件,编译过程和编译程序的结构,编译阶段的组合,编译过程分为,前端:词法分析、语法分析、语义分析、中间代码生成、优化工作。 后端:目标代码生成、出错处理、符号表操作。,一个编译程序可由一遍、两遍或多遍完成。每一遍可完成不同的阶段或多个阶段的工作。,从时间和空 间角度看,多遍编译 少占内存,多耗时间 一遍编译 多占内存,少耗时间,主要与源语言有关,主要与目标代码有关,第一章 引论、PL0编译程序,1.1 什麽是编译程序 1.2 编译过程和编译程序的结构 1.3 编译技术和软件工具的介绍,编译技术和软件工具介绍,用到编译原理与技术的常见软件工具: 1、语言的结构化编辑器: 提供关键字及其匹配的关键字。 可减少语法错误,加快源程序调试。 2、语言程序的调试工具 提供判定程序的算法与功能是否正确。 3、程序格式化工具:使程序呈现清晰的结构 4、语言程序的测试工具:,编译技术和软件工具介绍,测试工具,静态分析器 对源程序进行语法分析 动态测试器 测试用例、对程序进行动态测试。,4、高级语言之间的转换工具: 一种高级语言转化成另一种高级语言。,编译技术和软件工具介绍,程序语言设计范型 强制(命令)式语言 C, FORTRAN, Pascal等 函数式语言 ML,LISP 基于规则(逻辑)的语言 面向对象语言,1.3 编译技术的发展和应用,语言范型(支持的计算模式) 命令式: 程序特点: 语言执行的解释: 编译技术发展快: 语句1; 改变机器状态 系统语言 语句2; 内存 自动化生成技术 语句3; 各种寄存器 的内容 外存 与万诺曼机的体系结构一般,1.3 编译技术的发展和应用,应用式(函数式) 程序特点: Function n(funetion2(funetion1(data) 程序执行: 执行一个个函数施用在数据上的变换最终得到的结果 编译: 语法分析容易; 语义处理复杂。,1.3 编译技术的发展和应用,基于规则的语言(prolog,yacc) 程序特点: 使能条件1 动作1 使能条件2 动作2 使能条件3 动作3 面向对象语言: 抽象数据类型,继承机制 编译: 动态绑定;,Thank You !,

    注意事项

    本文([工学]编译原理ppt.ppt)为本站会员(jun****875)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    网站客服QQ:2881952447     

    copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

    备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!