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 つのベクトルに(1,2,3,4,5)
. どうすればそれを行うことができ、私のバージョンがコンパイルされないのはなぜですか?
どうにかしてセパレーター (「セミコロンまたは改行」) を独自のルールとして記述できますか? その戻り値の型は何でしょうか? ある種のnull
価値?