0
我一直在推行的boost ::精神到項目中,我的挑戰之一是直接解析成類型的容器:提供了默認值提升爲解析器屬性::精神
map<string, string>
我幾乎在那裏。我遇到的問題是自動分配std :: pair的鍵值。也就是說,我輸入字符串中的每個標記都有一個預定義的關鍵字,並且我希望在解析標記時自動將其插入對中。
我想我接近,但也許不是......這裏的(截)語法:
command =
string("select")
;
key = string("command") | qi::attr(std::string("command"));
command_pair = key >> ' ' >> command;
start =
command_pair >> *command_pair
;
qi::rule<Iterator, std::string()> command;
qi::rule<Iterator, std::pair<std::string, std::string>()> command_pair;
qi::rule<Iterator,parserMap()> start;
最終的結果是在命令行上鍵入:
select
和解析器插入「命令」作爲鍵,就像我輸入的那樣:
command select
因此,訪問map [「command」]元素將返回一個「選擇」的值。
問題是,我無法獲取qi :: attr()來完成這項工作。也就是說,如果我輸入「command select」,而不是「select」,它會起作用。