我想要下面的语法来解析输入,例如
a_end
a_b_end
a_b_c_end
但它只解析a_end
并失败超过一个的任何东西_
。这是语法:
template < typename Iterator >
struct recursive_parser : qi::grammar< Iterator >
{
qi::rule< Iterator > start;
qi::rule< Iterator > end;
recursive_parser() : recursive_parser::base_type( start )
{
using namespace qi;
end = string("_end") | start;
start = +(char_ - '_') >> end;
}
};
规则不是为递归使用而设计的,还是我遗漏了一些更明显的东西?