Подтвердить что ты не робот

Boost:: дух, составляющий грамматики из грамматик

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

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

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

4b9b3361

Ответ 1

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

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;
    ...
}