- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lec01-00编译概述资料
* 预处理器 预处理器是在编译程序真正开始翻译源程序之前调用的一个独立的程序,以便加快和简化翻译工作。预处理器可以删除源程序中的注释、空格符等与程序执行无关的部分,执行宏代换等工作。 编译之前,预处理器对源程序进行处理,产生标准源程序。 * 编译程序的前后处理器 右图显示一个语言从框架源程序到可运行程序,处理系统的各个部分。 通常我们把由程序员编制的程序称为框架源程序,经过预处理后的程序称为标准源程序。 编译程序的前后处理器 预处理器 编译程序 汇编程序 加载、连接编译 框架源程序 源程序 目标汇编程序 可重定位的机器代码 绝对机器代码 库、可重定位目标文件 * 编译程序的开发 由于计算机语言功能的完善、硬件结构的发展、环境界面的友好要求等都对编译程序提出更多、更高的要求,因而构造一个编译系统并非易事。 虽然编译理论和编译技术的不断发展已使编译程序的生产周期不断缩短,但是要研制完成一个编译程序仍需相当长的时间,工作也相当艰巨。 因此,如何高效、高质量地生成一个编译程序一直是计算机系统设计人员追求的目标。 * 编译程序的开发 编译程序的任务是把源程序翻译成某台计算机上的目标程序,因此,开发人员首先要熟悉这种源程序语言,对源程序语言的语法和语义要有准确无误的理解。 此外,开发人员还需确定编译程序的开发方案及方法,这是编译开发过程中最关键的一步,其作用是使编译程序具有易读性和易改性,以便将来对编译程序的功能进行更新和扩充。 选择合适的语言编写编译程序也是非常重要的,语言选择不当会使开发出来的编译程序可靠性较差,难以维护且质量也无法保证。目前大部分编译程序都是用PASCAL、C和ADA这类高级语言编写的,不仅减少了开发的工作量,也缩短了开发周期。 最后,开发人员对目标机要有深入的研究,这样才能充分利用目标机的硬件资源和特点,产生质量较高的目标程序 * 编译技术在软件开发中的应用 词法分析器的串匹配技术:正文编辑器、信息检索系统、模式识别 语法:排版、绘图系统 代码优化:程序验证器、从非结构化的程序产生结构化程序 * 编译原理的学习 编译技术在软件开发中有着广泛的应用。编译技术不仅是编译程序的开发者要掌握的技术,也是从事计算机软件开发的技术人员必须具备的专业基础知识。 由于编译程序是一个极其复杂的系统,故在讨论中只好把它分解开来,一部分一部分地进行研究。在学习编译程序过程中,应注意前后联系,切忌用静止的、孤立的观点看待问题;作为一门技术课程,学习时还必须注意理论联系实际,多练习、多实践。 * 编译程序的组成 词法分析 语法分析 语义分析 代码优化 目标代码生成 分析阶段 综合阶段 错误处理 符号表 * 词法分析阶段 词法分析的任务是输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号,如保留字(if、for、begin等)、标识符、常数、运算符和界符(如“( )”、=”、“;”)等,将所识别出的单词用统一长度的标准形式(也称内部码)来表示,以便于后继语法工作的进行。 * 词法分析例: 对于循环语句for i :=1 to 100 do 词法分析的结果是识别出如下的单词符号: for---保留字 i ---标识符 := ---赋值号 1 ---整常数 to ---保留字 100---整常数 do ---保留字 * 词法分析例: 计算圆柱体表面积的程序段 float r,h,s; s=2*3.1416*r*(h+r) 经过词法分析,共有单词20个 * 词法分析 词法分析中,将所识别出的单词可以用统一长度的标准形式(也称内部码或整数类码)或有意义的记号来表示,如用整数100表示标识符、200代表数等。 * 词法分析例 词法分析就好比在自然语句中挑出句子中的各种词汇并给出词性。 如“猴子吃香蕉”,分析结果为: 猴子(名词) 吃(动词) 香蕉(名词) * 语法分析阶段 语法分析的功能是将词法分析的结果,根据语言规则,将单词序列分解成各类语法单位,如“表达式”等,并进行语法检查,即检查各种语法单位在语法结构上的正确性。 通过语法分析,确定整个输入串是否构成一个语法上正确的程序。 分析时如发现有不合语法规则的地方,要把这些出错的地方及错误性质报告给程序员。 * 例: 语法分析与语文中分析句子成分相类似。 语文中有句子由主语、谓语组成,谓语由动词、宾语组成等语言规则。 对句子“猴子吃香蕉”的进行语法分析,分析过程常用语法树来表示。 * 课例:表达式a=10+c*20 词法分析:7个单词,标识符a、c,整数10、20等等。 语法树如下页图 * * 如果在分析过程中,无法将某个单词符号进行语法归类,则表示该表达式有语法错误。 * 语义分析及中间代码生成 语义分析的功能是确定源程序的语义是否正确。 句子“小明打篮
原创力文档


文档评论(0)