一个用于格式化/统计文本的可扩展框架
2006-07-20 11:43:59 来源:WEB开发网TextFormator适用于对多种程序设计语言的源代码进行处理(如:C/C++,Java,Pascal,Masm),同时也支持纯文本处理,可以对之进行如下处理:
1、任意形式的格式化输出,例如:生成经过着色的html文本,缩格排版,删除注释行。
2、不同形式的代码统计分析,例如:关键字查找,注释行统计,函数统计。
主要特点
- 代码以Open source方式发布,并采用OO设计思想,力求具有相当的灵活性和可扩展性。
- 基于C++ STL,力求具有相当的可移植性。
总体处理流程
原始文本通过字符流的方式读入内存,按行进行解析。解析后的结果字符流,将作为格式化处理/统计处理的输入流。经过一次或多次格式化之后的字符流将被输出到文件或标准输出设备,而经过统计之后的字符流不做输出,相应输出的是某些统计结果。图示如下:
图一
类图
目前而言,这个框架还不甚复杂。尽管如此,在设计时还是下了一些功夫的,这一点可以从稍后的“详细介绍”部分看到。以下是框架的类图总结。从中可以看到,框架的总体结构采用了一种类似Strategy Pattern的组织方式:
图二
详细介绍
core 部分
ParseHandler
抽象类,所有解析过程中所使用的handler都应派生自该类,它定义了此类handler(s)的基本行为。主要是一个accept方法,功能是将传入其中的文本当前行,从当前位置开始,按指定的方式解析。而具体采用何种方式,则是subclass的事情。若解析成功,则将结果置于一个TokenInfo结构体中,然后指向当前行的下一段未解析字串,并返回true;否则返回false,以告知框架将控制权移交给下一个handler。至于如何编写实际的handler,可以参考extend部分的以下诸类:StringParseHandler,NumberParseHandler,OperatorParseHandler,IdentifierParseHandler,WhitespaceParseHandler,CommentParseHandler
更多精彩
赞助商链接