编译原理实用教程 杨德芳 第1章 编译程序概论

编译原理实用教程 杨德芳 第1章 编译程序概论

ID:40336235

大小:610.00 KB

页数:35页

时间:2019-07-31

编译原理实用教程 杨德芳 第1章 编译程序概论_第1页
编译原理实用教程 杨德芳 第1章 编译程序概论_第2页
编译原理实用教程 杨德芳 第1章 编译程序概论_第3页
编译原理实用教程 杨德芳 第1章 编译程序概论_第4页
编译原理实用教程 杨德芳 第1章 编译程序概论_第5页
资源描述:

《编译原理实用教程 杨德芳 第1章 编译程序概论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、21世纪高等院校规划教材编译原理实用教程中国水利水电出版社第一章编译程序概论本章学习目标编译程序是高级语言的支撑基础,是计算机系统中重要的系统软件之一,本章主要内容:编译程序的功能编译程序的体系结构编译程序的工作过程编译程序的设计1.1程序设计语言程序设计语言分成两大类,一类是高级语言,一类是低级语言。低级语言又包括机器语言和汇编语言,主要是面向机器的。高级语言则是面向应用的,分成很多种,如FORTRAN、Pascal、C、Ada、Java等。机器语言本身是有由0和1组成的,符合计算机的硬件特性,因此能够直接执行。但用机器

2、语言编写程序很不方便且容易出错,因此就用助记符代替机器语言,产生了汇编语言。汇编语言比机器语言在可读性方面有了进步,但是其依赖具体机器的特性无法改变,给程序设计语言增添了难度。高级语言不能直接在机器上运行,它不是面向机器,而是面向应用的,因此,要想让高级语言运行必须有编译程序。编译程序就是这样的一种程序,它能将高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序。高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段,源程序的运行过程如图1-1所示。编译阶段将源程序变换成目标程序;运行阶段则由所生成的目标程

3、序连同运行系统(数据空间分配子程序、标准函数程序等)接受程序的初始数据作为输入,运行后输出计算结果。如果目标程序是汇编语言的形式,则需要在编译阶段和运行阶段之间加一个汇编阶段。源程序目标程序机器语言计算结果编译程序汇编程序图1-1源程序的编译、汇编和运行阶段高级语言编写的程序除了可以通过编译方式外,还可以通过解释程序执行。所谓解释程序是一种语言翻译程序,读入一条语句,解释一条语句,执行一条语句,边读入边执行。解释程序与编译程序的主要区别是:编译程序将源程序翻译成目标程序后再执行目标程序,而解释程序是逐条读出源程序中的语句并

4、执行,即在解释程序的执行过程中并不产生目标程序。1.2编译程序的编译过程和结构编译程序的功能是把高级语言源程序翻译成等价的低级语言目标程序。源程序是由一些基本符号构成的,我们在运行这个程序时,先编译,若某处有错误,就报错,无错误就运行。编译程序在编译时,先将程序中的单词一个个分离出来,登记在一个表中,这叫词法分析,然后检查语句格式,叫做语法分析。然后检查类型是否一致,计算表达式的值叫语义分析。这些功能都是由编译程序相应的程序完成的。一般来说,整个编译过程可以划分成五个阶段:词法分析阶段、语法分析阶段、语义分析和中间代码生成

5、阶段、中间代码的优化和目标代码的生成。1.词法分析阶段词法分析是编译过程的基础,其任务是扫描源程序,根据语言的词法规则,分解和识别出每个单词,并把单词翻译成相应的机内表示。当然,词法分析在识别单词的过程中,同时也做了词法检查。在高级语言中,所谓单词,就是指逻辑上紧密相连的一组字符,这些字符具有集体含义。单词是语言中最小的语义单位,如语言中的关键字、标识符、运算符和界限符。词法分析的依据是词的构造。单词的构造规则在高级语言中有明确的规定,比如哪些为保留字、变量如何定义、常量如何构造、分界符有哪些等。例如,用C语言编写的程序段

6、如下:main(){floatx=2,y=3,s;s=x+y*5;}识别出的单词序列为表1-1所示表1-1词法分析程序类型名单词类型名单词保留字main左括号(右括号)花括号{保留字float标识符x等号=常量2逗号,标识符y等号=常量3逗号,标识符s分号;标识符s等号=标识符x运算符+标识符y运算符*常量5分号;花括号}2.词法分析语法分析是在词法分析的基础上进行的,是编译过程的第二个阶段。语法分析的任务是根据语言的语法规则,把单词符号串分解成各类语法单位,如表达式、语句等。通过语法分析,可以确定整个输入符号串是否构成一

7、个正确的程序。3.语义分析和中间代码的生成语义分析的任务是对各种不同语句进行翻译,包括两方面的工作:一是对每种语法范畴进行语义检查,如变量是否定义、类型是否正确等;二是在语义检查正确的情况下,进行中间代码的翻译。中间代码是介于高级语言语句和低级语言语句之间的一种独立于具体硬件的记号系统,它即有一定程度的抽象,又和低级语言十分接近,因此,转换成目标代码很容易。中间代码的表示形式有很多种,常见的有四元式、三元式、间接三元式和逆波兰式。其中四元式的形式为(运算符,运算对象1,运算对象2,结果)4.中间代码优化中间代码优化通过调整

8、和改变中间代码中某些操作次序,以最终产生更加高效的目标代码。优化的主要手段有删除冗余运算、删除无用赋值、合并已知量、循环优化等。5.目标代码的生成这一阶段的任务是对前一阶段的中间代码变换成特定机器上的机器语言或汇编语言程序,实现机器的最终翻译。最后阶段的工作因为目标语言的关系而十分依赖机器的硬件系统,即

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。