构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析
2009-12-19 00:00:00 来源:WEB开发网协调器及其协调策略
第 2 部分 描述了 PresentationReconciler 如何通过对编辑文档的改变做出响应而开始样式化文本的过程。同样的,CDT 解析开始于 Reconciler 对象,该对象监听相同类型的事件。不要将这两个类弄混。PresentationReconciler 类根据每次击键更新文本的外观,而 Reconciler 类运行一个守护线程,不必将用户界面(UI)挂起就能解析该文档。这就是在使用 Eclipse 时为什么语法着色比错误检测运行起来要快得多的原因。
当其监听程序检测到一个新 Document 时,Reconciler 的线程开始。用户更新 Document 后,该线程告知它的 CReconcilingStrategy 开始协调。CDT Reconciler 是一个 MonoReconciler,这意味着它只能有一个策略。同样,Reconciler 也不是 增量的,这意味着一发生改变,该策略就会运行于整个 Document 之上。
CReconcilingStrategy 访问 WorkingCopy,并让它在 WorkingCopyInfo 对象(像 CDT 模型中其他信息对象一样运行)中组织其子对象。但 WorkingCopy 并没有任何子对象,—— 它只是一个未被保存且未被结构化的文本的缓冲区。WorkingCopy 调用 parse() 方法以清理这种混乱。这个调用并没有启动解析,但它开始了创建并初始化解析器的过程。
创建解析器
WorkingCopy 通过构建一个用于管理解析过程的 CModelBuilder 对象来开始解析器的创建。此对象根据对象的性质确定要解析的语言并从 WorkingCopy 的文本中构建一个字符缓冲区。它还通过调用 ParserFactory.createScanner() 方法创建一系列对象(IProblemRequestor、IScannerInfoProvider、CodeReader、SourceElementRequestor 和 ParserLogService)用于构造 Scanner2 对象。此方法分析缓冲区中的字符并为解析器提供标记(token)。
- ››基于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编程设计的创建及应用
更多精彩
赞助商链接