欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    北航编译原理ppt课件 12编译程序生成方法和工具.ppt

    • 资源ID:3909563       资源大小:189.50KB        全文页数:22页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    北航编译原理ppt课件 12编译程序生成方法和工具.ppt

    第十二章 编译程序生成方法和工具,编译程序的书写语言自编译性自展编译程序的移植编译程序的自动生成,12.1 编译程序的书写语言,机器语言或汇编语言 主要优点:编出来的程序效率高。主要缺点:编程效率低,可读性差,不便于修改和移植。高级程序设计语言已基本取代汇编语言 优点:编程效率高,可读性好,利于移植。缺点:编译程运行效率较低。,12.2 自编译性,自编译性:如果一个高级语言能用来书写自己的编译程序,则该语言具有自编译性,并称该语言为自编译语言。,两点说明:通常用自编译语言除可编写本语言的编译程序以外,也可用来编写别的语言的编译程序。如果某台机器上已配备有某种自编译语言,则可利用这种语言为本台机器配置其它的高级语言。,例:A机上有自编译语言L1的编译程序 L1.AO L1语言L1的编译程序 AO以A机的机器指令形式给出 利用语言L1可为A机生成语言L2的编译程序,源语言,目标语言,书写语言,L2,L1,Ao,L1,Ao,Ao,L2,Ao,f,f,2.自编译性不是绝对的,只是强弱不同 数据类型丰富的语言 控制结构丰富的语言,自编译性强,数据类型:除一般的外还有字符串类型,数组,结构,枚举,指 针等类型。控制结构:应适于进行多分支的程序设计,如有CASE语句等 FORTRAN,ALGOL自编译性差 PASCAL,C,ADA,C,JAVA自编译性强实践示例:用PASCAL语言编写一个简单的编译程序,就是利用 PASCAL的自编译性。,12.3 自展,利用高级语言的自编译性,还可以通过自展方式生成语言的编译程序。设L为自编译语言,自展生成 L.Ao(A机目标形式的语言L的编译器,可在A机上运行),步骤:1.首先,将语言划分为N个部分:L=L1+L2+Ln L1 核心部分 L2 Ln扩充部分,2.先用A机上的汇编编写L1的编译程序,L1.Aa L1.AaAssemberL1.Ao,4.用(L1+L2)编写L1+L2+L3的编译程序,(L1+L2).Ao,L.Ao,L1.Ao,滚雪球式,用自展方式进行编译,可提高生产率。因核心语言小,可用汇编实现。其余部分高级语言编写。比全用低级语言效率高。,12.4 编译程序的移植,移植:将某台机上的成熟软件移植到另一台机器上,也就是将宿主机上的软件移植到目标机上。如果使用具有自编译性的高级语言来书写程序,则移植是方便的。,移植,通过移植,在B机上可得到语言L的编译程序,具B机目标形式,可在B机上运行。,移植步骤:,将L.L分为两部分:一部分与机器无关 F.L 一部分与机器有关 A.L L.L=F.L+A.L,3.第一次编译 将I.L在宿主机A上用L的编译程序进行编译,生成能在宿主机A上运行的语言L的交叉编译器,它能生成目标机B的代码。,4.第二次编译(交叉编译),Ao,L,Bo,Ao,Bo,L,L,L,Ao,可以设想,只要在某台机器上为某目标机配置一个L语言的交叉编译程序,就能将宿主机上的L语言所写的所有软件移植到其他目标机上。采用软件移植的办法来开发软件,可提高软件生产率,并提高软件的可靠性。由于上述优点,所以软件的可移植性是软件开发所追求的目标之一。目前有许多编译程序都考虑到可移植性的要求。例如有:可移植的PASCAL编译程序。P.J.Brown,Software Portablility.朱关铭等译,1982.12,12.5 编译程序的自动生成,理想的编译程序自动生成工具:,L语言规格说明L语义描述和机器规格说明,编译程序生成工具,该语言(L)的编译程序,目标代码,L源程序,目前还没有一个系统能自动生成整个编译系统。早期的工作集中在分析部分,即针对语法规则的形式化描述。对编译程序后端,即与目标机有关的代码生成与代码优化部分,由于对语义和目标机进行形式化描述方面所存在的困难,最近有所突破,但未见到流行的产品。(样机未形成真正产品)有词法分析器的自动生成器和语法分析器的自动生成器。词法分析器生成器(在第三章已作介绍)LEX:,LEX源文件(.l 文件)(正则表达式表示的单词符号),LEX(构造识别单词符号的自动机),词法分析器(lex.yy.c 文件)(自动机),语法分析器生成器:YACC(YET ANOTHER COMPILER-COMPILER),Bison:美国GNU开发的语法分析器生成器)和YACC一样都在 UNIX系统下运行。(已有PC版),用yacc建立翻译程序,yacc源程序:translate.y1.键入命令:yacc translate.y2.生成进行LALR分析的翻译程序:y.tab.c 3.对生成的分析器进行编译:cc y.tab.c-ly(ly为使用LR分析器的库)生成可执行的 翻译程序 a.out,函数定义部分,声明部分,%,%,翻译规则部分,Yacc编译程序,y.output,y.tab.h,yacc源程序(*.y),y.tab.c,头文件,处理记录,语法分析表yyparse()语法分析函数,/*表达式计算*/%token NUM%line:expr n printf(n,$1);expr:expr+term$=$1+$3;|expr-term$=$1-$3;|term/*$=$1*/;term:term*factor$=$1*$3;|term/factor$=$1/$3;|factor/*$=$1*/;factor:(espr)$=$2;|NUM/*$=$1*/;,%#includeyylex()intc;while(c=getchar()=);if(isdigit(c)yylval=c 0;while(isdigit(c=getchar()yylval=yylval*10+(c-0);ungetc(c,stdin);retun NUM;else return c;,

    注意事项

    本文(北航编译原理ppt课件 12编译程序生成方法和工具.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开