- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 编译技术原理 课 程 要 求 熟练掌握c、pascal语言的编程、语法结构; 会一种程序设计语言的编程; 会一种数据库开发语言,或熟悉文件的管理; 按课程的进程,按时完成课程设计 按时完成作业 认真听讲,认真作笔记,上课不得迟到早退 上课不得喧哗 第一章 引 论 一、什么是编译程序 使用过现代计算机的人都知道,现代的编程软件,越来越趋向于智能化、自然语言化,越来越高级,但是,通过前期课程的学习,大家都知道,计算机是不能识别自然语言或高级语言,只能识别机器语言,那么我们的高级语言程序是如何在计算机上执行的呢? 在计算机上执行一个高级语言程序一般要分两步: 第一步:用一个翻译程序把高级语言翻译成机器语言程序; 第二步:运行所得的机器语言程序求得计算结果。 第二步我们暂时不考虑,那么第一步“翻译程序”是我们这门课讨论的重点,什么样的程序叫翻译程序?翻译程序是如何翻译的? 世界上第一个编译程序—FORTRAN编译程序是20世纪50年代中期研制成功的。 第一章 引 论 一、什么是编译程序 定义:假设,SL指源语言程序,TL指目标语言程序,则: 翻译程序--把SL变换为TL的程序,SL与TL逻辑上等价。 编译程序--SL为高级语言、TL为低级语言的翻译程序。 汇编程序--SL为汇编语言程序,TL为机器语言程序。 解释程序--逐条翻译,且立即执行,不生成目标程序。 分类:根据侧重和用途,编译程序进一步划分: 1.诊断编译程序:专门用于帮助程序的开发和调试的编译程序. 2.优化编译程序:着重于提高目标代码效率的编译程序. 3.交叉编译程序:运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机,如果一个编译程序产生不同于其宿主机的机器代码。 4.可变目标编译程序:如果不需重写编译程序中与机器无关的部分就能改变目标机的编译程序。 第一章 引 论 二、编译过程概述 编译程序的过程,从输入源程序到输出目标程序为止的整个过程,非常复杂,但是从形式和操作步骤上来说,与自然语言的翻译很相近。 例如:把引文翻译成中文的步骤: 1.识别出句子中的一个个单词; 2.分析句子的语法结构; 3.根据句子的含义进行初步翻译; 4.对译文进行修饰; 5.写出最后的译文 按照编译程序的执行过程和它所完成的任务,可把编译过程分为五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成。 又把五阶段分为两大部分:分析 和 综合。 分析部分包括:词法分析、语法分析、语义分析。 综合部分包括:中间代码生成、代码优化、目标代码生成。 词法分析 任务:输入源程序,对构成源程序的字符串进行扫描和分解,过滤编辑符号,按词法规则分解为单词序列。 单词分类:基本字(if、else、for、while等)、标识符、 常数、算符、界符(标点和括号)。 例如赋值语句: position:=initial+rate*60; 词法分析的结果是识别出下列单词符号: 标识符 position 赋值号 := 标识符 initial 加号 + 标识符 rate 乘号 * 整常数 60 分号 ; 词法分析 在词法分析阶段的工作中,所依循的是语言的词法规则(或称构词规则). 描述词法规则的有效工具是:正规式和有限自动机。 编译器的词法分析也叫线性分析或扫描 练习题: pascal语言的循环语句: for I:=1 to 100 do 基本字 for 标识符 I 赋值号 := 整常数 1 基本字 to 整常数 100 基本字 do 2、语法分析(简称为分析) 任务:在词法分析的基础上,根据语法规则,把单词序列分解为各种语法单位。 语法单位:程序、程序段、语句、短语、表达式。 词法分析把记号流按语言的语法结构层次地分组, 例如:对赋值语句:position:=initial+rate*60;进行语法分析可得到如下所示的层次结构,称为语法分析树,简称语法树(或分析树)。 赋值语句 表达式 表达式 标识符 position + 表达式 标识符 表达式 标识符 表达式 数 initial rate 60 * = : 分析树的层次结构可以用递归规则表示。例如:下列规则定义包含+、*运算的表达式: 1.任意一个标识符是一个表达式; 2.任意一个数是表达式; 3.如果e1和
文档评论(0)