2011-04-25 67 views
1

我正在尋找一種方式來標記一個字符串,併產生令牌和令牌類型的列表。在我浪費我的努力之前,我想知道boost是否已經能夠做到我想要的。記號化文本類型,字符串對

我想要一個簽名的功能基本上是這樣的:

typedef pair<size_t,string> token; 
void tokenize(string input, vector<regex> match, vector<token> & output); 

input是文本輸入進行標記化。 match是表示令牌的所有正則表達式的列表。 output將成爲所有匹配的令牌與來自match矢量匹配令牌的索引一起列表。

我知道如何使用sregex_token_iterator但我想以某種方式避免對所有的令牌做重複的匹配。也就是說,我可以生成一個令牌列表,但它們缺少類型信息,我希望獲取該類型信息而不重新匹配每個令牌。

對於工具鏈和集成簡單起見,我寧願堅持使用升壓regex庫,而不是使用一個單獨的工具(如ANTLR)。

回答

1

您描述的場景正好是的域名爲BoostSpiritQi

+0

我帶你去看看。實際上我只是在尋找一個分詞器而不是一個完整的語法分析器。 – 2011-04-25 17:52:23

+0

看起來更像Spirit.Lex是我想要的。我會檢查一下。 – 2011-04-25 17:54:09

+0

@ edA-qa mort-ora-y:既然如此,我會用Spirit.Lex編寫tokenizer,然後通過Spirit.Qi語法將其暴露。 – ildjarn 2011-04-25 17:54:59