资源描述:
《编译原理-西安交通大学(冯博琴)1引论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本章内容一.什么叫编译程序二.编译过程概述三.编译程序的结构四.编译程序生成五.课程学习指导1引论一.什么叫编译程序编译程序是系统软件中资格最老的成员之一编译理论和技术近30年来发展十分迅速、成熟1.编译程序历史现已形成一套较为系统化的编译理论和技术一.什么叫编译程序2.编译理论与其他课程关系编译理论自动机和形式语言离散数学数据结构操作系统素材基础控制对象一.什么叫编译程序编译理论的许多想法和技术可用于一般软件的设计:3.编译理论的应用有穷状态技术模式识别情报检索文本编辑程序上下文无关文法语法制导翻译建立多种文本处理程序代码优化技术由非结构化到结构化的程序转换程序校验一.什么叫编译程
2、序翻译程序(Translator)是一种程序,其输入是某种语言的一系列语句,而其输出则是另一种语言的一系列语句。4.翻译程序源语言程序目标语言程序Translator输入输出一.什么叫编译程序编译程序(Compiler)是一种程序。它把用高级语言写的源程序作为数据接收,经过翻译转换,产生面向机器的代码作为输出。这当中代码还可能要由汇编程序或装配程序作进一步加工,得出目标程序,交给计算机执行。5.编译程序高级语言源程序面向机器代码Compiler目标程序代码汇编装配一.什么叫编译程序6.翻译与编译比较源语言程序目标语言程序转变为高级语言源程序面向机器代码编译为这种变换程序称为翻译程序编
3、译程序有一些限制(针对输入、输出)这种变换程序称为编译程序二.编译过程概述1.编译过程的组成编译过程词法分析语法分析中间代码生成代码优化目标代码生成源程序单词符号中间代码语法单位目标代码中间代码(优化后)源程序目标代码二.编译过程概述2.词法分析任务所做转换依据构词规则主要理论基础自动机理论源程序字符串单词符号输入源程序;扫描、分解字符串,识别出一个个单词(定义符、标识符、运算符、界符、常数)二.编译过程概述2.词法分析示例FORK:=1TO100M:=I+10*KN:=J+10*KNEXTKTONEXTFORKNMIJKKK:=100:=:=11010+**+定义符标识符分界符运算
4、符常数二.编译过程概述3.语法分析任务所做转换依据语法规则主要理论基础上下文无关文法单词符号语法单位(语法范畴)在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。二.编译过程概述3.语法分析示例TONEXTFORKNMIJKKK:=100:=:=11010+**+变量、常数及其运算结果均是表达式表达式表达式表达式表达式表达式表达式赋值句的形式为“变量 := 表达式”赋值句赋值句多个赋值句可构成语句块语句块表达式可作为循环的初值和终值初值终值简单数值变量可作为循环的控制变量控制变量控制变量此时可以看出上
5、述结果符合FOR循环语句的语法定义,故语法分析成功完成二.编译过程概述4.中间代码生成任务所做转换依据语义规则主要理论基础属性文法语法范畴中间代码对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。二.编译过程概述4.中间代码生成示例TONEXTFORKNMIJKKK:=100:=:=11010+**+(1)(:=,1,,K)(2)(j<,100,K,)(3)(*,10,K,T1)(8)(j,,,(2))(7)(+,K,1,K)(4)(+,I,T1,M)(9)()(9)(5)(*,10,K,T2)(6)(+,J,T2,N)T1T2(1)K:=1(2)if10
6、07、量不可同名不正确正确嵌套缺省的STEP=STEP1二.编译过程概述5.代码优化任务所做转换依据程序等价变换规则主要理论基础数据流方程中间代码中间代码(优化后)对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码 。二.编译过程概述5.代码优化示例(1)K:=1(2)if100