- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理(西北工业大学)第1节课第一章精品
1.2.6 目标代码生成程序 通常,目标代码的三种形式: (1)具有绝对地址的机器指令代码; (2)汇编语言形式的目标程序; (3)模块结构的机器指令(浮动地址)。 Source对应的80386汇编程序见书中P9 1.2.7 错误检查和处理程序 程序中出现错误是难免的。一完善的编译程序应具有很强的查错能力,并能准确地报告源程序中错误的种类及位置。 除报错外,编译程序还可生成一些另外的注释信息,它有助于程序设计人员调试程序。 常见的辅助手段根据请求输出“对照图”和各变量的值。 Source程序的对照图,见P10表1-2 1.2.8 信息表管理程序 编译过程中,需经常收集、记录或查询程序中所出现的各种量的有关属性(信息)。 为此,编译程序需要建立一批不同用途的表格(常数表、变量表、关键字表等)。 除此之外,根据不同的分析方法,编译程序还保持一些专用的表格(LL分析表、LR分析表、状态矩阵等)。 合理地组织各种表格,恰当地选用相应的造表和查表算法是提高编译程序工作效率的有效途径。 状态转换矩阵 B11 B12 … B1m B21 B22 … B2m : : : : : : Bn1 Bn2 … Bnm a1 a2 … am S1 S2 : : Sn B = 产 生 式 FIRST FOLLOW E→TE′ { ( , i } { ) , # } E′→+TE′ E′→ε { + } {ε} { ) , # } T→FT′ { ( , i } { + , ) , # } T′→*FT′ T′→ε { * } {ε} { + , ) , # } F→(E) F→i { ( } { i } { + , * , ) , # } FIRST集和FOLLOW集 LL(1)分析表 i + * ( ) # E E→TE? E→TE? E? E?→+TE? E?→ε E?→ε T T→FT? T→FT? T? T?→ε T?→*FT? T?→ε T?→ε F F→i F→(E) L R (1) 分 析 表 状态 ACTION GOTO a b # S A B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 s3 s8 s11 r4 r6 r5 s13 r3 r2 s4 r6 s9 r7 s12 s14 acc r1 r3 r2 1 10 5 2 6 7 图6-10 数组的内情向量 NAME … ADDR · · · … · · · A … · · · · … · · · l1 u1 d1 l2 u2 d2 · · · · · · · · · ln un dn n C a 内情向量 符号表 1.3 编译程序的组织 需要注意的是,前面所说的各部分之间的关系,是指它们之间的逻辑关系,而不一定是执行时间上的先后顺序。 事实上,可按不同的执行流程来组织上述各部分的工作,这在很大程度上依赖于编译过程中对源程序扫描的遍数,以及如何划分各遍扫描所进行的工作。 此处所说的“遍”,是指对源程序或其内部表示从头到尾扫视一次,并进行有关的加工处理工作。 例如,对于要求经一遍扫描就能完成从源程序到目标代码翻译的编译程序,我们可以语法分析程序为中心来组织它的工作流程。 显然,由于整个编译程序只对源程序进行一次扫描,故不必产生中间代码。 对于某些程序语言,例如PASCAL和C,用一遍扫描的编译程序去实现比较困难,宜于采用多遍扫描的编译程序结构。 语法分析 程序 语义分析及 代码生成程序 词法分析 程序 整理目标程序 源程序 目标程序 停机 开始 图1-3 以语法分析程序为中心的编译程序逻辑结构 本章内容结束 [1] 蒋立源、康慕宁.《编译原理》.西北工业大学出版社。 [2] (美)Kenneth C.Louden著,冯博琴,冯岚等译。《编译原理及实践》.机械工业出版社 [3] 金成植.《编译程序构造原理和实现技术》.高等教育出版社,2000. [4] 张幸儿.《编译原理 编译程序构造与实践》.机械工业出版社,2008. [5] 陈火旺等.《程序设计语言编译原理》.国防工业出版社,2000. 网站资源: [1] /gjpxw/thujsj/009/ 清华同方编译原理在线学习网站 [2]/f?kw=%B1%E0%D2%EB%D4%AD%C0%ED 编译原
文档评论(0)