第1章 编译原理概况.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章 编译原理概况

编译原理 词法分析的任务仅对源程序进行线性扫描 即可完成,比如识别标识符,因为标识符的 结构是字母开头的字母和数字串,这只要顺 序扫描输入流,遇到既不是字母又不是数字 字符时,将前面所发现的所有字母和数字组 合在一起而构成单词标识符、但这种线性扫 描则不能用于识别递归定义的语法成分,比 如就不能用此办法去匹配表达式中的括号. D.词法分析和语法分析本质区别 A语义分析阶段任务 是审查源程序有无语义错误,为代 码生成阶段收集类型信息。 (3)语义分析阶段 (A).比如语义分析的一个工作是进行类型审 查, 审查每个算符是否具有语言规范允许的 运算对象,当不符合语言规范时编译程序应 报告错误。 (B).如有的编译程序要对实数用作数组下标 的情况报告错误。 B语义分析实例 (C).又比如某些语言规定运算对象可被强制, 那么当二目运算施于一整型和一实型时, 编译程序应将整型转换成实型而不能认为是 源程序的错误。 假如在语句sum:=fitst+count*10中的两个 运算对象;count是实型,10是整型,则语 义分析阶段进行类型审查之后,在语法分 析所得到的分析树上增加一语义处理结点, 表示整型变成实型的一目算符.inttoreal, 则图1.5的树变成图 1.6所示的那样。 C语义分析实例 := 10 id1 + id2 * id3 inttoreal 图1.5 语句id1:=id2+id3*10插入语义节点的语法树 语义分析实例 A.任务: 在进行了上述的语法分析和语义分析阶段的 工作之后,有的编译程序将源程序变成一种 内部表示形式,这种内部表示形式叫做中间 语言或中间代码“中间代码”是一种 结构简单、含义明确的记号系统, (4)中间代码生成 a).多种多样的形式, b).重要的设计原则为两点: 一是容易生成; 二是容易将它翻译成目标代码 B.记号系统可以设计 很多编译程序采用了一种近似“三地 址指令”的‘四元式”中间代码,这种 四元式的形式为: (运算符,运算对象1,运算对象2,结果) C.四元式记号系统 比如源程序 sum:=first+Count* 10可生成四 元式序列,如图1.7所示: (1) (inttoreal 10 - t1) (2) (* id3 t1 t2) (3) (+ id2 t2 t3) (4) (:= t3 - id1) 中ti(i=l,2,3)是编译程序生成的临时名字, 用于存放运算结的。 D.四元式中间代码实例 在此阶段的任务是对前阶段产生的中间代 码进行变换或进行改造,目的是使生成的目 标代码更为高效,即省时间和省空间。 (5)代码优化 (1) (inttoreal 10 - t1) (2) (* id3 t1 t2) (3) (+ id2 t2 t3) (4) (:= t3 - id1) 可变换为 (1) (* id3 10.0 t1) (2) (+ id2 t1 id1) 代码优化实例 这一阶段的任务是把中间代码变换成特 定机器上的绝对指令代码或可重定位的 指令代码或汇编指令代码. (6)目标代码生成 这是编译的最后阶段,它的工作与硬件系统 结构和指令含义有关,这个阶段的工作很复 杂,涉及到硬件系统功能部件运用、机器指 令的选择、各种数据类型变量的存储空间分 配以及寄存器和后缓寄存器的调度等. 目标代码生成相关因素 共63页, Page* 作者:杜亚军 duyajun@ 版权所有,任何教师使用本课件必须与作者联系 参考文献 1.陈火旺,钱家桦,孙永强.程序设计语言原理.国防工业出版社,1983 2.杜淑敏,王永宁.编译程序设计原理.北京大学出版社,1986 3.俞瑞钊.数理逻辑.浙江大学出版社.1990 第一章 概论 主要内容 1.什么叫编译程序 2.编译过程 3.编译程序的组成 4.与编译原

文档评论(0)

awang118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档