【问题标题】:Tokenize text into type,string pairs将文本标记为类型、字符串对
【发布时间】: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)。

【问题讨论】:

    标签: c++ regex boost tokenize


    【解决方案1】:

    您所描述的场景正是Boost.Spirit.Qi 的域。

    【讨论】:

    • 我去看看。我实际上只是在寻找一个分词器,而不是一个完整的语法分析器。
    • 看起来更像 Spirit.Lex 是我想要的。我会检查一下。
    • @edA-qa mort-ora-y :既然如此,我会用 Spirit.Lex 编写标记器,然后通过 Spirit.Qi 语法公开它。
    • @edA-qa mort-ora-y : 啊,我看到你已经领先我一步了 :-]
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2013-07-28
    • 2016-08-22
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多