编译原理实用教程(Tsu版电子教案)doc36.docVIP

编译原理实用教程(Tsu版电子教案)doc36.doc

  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文档。上传文档
查看更多
编译原理实用教程(Tsu版电子教案)doc36

第1章 编译系统概述 翻译系统(编译系统)、操作系统、数据库管理系统是计算机的三大系统软件。 1.1 程序设计语言的发展 机器语言(汇编语言(程序设计语言(高级语言) 例计算表达式3*16+2的值,实现该计算的机器语言程序、汇编语言程序和高级语言(C语言)程序如下所示,该计算机的系统结构和汇编语言的使用方法详见本书第7章。 机器语言程序 汇编语言程序 高级语言程序 1.2 基本术语解释 ㈠源语言和源程序 ㈡文本文件 ㈢目标语言和目标程序 ㈣二进制文件 ㈤翻译程序 将源程序译成逻辑上等价的目标程序的程序,有二种翻译方式:编译和解释。 ①解释方式 以源程序作为输入,输入一句,解释执行一句,不产生完整的目标程序,相应的翻译程序称为解释程序,工作方式如下图所示: 解释、执行 源 解释程序 结 程 interpreter 果 序 输入数据 ②编译方式 将源程序全部译为目标程序,该目标程序可在操作系统环境下直接执行,相应的翻译程序称为编译程序,工作方式如下图所示: 源程序 ASCII码 二进制(整体未定位) 二进制(整体定位) 结果 输入数据 1.3 编译过程概述 编译程序工作过程相当复杂,从数据加工的角度来看,可将其分成4个逻辑阶段,它们是: 词法分析 语法分析 语义分析(中间代码产生) 目标代码生成 图示如下: 源程序 词法 语法 中间代码 目标代码 目标程序 分析 分析 产生 生成 编译程序的结构基本上是按照这个流程来设计的。 下面以算术表达式3+abc*128为例,来说明编译程序工作过程。 ㈠词法分析 执行词法分析任务的程序称为词法分析器。 任务:字符串形式的单词 ( 编码形式的单词内部码(二元式) 依据:语言的构词规则 ①二元式 (单词种别,单词值) 单词种别:用整数码表示(为直观起见用字符表示),语法分析时用。 单词值:在本书中用字符串表示,语义分析时用。当一个单词种别中可能有多个单词时,单词的值才有意义。为了便于输入处理,无意义的单词值用NUL表示。 ②二元式编码 单词 单词种别(字符形式) 单词值(字符串形式) + + NUL - - NUL * * NUL / / NUL ( ( NUL ) ) NUL … … … 标识符 i 字符串形符号名 整常数 x 字符串形式数字 实常数 y 字符串形式数字 … … … 经词分析,算术表达式3+abc*128的单词内部码(二元式)为: (x,3) (+,NUL) (i,abc) (*, NUL) (x,128) ㈡语法分析 执行语法分析任务的程序称为语法分析器。 任务:检查源程序的语法结构是否正确 依据:语言的语法规则 在语法分析时,算术表达式3+abc*128的语法结构应表示为x+i*x,语法分析器最终应识别出这是一个算术表达式,识别过程相当于建立一棵语法树。 算术表达式 算术表达式 + 项 项 项 * 因子 因子 因子 x(整常数) x(整常数) i(标识符) ㈢语义分析 执行语义分析任务的程序称为语义分析器或中间代码产生器。 任务:建立符号表和常数表,记录源程序中标识符属性和常数值,根据语言的语义规定生成中间代码。 依据:语言的语义内涵 语义分析(中间代码产生)主要工作为:语义正确性检查和语义翻译。 ①语义正确性检查 例: begin real a; integer a; ………… end 语法正确,语义错误,除非语言允许变量性质可动态修改。 ②语义翻译 1)说明语句的翻译 将标识符及其属性填入符号表。 2)执行语句的翻译 根据不同语句的语义,生成逻辑上等价的中间代码。 中间代码 结构简单、意义明确的记号系统,非常接近机器指令,但又独立于具体机器。常用的中间代码有三元式和四元式。 表达式3+abc*128可译成如下四元式: (*,abc,128,T1) (+,3,T1,T2) 其中,abc表示标识符abc在符号表中入口;T1和T2是在翻译过程中由编译程序引入的临时变量;而128表示常数128在常数表中的地址。 符号表 符号表用于记录源程序中出现的标识符,一个标识符往往具有一系列的语义值,它包括标识符的

文档评论(0)

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

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

1亿VIP精品文档

相关文档