Boost:: дух, составляющий грамматики из грамматик
Я понял, как использовать дух - то есть, я написал умеренно сложную грамматику. Я всегда придерживаюсь подхода к разработке программы - одной подсистемы одновременно. Я написал структуры данных для сложной модели, которая имеет 4 типа на самом высоком уровне.
Я хотел бы использовать грамматику составленную из подхода к правилам, чтобы анализировать типы верхнего уровня по одному типу за раз, т.е. хочу написать 4 грамматики с одной грамматикой верхнего уровня. Если это возможно (что я начинаю сомневаться), кто-то может опубликовать фрагмент или ссылку на проект, который делает это.
Одна грамматика верхнего уровня с правилами более 50+ (возможно, намного больше) (для правильной обработки ошибок) не похожа на забаву (код TMP является волатильным/медленным для компиляции и предоставляет бесполезные сообщения об ошибках).
Ответы
Ответ 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;
...
}