【发布时间】:2012-06-05 09:17:05
【问题描述】:
我尝试将一些分层数据解析为 boost::utree 结构,但它似乎无法正常工作。 这就是我所做的:
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() 只是对 operator
(21“你好”34“一些”“奇怪”12“世界”)
但我希望 utree 反映输入到phrase_parse() 中的字符串的嵌套性质。喜欢:
(21“你好”(34“一些”)“奇怪”(12“世界”))
我如何获得这种输出?
PS 在 Visual Studio 2010 中使用 boost 1.49.0
【问题讨论】:
标签: c++ visual-c++ boost boost-spirit-qi