欢迎来到天天文库
浏览记录
ID:45603103
大小:587.50 KB
页数:37页
时间:2019-11-15
《《编译原理讲》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一讲编译原理刘国秀计算机与信息工程学院E-mail:liuxiu.03@163.com本课程的地位计算机专业的专业基础课是软件技术基础是计算机专业的学生必修的一门主干课是本学科研究生入学考试的课程之一作用编译原理是介绍如何将高级程序设计语言变换成计算机硬件所能识别的机器语言,以便计算机进行处理。它的理论基础坚实,其形式化系统不仅应用于编译技术,还大量应用于人工智能、多媒体技术及数据库等领域。学习本课程的目的和任务加深对程序设计语言的理解,提升自身的能力。掌握编译的基本概念、基本原理及算法。将编译原理的理论和实践相结合。学习本课程的方法前后联系,按编译过程的五个阶段来学习
2、。理论联系实际,通过实验来加深对理论的理解。考核办法平时成绩其中:平时作业及上课表现(含实验报告):10%:实验成绩:20%期末考试:70%参考资料编译原理陈火旺等第三版国防工业出版社编译原理吕映芝清华大学出版社编译原理典型题解析与实战模拟刘春林、王挺等国防科技大学出版社第一讲编译程序概述教学目标1.掌握什么是编译程序、编译程序组成、编译过程。2.理解编译程序的构造途径、解释程序、编译程序与程序设计环境。教学内容2.1什么是编译程序、编译程序组成、编译过程2.2编译程序的构造途径2.3解释程序知识扩展翻译程序把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标
3、语言程序).源语言程序目标语言程序翻译程序翻译2.1编译程序的组成一、什么是编译程序编译程序把某一种高级语言程序(源程序)转换成另一种低级语言程序(目标程序)(如汇编语言或机器语言程序)的翻译程序诊断编译程序优化编译程序交叉编译程序可变目标编译程序高级语言程序机器语言程序结果编译程序翻译运行二、编译程序组成编译程序由词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成、表格管理、错误诊断及处理几部分构成。(见图2.1)中间代码单词符号语法单位中间代码目标代码词法分析器语法分析器语义分析与中间代码生成器优化器源程序表格管理错误诊断及处理部分目标代码生成器图2.1编
4、译程序的总框编译过程把英文翻译为中文识别出句子中的一个个单词;分析句子的语法结构;根据句子的含义进行初步翻译;对译文进行修饰;写出最后的译文。三、编译过程概述编译程序的工作一般分为五个阶段:词法分析语法分析语义分析和中间代码生成优化目标代码产生功能:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号,并给出单词的类别、属性等。如基本字(begin、end、if、for、while等),标识符、常数、算符和界符(标点符号等等)。依循的原则:词法规则描述工具:正规式和有限自动机1.词法分析例如,用C语言编写的程序段如下:main(){floatx=2,y=3
5、,s;s=x+y*5;}识别出的单词序列为表1-1所示类型名单词类型名单词保留字main左括号(右括号)花括号{保留字float标识符x等号=常量2逗号,标识符y等号=常量3逗号,标识符s分号;标识符s等号=标识符x运算符+标识符y运算符*常量5分号;花括号}表1-1词法分析程序功能:根据词法分析部分提供的单词串,判断这一串单词能否构成正确的表达式或语句等高级程序设计语言中的语法成分并最终构成一个语法上正确的高级语言程序,也就是判断输入的源程序有没有语法错误。例:上例s=x+y*5语法分析的任务就是识别出x+y*5为算术表达式,识别出上述整个符号串为赋值语句.倘若写成s+
6、x=y*5就是错误的,不符合语法规则,必然报错。依循的原则:语法规则描述工具:上下文无关文法2.语法分析语义分析功能:根据语言的定义来确定各语言成分的含义。这一阶段有两项工作:首先对每种语法范畴进行静态语义审查(如是否定义,类型是否匹配等),若语义正确,进行另一方面的工作,即中间代码的翻译。例:A*B(检查A、B类型)依循的原则:语义规则描述工具:属性文法3.语义分析与中间代码生成中间代码:是介于高级语言语句和低级语言语句之间的一种独立于具体硬件的记号系统,它即有一定程度的抽象,又和低级语言十分接近,因此,转换成目标代码很容易。常用中间代码:四元式、三元式、间接三元式、逆
7、波兰记号和树形表示等。例:赋值语句Z=(X+0.418)*Y/W;翻译成四元式形式的中间代码为:算符左操作数右操作数结果(+,X,0.418,T1)(*,T1,Y,T2)(/,T2W,Z)其中,T1和T2是编译期间引进的临时工作变量;第一个四元式意味着把X的值加上0.418存放于T1中;第二个四元式指将T1的值和Y的值相乘存于T2中;第三个四元式指将T2的值除以Y的值保留结果于Z中。功能:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。依循的原则:程序的等价变换规则优化的主要方面:公共子表达式的提取、
此文档下载收益归作者所有