我正在寻找一种标记字符串并生成令牌和令牌类型列表的方法。在我浪费我的努力之前,我想知道助推是否已经可以做我想要的。
我想要一个带有签名的函数,基本上是这样的:
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)。