构建基于 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 示例
正如您所看到的那样,树中的元素都是一般性的在顶部(developerWorks Article ),每一个向下的节点处则较为详细一些。如果不是空间所限,我还将展示底部的节点如何包含句子及最终的特定的单词。对一门编程语言来说,这些终端的节点包含单个的关键字、操作符及变量。通过搜索一个 AST 来寻找函数名或变量名比起对整篇文档进行重解析要简单得多。接下来介绍 CDT 解析器如何生成 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编程设计的创建及应用
更多精彩
赞助商链接