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)。
我帶你去看看。實際上我只是在尋找一個分詞器而不是一個完整的語法分析器。 – 2011-04-25 17:52:23
看起來更像Spirit.Lex是我想要的。我會檢查一下。 – 2011-04-25 17:54:09
@ edA-qa mort-ora-y:既然如此,我會用Spirit.Lex編寫tokenizer,然後通過Spirit.Qi語法將其暴露。 – ildjarn 2011-04-25 17:54:59