Повысьте проблемы со шкипером

У меня проблемы с бодибилдером.

Мне нужно разобрать файл так:

ROW int
int [int, int]
int [int, int]
...

Я могу разобрать его без проблем (благодаря stackoverflow;), только если я добавлю '_' после первого инт.

На самом деле, я думаю, что шкипер съедает конец строки после первого int, поэтому первая и вторая (на второй строке) выглядят как только одно int. Я нене понимаю, как сохранить eol, но есть места. Я'Мы нашли примеры использования пользовательского парсера, такого какВот а такжеВот.

Я пробовал qi :: blank, пользовательский парсер с одним освещенным правилом (' ') Независимо от того, каким шкипером я пользуюсь, космос и eol всегда есть.

Моя грамматика:

строка:

struct rowType
{
    unsigned int number;
    std::list list;
};

полная проблема хранится в структуре:

struct problemType
{
    unsigned int ROW;
    std::vector rows;
};

анализатор строк:

template
struct row_parser : qi::grammar
{
    row_parser() : row_parser::base_type(start)
    {

        list  = '[' >> -(qi::int_ % ',') >> ']';
        start = qi::int_ >> list;
    }

    qi::rule start;
    qi::rule list;
};

и анализатор проблем:

template
struct problem_parser : qi::grammar
{

    problem_parser() : problem_parser::base_type(start)
    {
        using boost::phoenix::bind;
        using qi::lit;

        start = qi::int_ >> lit('_') >> +(row);

        //BOOST_SPIRIT_DEBUG_NODE(start);
    }

    qi::rule start;
    row_parser row;
};

И я использую это так:

main() {
static const problem_parser p;
...
spirit::qi::phrase_parse(first, last ,
            p,
            qi::space,
            pb);
}

Конечно, qi :: space - это моя проблема, и одним из способов решения этой проблемы было быя не использую шкипер, но длятекст_парсера требует его, а моему парсеру - один.

я застрял с некоторых часов ... я думаю, что этоЧто-то очевидное, что я неправильно понял.

Спасибо за вашу помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос