我想将整数序列解析为std::vector<int>
, 使用boost::spirit
. 整数可以用分号或换行符分隔。
但是这个语法不能编译:
typedef std::vector<int> IntVec;
template <typename Iterator, typename Skipper>
struct MyGrammar : qi::grammar<Iterator, IntVec(), Skipper> {
MyGrammar() : MyGrammar::base_type(start) {
start = +(qi::int_
>> (";" | qi::no_skip(qi::eol)));
}
qi::rule<Iterator, IntVec(), Skipper> start;
};
为了清楚起见,我想解析以下输入,例如,
1; 2; 3
4 ; 5
成一个向量(1,2,3,4,5)
。我该怎么做,为什么我的版本不能编译?
我可以以某种方式将分隔符(“分号或换行符”)写成自己的规则吗?它的返回类型是什么?某种null
价值?