【发布时间】:2011-04-25 13:52:40
【问题描述】:
我正在寻找一种方法来标记字符串并生成标记和标记类型的列表。在我浪费精力之前,我想知道 boost 是否已经可以做我想做的事了。
我想要一个签名基本上像这样的函数:
typedef pair<size_t,string> token;
void tokenize( string input, vector<regex> match, vector<token> & output );
input 是要标记化的文本输入。 match 是表示标记的所有正则表达式的列表。 output 将成为所有匹配标记的列表以及来自match 向量的匹配标记的索引。
我知道如何使用sregex_token_iterator,但我想以某种方式避免对所有令牌进行重复匹配。也就是说,我可以生成一个标记列表,但它们缺少类型信息,我想在不重新匹配每个标记的情况下获取该类型信息。
为了工具链和集成的简单性,我更愿意坚持使用 boost regex 库,而不是使用单独的工具(如 ANTLR)。
【问题讨论】: