- 4
- 0
- 约4.03千字
- 约 46页
- 2018-10-13 发布于湖北
- 举报
3. 出错处理 不仅能对书写正确的源程序进行编译,而且应能对出现的错误进行处理,若源程序有错,应设法发现错误,并把有关信息报告给用户。专门由一组程序完成,出错处理程序。 好:最大限度发现各种错误,准确指出其性质及地点,并将其影响限制在尽可能小的范围,使源程序其它部分能继续被编译,以进一步发现其它可能的错误。 语法错:不符合词法规则(“非法字符”)、或不符合语法规则(“括号不匹配”、“缺少;”等)。 语义错:不符合语义规则,语义分析时检测出来(静态语义),有时要到运行时才能检测出来(动态语义)。如:说明错误、作用域错误、类型不一致等。 自动纠错 ? 代价非常高。 绝大多数错误可在编译的前三阶段检测出来: * 责任教师 孙继荣 高级语言及其语法描述 引论 词法分析 语法分析 语法分析—自下而上 属性文法和语法制导翻译 1 2 3 4 5 6 语义分析与中间代码产生 符号表 运行时存储空间组织 优化 目标代码生成 7 8 9 10 11 §1.1 什么叫编译程序 使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。现代计算机系统一般都含有不止一个高级语言编译程序,对有些高级语言甚至配置了几个性能不同的编译程序,供用户按不同需要进行选择。高级语言编译程序是计算机系统软件最重要的组成部分之一,也是用户最直接关心的工具之一。 那么,什么叫编译程序? 在计算机上执行一个高级语言程序一般要分两步: 高级语言程序 机器语言程序 计算结果 ? 翻 译 ? 运 行 源程序 Fortran, Pascal, C…高级 翻译程序(解释、编译) 目标程序 汇编、机器低级 编译程序 汇编语言 机器语言 汇编程序 1. 编译程序 (compiler) 2. 分类(按用途和侧重性) 诊断编译程序(Diagnostic Compiler) 开发、调试 优化编译程序(Optimizing Compiler) 提高代码效率 交叉编译程序(Crossing Compiler) 产生不同于宿主机的机器代码 可变目标编译程序(Retargetable Compiler) 不需重写与机器无关的部分即可改变目标机 当时,人们普遍认为设计和实现编译程序是一件十分困难、令人生畏的事情, 经过四十年的努力,编译理论和技术得到迅速发展,现在已形成了一套比较成熟的、系统化的理论与方法,并且开发出了一些好的编译程序的实现语言、环境和工具。在此基础上设计并实现一个编译程序不再是高不可攀的事情。 3. 世界上第一个编译程序 Fortran,20世纪50年代中期研制成功。 4. 本课程主要介绍设计和构造编译程序的基本原理和方法,是一门专业性、逻辑性非常强的课程,要理论与实践相结合。在理解的基础上进行掌握,并自觉将这些知识应用于软件开发的实践之中。 上好每一次习题讲解课并做好笔记,认真完成每一次的作业,多做习题。 §1.2 编译程序概述 自然语言翻译过程: 编译程序工作过程: 识别单词 分析句法 初步翻译 译文润饰 正式翻译 词法分析 语法分析 语义分析与中间代码产生 代码优化 目标代码生成 1. 词法分析 任务:输入源程序,对字符串扫描分解、识别出单词(或单词符号、或简称符号),如基本字(begin、end、for、while等)、标识符、常数、算符和界符(标点符号、左右括号等)。 例:for I : = 1 to 100 do 基本字 标识符 赋值号 整常数 基本字 单词符号是语言的基本组成部分,是人们理解和编写程序的基本要素。识别和理解这些要素无疑也是翻译的基础。如同将英文翻译成中文一样,如果对英语单词不理解,则谈不上进行正确的翻译。 依循原则:语言的词法规则 (或构词规则) 描述工具:正规式和有限自动机 2. 语法分析 任务:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单元(语法范畴),如:短语、子句、句子(语句)、程序段、程序等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。 依循原则:语言的语法规则 描述方法:上下文无关文法 词法分析 ? 线性分析 语法分析 ? 层次结构分析 例:z : = x + 0.618 ? y 语法分析要识别: (1) x+0.618?y为算术表达式; (2)并且整个字符串属于赋值语句范畴。 3. 语义分析与中间代码产生 任务:对语法分析所识别的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。 ? 静态语义检查:变量是否定义,类型是否正确等。 ? 若语义正确,则进行中间代码的翻译。 通常包括两方面工作: 依循原则:语言的语义规则 描述
您可能关注的文档
最近下载
- 小学语文修辞手法(六种常见修辞).ppt VIP
- 人美版 美术六年级下册 2探访自然的奇观 课件 (8).ppt VIP
- 2012年大连海洋大学610C语言程序设计考研复试真题A答案.doc VIP
- 医学课件-《中国新生儿复苏指南(2025年修订)》.pptx
- 基于微信小程序的个人健康数据管理系统的设计与实现+ssm毕业论文.doc VIP
- 第一届全国技能大赛世赛项目——全国机械行业选拔赛-工业4.0项目样题.pdf VIP
- [外国电影剧本300篇]21克.pdf VIP
- 建筑垃圾减量化方案20240424.docx
- 融优学堂艺术史考试答案.docx VIP
- 2026年高考化学一轮复习基于高考真题研究的《晶胞计算》问题复习备考策略研究.pptx VIP
原创力文档

文档评论(0)