boost::spirit составление грамматик из грамматик

Я понял, как использовать дух, т. е. написал умеренно сложную грамматику. Я всегда придерживаюсь подхода расширения программы — по одной подсистеме за раз. Я написал структуры данных для сложной модели, которая имеет 4 типа на самом высоком уровне.

Я хотел бы использовать грамматику, составленную из правил для синтаксического анализа типов верхнего уровня по одному типу за раз — т. е. я хочу написать 4 грамматики с одной грамматикой верхнего уровня. Если это возможно (в чем я начинаю сомневаться), может кто-нибудь опубликовать фрагмент или ссылку на проект, который делает это.

Одна грамматика верхнего уровня с более чем 50 (возможно, намного больше) правилами (для правильной обработки ошибок) не звучит весело (код TMP нестабилен/медленно компилируется и выдает бесполезные сообщения об ошибках).


person Hassan Syed    schedule 01.02.2010    source источник


Ответы (1)


Упрощенная из реальной программы, Qi должна работать так же, как Karma.

template<class Iter>
struct subgrammar_1
: karma::grammar<Iter, ...>
{
    ...
}

template<class Iter>
struct top_level_grammar
: karma::grammar<Iter, ...>
{
    top_level_grammar() : top_level_grammar::base_type(start)
    {
        start %= r1 | r2;
    }
    karma::rule<Iter, ...> r1;
    subgrammar_1<Iter> r2;
    ...
}
person just somebody    schedule 01.02.2010
comment
(+1) Да, это именно то, что я искал :P, я попробую, когда у меня будет время. - person Hassan Syed; 01.02.2010