编译原理第1章new.pptVIP

  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文档。上传文档
查看更多
编译原理第1章new.ppt

第一章 绪论 * 说明 依据的规则是词法规则。 单词符号:常量、变量名、关键字、 运算符等。 每一类单词符号可用一整数表示 或其它方式。 词法分析应指出单词符号的词法错误, 如非法字符。 第一章 绪论 * 2、语法分析(Parser) ——构成语法分析程序 语法分析的主要任务是从词法分析取得单词符号串形式的源程序,并将一个或多个单词组合为语言的各种语法类。 语法分析依据的是语言的语法规则。 语法类:表达式、语句 、子程序等。 语法分析应指出语句的语法错误。 第一章 绪论 * 例2 、以下为 PASCAL语言的一条语句 w:=(a+b)*c ; 词法分析的结果 w := ( a + b ) * c ; 变量 运算符 分隔符 变量 运算符 变量 分隔符 运算符 变量 分隔符 语法分析的结果 w := ( a + b ) * c ; 变量 运算符 分隔符 变量 运算符 变量 分隔符 运算符 变量 分隔符 表达式 赋值语句 第一章 绪论 * 3、语义分析及中间代码生成(semantic routine) —语义分析程序 语义分析的主要任务是确定源程序的意义 (语义) ,对不同的语法类进行初步的翻译工作,包括静态语义检查和中间代码的生成。 静态语义检查:对每种语法范畴进行静态语义检查(变量是否定义,类型一致性)。 中间代码生成:进行初步的翻译,生成中间代码(intermediate representation,IR ) 。 第一章 绪论 * 说明 语义分析依据的是语言的语义规则。 中间代码是一种结构简单含义明确的记号系统,这种记号系统的特点是既独立于具体的硬件,又和计算机的指令系统有某种程度的联系或相似之处。很容易将中间代码转变成机器指令。 语义分析和语法分析是不同的概念,但在实际完成编译工作时,两者又是紧密结合的,一般同时完成。 第一章 绪论 * 例3、上例的PASCAL语句 w:=(a+b)*c ; 语义分析及中间代码生成确定先加后乘的操作,并生成中间代码。 例:以上语句的一种中间代码三元式 (1) (+,a,b) (2) (*,(1),c) (3) (:=,w,(2)) 第一章 绪论 * 代码优化(Optimizer) ——代码优化程序 代码优化的主要任务是对中间代码或目标代码进行算法的等价变换,以期得到高效的目标代码。 高效是指时间和空间的高效。 代码优化可以在目标代码生成之前进行,也可以在目标代码生成之后进行。 第一章 绪论 * 5、代码生成(code generator) ——代码生成程序 代码生成的主要任务是将源程序的中间代码形式根据具体的机器硬件系统转换成机器语言或汇编语言。 说明 并非所有的编译程序都需要这五个阶段。 完整的编译程序还包括符号表的管理和出错处理。 第一章 绪论 * 二、编译程序的组成 词法分析 语法分析 语义分析及中间代码生成 代码优化 目标代码生成 符号表的管理 出错处理 第一章 绪论 * 1、符号表的管理 符号表是用于保存源程序中所使用的每个标识符的属性的数据结构,以便进行语法分析和中间代码生成。 标识符:变量名、函数名、过程名等 属性:标识符的存贮分配、类型、作用域等 合理地设计和使用表格是编译程序构造的一个重要问题。 第一章 绪论 * 2 、错误的检测和处理 编译的各个阶段都能检测到源程序中的错误,而且在检测一个错误后,必须立即对该错误进行处理,以便使编译工作能继续进行下去,继续对源程序中可能存在的其他错误进行检测。 通常在语法和语义分析阶段能处理由编译程序检测出的大部分错误 一个好的编译程序应能最大限度的发现源程序中的各种错误,并使其影响尽可能小

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档