编译 第一章 编译技术原理

编译 第一章 编译技术原理

ID:27313686

大小:693.50 KB

页数:27页

时间:2018-12-02

编译 第一章  编译技术原理_第1页
编译 第一章  编译技术原理_第2页
编译 第一章  编译技术原理_第3页
编译 第一章  编译技术原理_第4页
编译 第一章  编译技术原理_第5页
资源描述:

《编译 第一章 编译技术原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译技术原理课程要求熟练掌握c、pascal语言的编程、语法结构;会一种程序设计语言的编程;会一种数据库开发语言,或熟悉文件的管理;按课程的进程,按时完成课程设计按时完成作业认真听讲,认真作笔记,上课不得迟到早退上课不得喧哗第一章 引论一、什么是编译程序使用过现代计算机的人都知道,现代的编程软件,越来越趋向于智能化、自然语言化,越来越高级,但是,通过前期课程的学习,大家都知道,计算机是不能识别自然语言或高级语言,只能识别机器语言,那么我们的高级语言程序是如何在计算机上执行的呢?在计算机上执行一个高级语言程序一般要

2、分两步:第一步:用一个翻译程序把高级语言翻译成机器语言程序;第二步:运行所得的机器语言程序求得计算结果。第二步我们暂时不考虑,那么第一步“翻译程序”是我们这门课讨论的重点,什么样的程序叫翻译程序?翻译程序是如何翻译的?世界上第一个编译程序—FORTRAN编译程序是20世纪50年代中期研制成功的。第一章 引论一、什么是编译程序定义:假设,SL指源语言程序,TL指目标语言程序,则:翻译程序--把SL变换为TL的程序,SL与TL逻辑上等价。编译程序--SL为高级语言、TL为低级语言的翻译程序。汇编程序--SL为汇编语言

3、程序,TL为机器语言程序。解释程序--逐条翻译,且立即执行,不生成目标程序。分类:根据侧重和用途,编译程序进一步划分:1.诊断编译程序:专门用于帮助程序的开发和调试的编译程序.2.优化编译程序:着重于提高目标代码效率的编译程序.3.交叉编译程序:运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机,如果一个编译程序产生不同于其宿主机的机器代码。4.可变目标编译程序:如果不需重写编译程序中与机器无关的部分就能改变目标机的编译程序。第一章 引论二、编译过程概述编译程序的过程,从输入源程序到输出目标

4、程序为止的整个过程,非常复杂,但是从形式和操作步骤上来说,与自然语言的翻译很相近。例如:把引文翻译成中文的步骤:1.识别出句子中的一个个单词;2.分析句子的语法结构;3.根据句子的含义进行初步翻译;4.对译文进行修饰;5.写出最后的译文按照编译程序的执行过程和它所完成的任务,可把编译过程分为五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成。又把五阶段分为两大部分:分析和综合。分析部分包括:词法分析、语法分析、语义分析。综合部分包括:中间代码生成、代码优化、目标代码生成。词法分析任务:输入源

5、程序,对构成源程序的字符串进行扫描和分解,过滤编辑符号,按词法规则分解为单词序列。单词分类:基本字(if、else、for、while等)、标识符、常数、算符、界符(标点和括号)。例如赋值语句:position:=initial+rate*60;词法分析的结果是识别出下列单词符号:标识符position赋值号:=标识符initial加号      +标识符rate乘号      *整常数60分号      ;词法分析在词法分析阶段的工作中,所依循的是语言的词法规则(或称构词规则).描述词法规则的有效工具是:正规式

6、和有限自动机。编译器的词法分析也叫线性分析或扫描练习题:pascal语言的循环语句:forI:=1to100do基本字for标识符I赋值号:=整常数1基本字to整常数100基本字do2、语法分析(简称为分析)任务:在词法分析的基础上,根据语法规则,把单词序列分解为各种语法单位。语法单位:程序、程序段、语句、短语、表达式。词法分析把记号流按语言的语法结构层次地分组,例如:对赋值语句:position:=initial+rate*60;进行语法分析可得到如下所示的层次结构,称为语法分析树,简称语法树(或分析树)。赋值

7、语句表达式表达式标识符position+表达式标识符表达式标识符表达式数initialrate60*=:分析树的层次结构可以用递归规则表示。例如:下列规则定义包含+、*运算的表达式:1.任意一个标识符是一个表达式;2.任意一个数是表达式;3.如果e1和e2都是表达式,则e1+e2e1*e2(e1)都是表达式。例:对赋值语句:position:=initial+rate*60由规则1得:initial和rate都是表达式由规则2得:60是一个表达式由规则3得:rate*60是一个表达式;initial+rate*6

8、0是一个表达式。类似的,可以用下列规则递归的定义语句:1、如果ID1是一个标识符,e2是一个表达式,则ID1:=e2是一个语句。2、如果e1是一个表达式,st2是一个语句,则While(e1)st2和if(e1)st2都是语句。3、语义分析任务:对源程序进行语义检查和类型检查。语义分析使用语法分析确定的层次结构表示表达式和语句。类型检查是语义分析的一个重要部分,按照语言的

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

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

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