WEB开发网
开发学院软件开发Java 构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解... 阅读

构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示:在本系列的 第 2 部分 中, 解释了 CDT 编辑器如何通过响应每次击键来更新其文本表示,但它能做到的远比仅仅用特定颜色及字体显示关键字要多得多:它还能分析代码结构并记录每个函数、语句及变量,构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析,这种分析,称做解析,我将特别地讨论从 Document 接收

在本系列的 第 2 部分 中, 解释了 CDT 编辑器如何通过响应每次击键来更新其文本表示。但它能做到的远比仅仅用特定颜色及字体显示关键字要多得多:它还能分析代码结构并记录每个函数、语句及变量。

这种分析,称做解析,它是计算机科学家们所不断研究的一个十分宽泛的主题。本文将简要地介绍一些解析背后的理论,并将重点介绍 CDT 运行的机制。本文的目的是要提供足够的信息,这样,如果您今后想要改进或修改 CDT 解析器,就会知道要改变哪些类和方法以及如何进行改变。

我已经将这些类添加到精简版的 C/C++ 开发工具(BBCDT)中了,所以您将能够看到解析在本文的样例中是如何执行的。大多数新类都处理 CDT 解析过程,可以在 org.bbcdt.dworks.core 插件(特别是在 org.bbcdt.dworks.core.parser 包及其子包中)中找到它们。

CDT 实际上有两个 解析器 —— 一个使用持久文档对象模型(Persisted Document Object Model,PDOM),另一个不使用,记住这一点很重要。这两个解析器对当前的(V3.1)CDT 来说都很重要,但根据 Doug Schaefer 的观点,PDOM 解析器将逐渐取代另一个解析器。我将在本系列的第 4 部分讨论 PDOM 解析器,但由于没有使用 PDOM 的那种解析器更易于理解,所以我会在这里先对其进行探讨。我将特别地讨论从 Document 接收更新到新抽象语法树(Abstract Syntax Tree,AST)的创建这段时间内,在 CDT 中会发生的事情。这一过程可以用以下 4 个部分进行解释:

协调器(Reconciler)及其协调策略解析器如何从 Document 中接收事件构建解析器解析器是如何创建并初始化的解析过程解析器如何分析 WorkingCopy 文本的结构AST解析器的源代码模型以及如何访问该模型

1 2 3 4 5 6  下一页

Tags:构建 基于 CDT

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接