欢迎来到天天文库
浏览记录
ID:16473311
大小:1.24 MB
页数:65页
时间:2018-08-10
《编译原理 复习资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、教材资料授课顺序:1教学目的:正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。教学重点与难点:编译程序工作的基本过程及其各阶段的基本任务,编译程序总框。授课学时:2学时教学方式:多媒体讲授教学内容:第一章引论1.1什么是编译程序一、基本概念1、翻译程序:是指这样的一种程序,它能够把一种语言程序(源语言程序)转换成另一种功能等价的语言程序(目标语言程序)。2、编译程序是一种翻译程序,其源程序是高级语言,目标语言程序是低级语言。通常是一次性翻译方式。如TC等高级语言编译程序。3、解释程序也是一种翻译程序,它与编译程序的区别
2、:立即执行源程序,通常是逐句翻译执行。如BASIC、SQL、JAVA的BYTECODE解释程序等。二、高级语言程序的处理过程高级程序设计语言程序的典型处理过程如下图所示:1.2编译过程和编译程序结构一、编译过程的阶段划分一般编译程序的工作过程按阶段进行,每个阶段将源程序从一种表示形式转换成另一种表示形式。典型的阶段划分方法是将整个编译过程分为如下六个阶段:1、词法分析:任务:对构成源程序的字符串进行扫描和分解,识别出单词(如标识符等)符号。输入:源程序输出:单词符号序列例子:有待分析源程序:main(){intx=10,y;}词法分析后的输出:1)保留字:main2)界符:左圆括号(3)界符:
3、右圆括号)4)界符:左大括号{5)保留字:int6)标识符:x7)运算符:=8)常数:10,界符:,9)标识符:y10)界符:;11)界符:右大括号}2、语法分析任务:根据语言的语法规则对单词符号串(符号序列)进行语法分析,识别出各类语法短语(可表示成语法树的语法单位),判断输入串在语法上是否正确。输入:单词序列输出:语法分析后的单词序列3、语义分析任务:按语义规则对语法分析器归约出的语法单位进行语义分析,审查有无语义错误,为代码生成阶段收集类型信息,并进行类型审查和违背语言规范的报错处理。输入:语法分析后的单词序列输出:语义分析后带语义信息的单词序列4、中间代码生成(并非所有的编译程序都包含
4、此阶段)任务:将语义分析得到的源程序变成一种结构简单、含义明确、易生成、易翻译成目标代码的内在代码形式。常用的中间代码形式是四元式(算符,运算对象1,运算对象2,结果)。输入:语义分析后的单词序列输出:中间代码5、代码优化(可放到目标代码生成阶段后)任务:对中间代码或目标代码进行变换改造等优化处理,使生成的代码更高效。输入:中间代码或目标代码输出:优化后的中间代码或目标代码6、目标代码生成任务:将中间代码生成特定机器上的绝对或可重定位的指令代码或汇编指令代码。输入:语义分析后的单词序列或优化后的中间代码输出:目标代码二、编译程序结构上述六个阶段的任务分别由六个模块来完成。一个完整的编译程序还应
5、包括表格管理和出错处理程序。典型编译程序结构框图如下:三、编译阶段的组合1、前后端组合法编译前端:与源语言有关与目标机无关的部分(第1-4阶段)。编译后端:与目标机有关的部分(第6阶段)注:第5阶段置前或后端都可以。组合方式:1)同一源语言的编译前端+不同后端=不同机器上同一源语言的编译程序;2)不同源语言的编译前端生成同一种中间语言+使用共同后端=同一机器上不同语言的编译程序。2、遍组合法遍/趟:对源程序或源程序的中间结果从头到尾扫描一次称为一遍。每一遍扫视完成一个或几个阶段的工作。一个编译程序可由一遍或多遍完成.实际编译程序分遍的主要参考因素是源语言与目标机器的特征。1.3编译技术和软件工
6、具一、编译技术的发展1950S早期:算术工式译成机器代码。1950S中期:FORTRAN编译系统。1950S末期:自动生成工具出现,如:LEX、YACC。1960S:自展技术。1971年:用自展技术生成PASCAL编译程序。现代:并行编译技术。二、编译技术与软件工具1、先进的软件开发技术和软件工具能提高编程效率、缩短调试时间。2、编译程序本身是一种软件工具。3、大部分软件工具的开发常用到编译技术和方法。4、进行源程序处理的软件工具实质上都在不同程度上用到了编译程序各个部分的技术和方法。如:(1)语言结构化编辑器(语法);(2)语言程序调试工具(语法、语义);(3)语言程序测试工具(静、动态测试
7、,发现错误);(4)高级语言之间的转换工具;(5)程序格式化工具、程序理解工具等。1.4程序设计语言规范从支持的计算模式来看,程序设计语言(是指书写计算机程序的高级语言)规范有如下几种:1、强制命令式语言,即过程式语言该型语言中,一个过程可看作是一系列动作,其动作由命令驱动,以语句形式表示,一个语句接一个语句的执行。属于这种规范的语言如PASCAL、C、FORTRAN等,C++、Ada、COBOL
此文档下载收益归作者所有