文本处理库 tpl-1.0.00 正式发布!

TPL: Text Processing Library (tpl-1.0.00)

许式伟 2008-6-24

文本处理 (Text Processing)

文本处理其实就是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-1.0.00

TPL的核心目前主要包含:

  • tpl/RegExp.h - 正则匹配文法
  • tpl/Emulator.h - 一个通用虚拟机 (从根本上来讲,虚拟机和文本处理并无相关,但是一般虚拟机用于实现一门语言,而实现一门语言必然需要进行文本处理)

TPL的扩展组件,包括:

  • tpl/c/Lex.h - C/C++词法
  • tpl/boost/Lambda.h - TPL与Boost Lambda的粘合剂
  • tpl/ext/Calculator.h - 计算器辅助模块(计算器定义:一门简单语言,它不能定义由用户来定义函数/过程,但可以有变量)

TPL的样例

See http://winx.googlecode.com/svn/trunk/tpl/examples/.

目前 tpl/RegExp.h (正则库)相关的样例有:

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

目前 tpl/Emulator.h (虚拟机)相关的样例有:

  • emulator: 演示我们的虚拟机汇编指令。
  • variant: 演示虚拟机的类型系统。

TPL工程主页及下载地址

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭