构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析
2009-12-19 00:00:00 来源:WEB开发网在本系列的 第 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解析器的源代码模型以及如何访问该模型
- ››基于IP地址的vsftp服务器
- ››构建Windows 8风格应用23-App Bar概述及使用规范
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››构建域名服务器(DNS)
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››构建Android平台Google Map应用
- ››基于Windows Azure的云计算应用设计
- ››构建WinForm 通用速选(全选、反选、清空)组件
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
更多精彩
赞助商链接