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

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

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 协调器及其协调策略第 2 部分 描述了 PresentationReconciler 如何通过对编辑文档的改变做出响应而开始样式化文本的过程,同样的,构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析(2),CDT 解析开始于 Reconciler 对象,该对象监听相同类型的事件,

协调器及其协调策略

第 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)。

上一页  1 2 3 4 5 6 7  下一页

Tags:构建 基于 CDT

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