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

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

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 匹配过程的第二步是解析,在这里,构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析(4),解析器检测标记间的结合同其语法中的抽象元素的匹配程度,总的来说,这些终端的节点包含单个的关键字、操作符及变量,通过搜索一个 AST 来寻找函数名或变量名比起对整篇文档进行重解析要简单得多,这远

匹配过程的第二步是解析。在这里,解析器检测标记间的结合同其语法中的抽象元素的匹配程度。总的来说,这远比上述主语-动词-对象的例子复杂得多。例如,如果语句以一个与 “enum”(声明一个枚举)相应的标记作为开始,CDT 解析器会试图将该语句同 enum 语句的抽象模型匹配起来。即,在 ENUM 标记后,它会寻找一个可选的 name,随后在 L_BRACE 与 R_BRACE 标记之间寻找一个 enumerated_list 和一个最终的 enumerated_list。每一个斜体的术语表示引用该语法中的一个抽象元素。

许多解析器,包括 CDT 解析器在内,所完成的任务都不仅仅是检测格式良好性。在解析完输入后,它们将其结构信息以一种适于分析、索引和搜索的格式存储。这种格式通常是一种叫做 AST 的树。例如,如果您将一篇 developerWorks 的文章做了标记并通过一个英语解析器将其发送,结果也许是如图 1 中所示的树结构。


图 1. AST 示例
构建基于 CDT 的编辑器,第 3 部分: 基本的 CDT 解析

正如您所看到的那样,树中的元素都是一般性的在顶部(developerWorks Article ),每一个向下的节点处则较为详细一些。如果不是空间所限,我还将展示底部的节点如何包含句子及最终的特定的单词。对一门编程语言来说,这些终端的节点包含单个的关键字、操作符及变量。通过搜索一个 AST 来寻找函数名或变量名比起对整篇文档进行重解析要简单得多。接下来介绍 CDT 解析器如何生成 AST 以及如何用您自己的代码对其进行遍历。

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

Tags:构建 基于 CDT

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