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文件列表。可改善下做代码依赖关系的定性分析。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License