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

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

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 在 CDT 之外使用解析器创建解析器的过程也许交代清楚了,但还有重要的一点需要注意,构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析(3),解析器与 CDT 模型间惟一的关联就是 WorkingCopy 字符的缓冲区,因而,它会返回一个代表关键字 const 的单个标记对象,解析

在 CDT 之外使用解析器

创建解析器的过程也许交代清楚了,但还有重要的一点需要注意。解析器与 CDT 模型间惟一的关联就是 WorkingCopy 字符的缓冲区。因而,您不需要 CDT 模型中所有的包就能访问 CDT 的解析器。但由于基于文档对象模型(Document Object Model,DOM)的解析器同 CDT 模型相交互,因此您不能仅将 org.eclipse.cdt.parser 插件添加到您的项目中,而需要将 Parser 及其依赖的类提取出来,随后调用 ParserFactory.createScanner() 和 ParserFactory.createParser() 方法。

扫描程序创建好后,CModelBuilder 通过调用 ParserFactory.createParser() 方法构造 Parser。此方法让 ProblemRequestor 在错误发生时开始更新编辑器的注释。然后,它调用 Parser 的 parse() 方法。

好戏开始了。但在深入探讨前,先来快速介绍一下解析理论。

插曲:解析的简短介绍

以输入语句 “Matt likes pizza”为例,您也许明白单个的单词,但如果不熟悉主语-动词-对象这一句子结构,就不会明白它的意思。只有当输入的元素和抽象的结构( “Matt”= 主语,“likes”= 动词,“pizza”= 对象)匹配起来,这个句子才有意义。当然,还有许多其他的句子结构和其他的语言。表明在一门特定的语言中如何构建合适句子的主体规则就是该语言的语法 。

在程序语言中,语法包含了一个抽象的模型,所有格式良好的代码单元(即源文件)都必须匹配这个模型。执行此匹配的第一步叫做扫描 或词法分析。扫描程序读取缓冲中的单个字符并返回解析器能理解的记号(称做标记 ) —— 如关键字、操作符及针对特定语言的标点符号。例如,当 C 扫描程序读取到 c、o、n、s、 和 t 时,它会返回一个代表关键字 const 的单个标记对象。解析器不关心空白或注释,因而扫描程序会忽略了这些。

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

Tags:构建 基于 CDT

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