2
我嘗試了一些分層數據解析成的boost :: utree結構,但它似乎沒有爲expexted工作。 這是我做的:nested utree with boost :: spirit :: qi?
qi::rule<const char*, utree(), chars::space_type> inner, outer;
outer %= '<' > qi::int_ > *inner > '>';
inner %= outer | qi::as_string[qi::lexeme[+(chars::alnum - '>')]];
const char txt[] = "<21 hello <34 some> strange <12 world>>";
const char* txtIt = txt;
try {
if (qi::phrase_parse(txtIt, txt + strlen(txt), outer, chars::space, data))
{
std::cout << "Numbers parsed" << std::endl;
HGrammar::traverseData()(data);
}
//return;
data.clear();
}catch(qi::expectation_failure<...>(...)) ...
其中traverseData()僅僅是運營商< <(COUT,utree)的調用。 這就是我得到:
(21「你好」 34「一些」,「奇怪」 12「世界」)
但我想utree,以反映該字符串的嵌套性質feeded到phrase_parse()中。像:
(21 「你好」(34 「某些」) 「奇怪」(12 「世界」))
如何獲得這種輸出的?
PS使用升壓1.49.0使用Visual Studio 2010