TPL: Text Processing Library
文本处理
文本处理其实就是IO。故而文本处理通常可分为两块:一块是I,一块是O。I是指把文本Parse为内存数据结构(DOM),O则相反。
联想:XMLParser是I(将XML文本变为DOM),而XSLT是O(将DOM变为文本)。
I典型的模块有:
- xxxParser(如HTMLParser,XMLParser,JsonParser, etc)
- RegExp(正则表达式,非特定目的的Parser)
O典型的模块有:
- XSLT
- CTemplate (google)
- Format: printf, etc.
问题域: TPL关注什么?
TPL顾名思义,是文本处理库(或者你也可以理解为文本处理语言Text Processing Language,因为尽管它依附于C++语言,但是实际上你使用它时并不按照C++的思维考虑问题)。
TPL目前主要关注文本处理中I的问题。即将文本Parse为内存数据结构(DOM)。
TPL可以做什么?
TPL有很强的适应性。可以做简单的如进行文本分割,复杂的可以做一个语言的编译器。TPL的典型使用场景:
- 字符串分割
- 信息抽取(Information Retrieval)
- 命令行分析(Command Line Analyzer)
- 编译器(Compiler)
- …
TPL的样例
See http://winx.googlecode.com/svn/trunk/tpl/examples/.
目前主要有:
simplest: 最简单TPL样例,类似Hello, world!
grammar: 还是简单样例,稍微加了点复杂性。
urlparams: 用TPL分析url参数。即prop1=val1&prop2=val2&prop3=val3…
calculator: 用TPL实现一个计算器。支持+-*/、()、sin/cos/pow/max
removecomments: 删除C++代码中的注释。
removecomments2: 还是C++代码中的注释。但是使用了tpl/c/Lex.h扩展模块。
includefiles: 提取C++源文件中的include文件列表。可改善下做代码依赖关系的定性分析。
page_revision: 0, last_edited: 1213427704|%e %b %Y, %H:%M %Z (%O ago)