网站大量收购独家精品文档,联系QQ:2885784924

编译原理教程(第五版) 全套教学课件.pptx

  1. 1、本文档共1299页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;第1章 制图基本知识与技能; 1.1 程序设计语言和编译程序 ;   计算机硬件的器件特性决定了计算机本身只能直接接受由0和1编码的二进制指令和数据,这种二进制形式的指令集合称为该计算机的机器语言,它是计算机唯一能够直接识别并接受的语言。   用机器语言编写程序很不方便且容易出错,编写出来的程序也难以调试、阅读和交流。为此,出现了用助记符代替机器语言(二进制编码)的另一种语言,这就是汇编语言。汇编语言是建立在机器语言之上的,因为它是机器语言的符号化形式,所以较机器语言直观;但是计算机并不能直接识别这种符号化语言,用汇编语言编写的程序必须翻译成机器语言之后才能执行,这种“翻译”是通过专门的软件——汇编程序实现的。;   尽管汇编语言与机器语言相比在阅读和理解上有了长足的进步,但其依赖具体机器的特性是无法改变的,这给程序设计增加了难度。随着计算机应用需求的不断增长,出现了更加接近人类自然语言的功能更强、抽象级别更高的面向各种应用的高级语言。高级语言已经从具体机器中抽象出来,摆脱了依赖具体机器的问题。用高级语言编制的程序几乎能够在不改动的情况下在不同种类的计算机上运行且不易出错,这是汇编语言难以做到的,但高级语言程序翻译(编译)成最终能够直接执行的机器语言程序其难度却大大增加了。;   由于汇编语言和机器语言一样都是面向机器的,故相对于面向用户的高级语言来说,它们都被称为低级语言,而FORTRAN、PASCAL、C、ADA、Java这类面向应用的语言则称之为高级语言。因此,编译程序就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序,见图1-1。;;   一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段,如图1-2所示。编译阶段将源程序变换成目标程序;运行阶段则由所生成的目标程序连同运行系统(数据空间分配子程序、标准函数程序等)接收程序的初始数据作为输入,运行后输出计算结果。;;   如果编译生成的目标程序是汇编语言形式的,那么在编译与运行???段之间还要添加一个汇编阶段,它将编译生成的汇编语言目标程序再经过汇编程序变换成机器语言目标程序,如图1-3所示。;;   用高级语言编写的程序也可通过解释程序来执行。解释程序也是一种翻译程序,它将源程序作为输入,一条语句一条语句地读入并解释执行,如图1-4所示。解释程序与编译程序的主要区别是:编译程序将源程序翻译成目标程序后再执行该目标程序;而解释程序则逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。典型的解释型高级语言是BASIC语言。;; 1.2 编译程序的历史及发展;   表示在IBM PC上使用的Intel 8x86处理器将数字2移至地址0000(十六进制)的指令。用机器语言编写程序很不方便且容易出错,因此这种代码形式很快就被汇编语言(Assembly Language)取代。在汇编语言中,指令和存储地址都以符号形式给出。例如,汇编语言指令      MOV X, 2;   就与前面的机器指令等价(假设符号存储地址X是0000)。汇编程序(Assembler)再将汇编语言的符号代码和存储地址翻译成与机器语言相对应的二进制代码。汇编语言大大提高了编程的速度和准确性,至今人们仍在使用它,在有存储容量小和速度快的要求时尤其如此。但是,汇编语言依赖于具体机器的特性是无法改变的,这给编程和程序调试增加了难度。很明显,编程技术发展的下一个重要步骤就是用更简洁的数学定义或自然语言来描述和编写程序,它应与任何机器无关,而且也可通过一个翻译程序将其翻译为可在计算机上直接执行的二进制代码。例如,前面的汇编语言代码“MOV X, 2”可以写成一个简洁的与机器无关的形式“X=2”。;   1954~1957年,IBM John Backus带领的一个研究小组对FORTRAN语言及其编译器进行了开发。但是,由于对编译程序的理论及技术研究刚刚开始,这个语言的开发付出了巨大的辛劳。与此同时,波兰语言学家Noam Chomsky开始了他的自然语言结构研究。Noam Chomsky根据文法(Grammar,产生语言的规则)的难易程度及识别它们所需的算法对语言进行了分类,定义了0型、1型、2型和3型这四类文法及其相应的形式语言,并分别与相应的识别系统相联系。; 2型文法(上下文无关文法,Context-free Grammar)被证明是程序设计语言中最有用的文法,它代表着目前程序设计语言结构的标准。Noam Chomsky的研究结果最终使得编译器结构异常简单,甚至还具有自动化功能。有限自动机(Finite Automata)和正规表达式(Regular Expression)与上下文无关文法紧密相关,它们与Noam Chom

文档评论(0)

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

知识分享

1亿VIP精品文档

相关文档