编译原理引论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
绝对指令代码 ? 可立即执行 目 标 代 码 形 式 可重定位指令代码 ? 借助连接装配程序把 各目标模块连接在一起,确定程序变 量 ( 或常数 ) 在主存中的位置,装入内 存中指定的起始地址,使之成为绝对 指令代码 ( 大多数编译程序采用 ) 。 汇编指令代码 ? 汇编器汇编之后运行 31 某些情况下,为加速编译速度,某些 32 阶段可省,某些阶段也可合并,但多数实用 编译程序的工作过程大致都像这五个阶段。 § 1.3 编译程序的结构 1. 编译程序总框图 源程序 词法分析器 单词符号 表 语法分析器 出 格 语法单位 语义分析与中间代码产生器 错 管 中间代码 处 理 优化器 理 中间代码 目标代码生成器 目标代码 33 词法分析器: 又称 扫描器 ,输入源程 序,进行词法分析,输出单词符号。 语法分析器: 简称 分析器 ,对单词符 号串进行语法分析 ( 根据语法规则进行推导 或归约 ) ,识别出各类语法单位,最终判断 输入串是否构成语法上正确的“程序”。 34 语义分析器和中间代码产生器 : 按照语义规 则对语法分析器归约出 ( 或推导出 ) 的语法单位进 行语义分析并把它们翻译成一定形式的中间代码。 优化器 : 对中间代码进行优化处理。 目标代码生成器 : 把中间代码翻译成 目标程序。 35 2. 表格与表格管理 ? 常见的表格 : 符号名表,常数表,标号表,入 口名表,过程引用表。 ? 格式 : 名字 信息 常量名 ? 值 一个名字 变量名 ? 类型、内存大小、地址 过程名 ? 地址、参数 处理定义时 ? 登记 处理引用时 ? 查证 36 例 : C 程序段: void INCWAP(int M { , int N) START: int K; K=M+1; M=N+4; } N=K; 表 0.1 符号名表 SNT NAME INFORMATION M 形式参数,整 型,值参数 N 形式参数,整 型,值参数 K 整型,变量 表 0.2 常数表 CT 值 (VALUE) (1) 1 (2) 4 37 表 0.3 入口名表 ENT NAME INFORMATION (1) INCWAP 二目子程序 , 入口四元 式 :1 void INCWAP(int M , int N) { int K; START: K=M+1; M=N+4; N=K; } 表 0.4 标号表 LT NAME INFORMATION (1) START 四元式 :(4) 38 表 0.5 四元式表 QT OPR OPN1 OPN2 RESULT (1) link (2) par INCWAP 1 M (3) par INCWAP 2 N (4) + M 1 K (5) + N 4 M (6) := K N (7) return 39 3. 出错处理 ? 出错处理程序:发现源程序中的错误,把 有关错误信息报告给用户 最大限度发现各种错误,准确指出其性质 及地点,并将其影响限制在尽可能小的范围, 使源程序其它部分能继续被编译,以进一步发 现其它可能的错误。 40 绝大多数错误可在编译的前三阶段检测出来: 语法错: 不符合词法规则 (“ 非法字符”, 5X , 256.) 、或不符合语法规则 (“ 括号不匹 配”, x=(a+(b*c)-1 、“缺少;”等 ) 。 语义错: 不符合语义规则,语义分析时检测 出来 ( 静态语义 ) ,有时要到运行时才 能检测出来 ( 动态语义 ) 。如:说明错 误、作用域错误、类型不一致等。 41 4. 遍 (Pass) —— 或趟 对源程序或源程序的中间结果从头到尾 扫描一次,并作有关处理生成新的中间结果 或目标程序。 42 阶段与遍是不同的概念。一遍可以由若干 段组成,一个阶段也可以分若干遍来完成 如: (1) 词法分析,可以单独作为一遍; (2) 更多时候将词法分析和语法分析合并为一遍; (3) 为处理方便,语法分析和语义分析与中间代 码 产生合并为一遍; (4) 优化要求高时,优化阶段分为多遍 43 一遍中若包含多个阶段时,各阶段穿插进行 词法分析 + 语法分析 + 语义分析与中间代码产生: 语法分析器为核心 44 5. 编译前端与后端 ( 概念上 ) 源语言 前端 中间语言 后端 目标语言 ? 编译前端 :与源语言有关,如词法分析,语法 分析,语义分析与中间代码产生,与机器无关 的优化 ? 编译后端 :与目标机有关,与目标机有关的 优化,目标代码产生 – 优点:减少对内存容量的要求,程序逻

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档