《编译器概述.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教材: 《编译原理》,张素琴、吕映芝、蒋维杜,戴桂兰,清华大学出版社,2005年出版 参考书: 《编译原理学习与解题指南》,伍春香,华中科技大学出版社 《编译原理》,陈意云、张昱,高等教育出版社, 2003 《编译原理习题精选》陈意云、张昱,中国科大出版社 《编译原理-学习指导与典型题解析》,刘春林等,国防出版社 《编译原理基础-习题与上机题解答》,刘坚等,西安电子科技大学出版社 《程序设计语言编译原理》,陈火旺,国防工业出版社,1994年出版 编译原理 Compilers: Principles, Techniques, and Tools Dragon book-a classic textbook 第一章引论 一:什么是编译程序 简而言之, 编译程序就是一种语言翻译程序。 定义:所谓翻译程序,是指这样一个程序,它能将高级程序设计语言程序翻译成逻辑等价的低级语言(汇编语言,机器语言) 程序。 为什么要学习编译 对编程语言的设计和实现有深刻的理解,才能写出更好的程序 课程所介绍的许多概念和技术能应用到一般的软件设计之中 本课程融合了数据结构、算法、自动机理论、程序设计、体系结构等多门学科的知识,有助于大家对计算机科学的理解 根据:语法规则 任务: 把单词符号分解为各类语法单位,以确定输入串语法是否正确;  对语法错误,进行出错处理。 语法单位:我们最终感兴趣的东西。如:表达式,子句,句子,程序段,程序等。 任何一个标识符都是表达式; 任何一个数都是表达式; 如果e1和e2都是表达式,那么 ? e1 + e2 ? e1 * e2 ? (e1) 也都是表达式 编译程序的工作过程 词法分析:必要 语法分析:必要 语义分析:必要 中间代码生成:可选 优化:可选 目标代码生成:必要 3:遍的概念:简而言之遍是指对源程序从头到尾扫描,并完成规定任务的过程。 一“遍”: 对于源程序或目标代码程序,从头到尾扫描一次并完成所规定的工作称为一“遍”。每遍的工作,由从外存上获得前一遍的工作结果开始,到完成它所含的有关阶段程序的工作,把结果纪录于外存上为止。 影响分“遍”的因素:内存,编译功能,源语言繁简,目标代码优化程序等等。 一遍编译程序:同时驻留内存,各部门之间“调用连接”。 多遍编译程序:每遍的输出结果是下遍的输入对象。 本章作业:1,2,3,4 5、课程特点 强调对编译原理和技术的宏观理解,不偏向于某种源语言或目标机器 重视原理、算法和技术,以及具体实现 1.1 What are compilers? C7 06 0000 0002 machine language mov X, 2 Assembly language X = 2 C language 程序设计语言 高级语言 汇编语言 机器语言 在计算机上如何执行一个高级语言程序? 把高级语言程序翻译成机器语言程序 运行所得的机器语言程序求得计算结果 Compile, compiler compile: collect (information) and arrange 编译器是一个程序,读入源程序并将其翻译成等价的目标程序,并且能够向用户报告被编译的源程序中出现的错误。 程序的等价 程序的等价:若两个程序P1和P2所允许的输入集合相同,且对相同的输入,均产生相同的输出,则称程序P1和P2等价。 狭义看法:通常,源程序是用某种高级语言编写的,而目标程序是用目标代码或机器代码编写的。 广义看法:程序变换,翻译器(translator) C++?C; Pascal? C; 翻译器 translator 翻译:在不改变语义的条件下,把某种语言的源程序转换成另一种语言程序—目标语言程序,称为翻译。执行翻译的软件,称为翻译程序。 翻译和解释 解释 在一种语言的机器上,直接执行用另一种语言写的程序的过程,称为解释。实现解释的软件,称为解释程序。 接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。 解释和编译 解释 以源程序作为输入,不产生目标程序,一边解释一边执行。 优点:直观易懂,结构简单,易于实现人机对话 缺点:效率低 编译 由高级语言转换为低级语言,然后对编译出来的目标程序进行运行计算 翻译程序与解释程序的本质区别 本质区别是输出不同: 翻译程序的输出是与源程序等价的目标程序; 解释程序实际是一台虚拟机,其输出是被执行程序所定义的输出结果。 1.1.1 分析-综合模型 Analysis-Synthesis Model Two parts of compilation: Analysis : Decompose Source into an intermediate rep

文档评论(0)

you9391 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档