一种面向对象编译器体系结构框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 2主要包括以下内容= ’20分 析 过 程 分 析 器 识 别 源 程 序 并 生 成 345 结 构 %345 结 构 比 具 体 语 法 树 更 易 于 理 解 %目 前已经有许多工具能够自动生成 345% ’#0基 于 345 的 分 析 语 义 分 析&代 码 生 成& 代码优化等将基于 345进行%这需要对 345进行 遍历&转换和变化%图中 345上的自回路即表示了 345 的 自 我 进 化 过 程 % ’>0分 析 器 构 造 工 具 ?*)7,)@,;,)*8.)表 示 自 动 化 工 具 ’虚 线 表 示 工 具 不 是 必 需 的 0% 其 产 生 的 分 析 器 可 以 只 是 分 析 表 ’如 AB 分 析 表 等0!也 可 以 和 C*99一样将分析器表示为某种语言的代码% ’D0用 户 编 码 语 义 分 析&代 码 生 成 和 代 码 优 化过程等由用户编码完成%在采用 345结构的情况 下!他们是直接操纵 345的分析过程%5),,E*F/,) ’虚 线 表 示万不方是数必据须 的0为 这 些 分 析 过 程 提 供 了 对 345结构的遍历操作!因此可以将用户代码 和自 动
S POMS
西北工业大学学报
结构!而是从其 他 应 用 领 域 的 角 度 考 虑 了 语 言 中 间 表 示的问题"该方法既没有将 #$结构作为 %&’的 发 展 !也 没 有 从 根 本 上 解 决 编 译 器 构 造 的 整 体 问 题 "
第 MO卷
( 面向对象的编译器体系结构框架
程序设计语言表达的是程序的结构和含义的信
图 # 面向对象语法表示示意图
对象结构非常适合表示层次结构!这 就使 345 很适合对象化%然而!345结构只是对某 种特定 语 言语法 描述的 抽 象!因 此 其 作 为 中 间 表 示 结 构 仍 然 限 制 了 系 统 结 构 的 灵 活 性 %"\$中 提 出 了 面 向 对 象 的 ]B 表 示 方 法 !该 表 示 方 法 在 相 当 程 度 上 独 立 于 具 体 的程序设计语言!比 345结构进一步降低了语法分 析 过程与 语义分 析 等 过 程 间 的 耦 合 程 度!减 少 了 语 义 分 析 等 过 程 对 具 体 语 法 和 分 析 方 法 的 依 赖 %但 是 ! 这种方法没有从编译器本身的角度考虑编译器系统
另 一 种 方 法 是 从 语 法 入 手 !实 现 语 法 的 对 象 化 % 图 #给出了语法对象化的简单示例%类结构表示采 用 了 JKA语 言 描 述% 图 #中 左 图 表 示 了 LM N 3O!右图表 示了 3M NPQR%其中 4,SN TU<!:VQ< 是 :的直 接前驱!<!:WGX%图 中采用 了约 束的方 法 定 义 了 这 两 种 组 合 方 式 %除 此 之 外 !还 可 以 采 用 约 束 抽象 化的方 法 表 示 之!例 如 可 以 定 义 顺 序 组 合 关 系为 4,SP.+ 类!而选择组合关系为 4,FP.+ 类%文 献 "Y$中给出 了一种 约 束 抽 象 化 的 具 体 论 述% 文 献 "Z![$给 出另外两种 在编 译 技 术 中 应 用 面 向 对 象 的 例子%
第 >期
林 奕等=一种面向对象Βιβλιοθήκη Baidu译器体系结构框架
^ D_2^
对此!模块 化 语 法 与 语 法 合 成 技 术 可 以 在 一 定 程 度 上 缓 解 这 些 问 题 "#$%此 外 !基 于 语 义 的 编 译 器 体 系 结 构 也 是 研 究 的 方 向 %然 而 !模 块 化 语 法 虽 然 利 用 了 同种语言的方 言 间 的 共 性!但 是 对 不 同 语 言 间 的 共性仍然无法充分利用%基于语义的编译器体系结 构 由于语义学本 身 尚 处 于 发 展 之 中!因 此 距 离 实 际 应 用 仍 有 较 大 距 离 %本 文 结 合 面 向 对 象 软 件 工 程 &编 译 器 体系结构和 程 序 设 计 语 言 的 规 律!提 出 一 种 面 向 对 象 编 译 器 体 系 结 构 框 架 ’()*+,-.)/0!试 图 从 体 系 结 构 &领 域 模 型 的 角 度 解 决 上 述 问 题 %
图 0根 据 程 序 设 计 语 言 的 基 本 特 点!给 出 了 面 向 对 象 的 编 译 器 体 系 结 构 框 架 示 意 图"图 中 123456789类 是 所 有 有 关 数 据 操 作 类 的 超 类!:;8< 类 是 所 有 有 关 控 制 流 类 的 超 类 "=;8>?表 示 模 块 类 ! 继 承 了 ’@23AB565以 及 123456789类!并 负 责 处 理 有 关模 块的各 种操作 C如 为 有 关 该 模 块 的 类 型 检 查 提供接口D"子模块的概念由 =;8>?的自我包含表示 C但 是 框 架 并 不 具 体 约 定 子 模 块 的 形 式 和 有 无 D" EF243GG789为 表 达 式 类!由 于 表 达 式 有 顺 序 控 制 的 能 力!因 此 该 类 除 了 继 承 ’@23A123456789类 外!还 是 :;8< 的子类"语句是语言的重要组成成分!具有 操 作 数 据 和 顺 序 控 制 的 能 力!因 此 也 由 123456789 和 :;8< 类 派生"&656&3H是语句序 列 类 C和 复 合 语 句 不 同 !语 句 序 列 是 逻 辑 意 义 上 的 序 列 !而 复 合 语 句 则是特定语言中的一种语句类型"任何语言都有语 句 序 列!但 是 却 不 一 定 有 复 合 语 句 D"&3;3>6&656和 -882&656表示选 择语句类 和循环 语 句类!代 表 了 最 基本的控制流语句"123456789和 :;8< 是两个抽象 类!因此以虚线表示"可以根据需要定制 123456789 和 :;8< 的实现"
摘 要)对编译系统体系结构进行了新的研究和探索"基于传统 编译 理论和 新的发 展趋势"提 出了 基于领域模型的面向对象编译系统构造框架 **+,"以及编译 过程对象 化与基 于程 序设计 语言基 本 规 律 的 设 计 思 想 - 并 实 现 了 一 个 分 析 系 统 的 原 型 "取 得 了 较 好 效 果 -
工 具 生成 的分 析器代 码分 离开来%5),,E*F/,)可 以采用 GH7H8.)设计模式实现 % ">!D$ 这种树内操作的 形 式在一 定程 度上会 限 制 用 户 对 345 直 接 操 作 的 能 力 %5),,E *F/,)实 现 的 难 易 则 与 用 来 实 现 分 析 器 的语言对如 GH7H8.)等模式的支持程度有关%
’&&’年 5月 第 ’&卷 第 0期
西北工业大学学报 ‘Ba>@FEBbRB>=cG;J=;>@/BEK=;<c@?<FEd@?e;>J?=K
2afg ’&&’ hBEg’&RBg0
一种面向对象编译器体系结构框架!
林 奕"朱怡安"付 游
#西北工业大学 计算机科学与工程系"陕西 西安 $%&&$’(
1 现代编译器体系结构
图 2给 出 了 以 345’3678)*984:;8*<5),,0为 核 心 的 分 析 器 体 系 结 构 %其 基 本 原 理 为 =分 析 器 构 造 出 源 程 序 的 345!然 后 通 过 对 345 的 遍 历 进 行 语 义分析等各种分析与识别%
图 2 基于 345的编译器
I 编译技术的发展与面临的问题
近 几年来"编译器的组成已从管道#D?D;E?@;(体 系结构逐步发展为以树结构为核心的仓库
#>;DBJ?=B>K(式体系 结 构L%M"从 而 将 编 译 过 程 中 紧 密 耦合的各个部分分解为相对独立的多个阶段-编译 器也 成为了 由相 互 独 立 并 协 作 的 分 析7综 合 模 块 组 成的软件系统-
编 译 过 程 可 以 分 为 分 析 与 综 合 两 个 阶 段 -因 此 " 目前常用的各种编译器构造工具可以分为两大类) 即构造出完整编译器的工具和构造编译器前端的工
具-NF<<和 O;P是两种最为常用的前端构造工具此 外"类 似 的 工 具 还 有 .QO72R.OSTUOV7 .2W/S72X,Y XU,L’M等 - 分 析 技 术 除 了 在 编 译 系 统 中 应 用 外 "作 为 一 种 有 效 的 模 式 匹 配 技 术 "也 被 广 泛 应 用 于 构 造 各 种 识 别 算 法 #如 自 然 语 言 理 解 7自 动 证 明系 统7基于规 则 的 知 识 库7数 据 挖 掘 等 (以 及 再 工程和逆向工程等领域中-在需要处理程序设计语 言 的应 用中 #如再 工程 和 逆 向 工 程("对 分 析 技 术 的 要求与编译系统不尽相同-传统的语言分析技术面 临着如下问题)Z 被分析语言的多样性造成语法的 多变性[\ 针对静态抽象的语法和特定的语法分析 算法实现动态的语言识别过程-这极大地增加了分 析器设 计7实 现 的 难 度"降 低 了 系 统 结 构 的 灵 活 性[ ] 在 使 用 NF<<等 工 具 时"编 译 器 的 设 计7实 现 与 调 7测 试 过 程 的 分 离 使 维 护 系 统 一 致 性 更 加 困 难 [^ 分析 器依赖 于某 语 言 的 具 体 语 法"导 致 其 单 一 的 识 别能力[_ 分析器构造工具对具体分析算法的依赖 性使得对语法的部分修改可能导致整个语法规则的
I 面向对象技术在编译器中的应用
编 译 器 的 对 象 化 可 以 从 很 多 种 角 度 进 行 %例 如 ! 最容易想到的方法是把分析的每个阶段都作为对象 来看!即将 编 译 器 分 解 为 词 法 对 象&语 法 对 象&语 义 对 象 &代 码 生 成 对 象 &代 码 优 化 对 象 等 % 这 种 分 解 方 法既没 有解 决 2中 所 述 的 各 种 问 题!也 没 有 充 分 利 用面向对象技术所具有的多层次重用和封装等特 点 !因 此 该 方 法 并 不 合 适 %
息 "程 序 设 计 语 言 的 基 本 内 容 包 括 )数 据 !控 制 !过 程 等 " *+, 过 程 在 如 -#&.等 语 言 中 也 具 有 数 据 的 各 种 特 性!因此可以 看 成 是 一 种 对 数 据 集 进 行 加 工 的 操 作 实体"这 种 实 体 具 有 一 定 的 类 型!执 行 一 定 的 操 作!并具有一定的存储表示"即使在 /语言中!函数 指针也可以看成具有只读属性的过程的数据表示"
变 化 "从 而 可 能 引 起 分 析 器 整 体 设 计 的 变 动 -
! 收稿万日方期数)’据&&%i&$i%1
基 金 项 目 )国 防 重 点 实 验 室 基 金 #jj‘Xj1k 6k %k lm&0%0(资 助
作者简介)林 奕#%j$6i("男"西北工业大学博士生"主要从事计算软件与理论7分布T并行计算的研究-
关 键 词)面向对象"编译"领域模型"框架
中 图 分 类 号 )./0%1
文 献 标 识 码 )2
文 章 编 号 )%&&&3’$45#’&&’(&03&1&&3&6
编译技术是现代软件技术的重要组成部分-无 论 在 系统软件还 是 在 模 式 识 别 等 其 他 领 域"编 译 技 术都起着非常重要的作用-作为发展较早的计算机 理 论"编译技术 已 经 具 有 较 为 成 熟 和 完 整 的 理 论 体 系 "编 译 器 体 系 结 构 也 有 了 很 大 发 展 - 与 此 同 时 "以 编 译 理论为基础"也 出 现 了 许 多 得 到 广 泛 应 用 的 编 译 器 构 造 工 具 -然 而 "这 些 工 具 都 只 是 某 种 分 析 技 术 的 工具化"它们 的 分 析 能 力 依 赖 于 该 分 析 方 法 的 分 析能力-目前还没有一种工具可以从整体上解决构 造编译系统的所有复杂问题-基于这些工具开发的 编 译系统存在着 诸 如 模 块 化 等 原 则 与 形 式 化7自 动 化 原 则 间 的 矛 盾 -另 外 "当 需 要 在 其 他 应 用 领 域 中 使 用 编 译 技 术 进 行 分 析 7推 理 和 实 现 自 动 机 等 时 "这 些 工具有时可能无法发挥作用-本文首先研究了编译 系 统 体 系 结 构 发 展 的 新 趋 势 -然 后 "基 于 程 序 设 计 语 言 的普遍规律"提 出 了 针 对 程 序 设 计 语 言 处 理 领 域 的 面 向 对 象 编 译 系 统 体 系 结 构 框 架 #**+,88 *9:;<=3*>?;@=;A+BCD?E;>,>FC;GB>H("并 从 软 件 复用和体系结构的角度研究了系统框架的各种特 性-