词法分析语法分析语义分析与中间代码产生.pptVIP

词法分析语法分析语义分析与中间代码产生.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析语法分析语义分析与中间代码产生

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. 语义分析与中间代码产生 任务:对语法分析所识别的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。 ? 静态语义检查:变量是否定义,类型是否正确等。 ? 若语义正确,则进行中间代码的翻译。 通常包括两方面工作: 依循原则:语言的语义规则 描述

文档评论(0)

zhuwo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档