Определение шкипера в отдельном блоке перевода с помощью Boost.Spirit X3

Как определить грамматику шкипера в отдельной единице перевода?
Какой тип выходного атрибута должен быть? Или я могу просто указать boost::spirit::x3::unused_type как Attribute параметр шаблона для boost::spirit::x3::rule шаблон класса для грамматики шкипера? Я думаю, что грамматика шкипера должна только внутренне перемещать итератор ввода вперед через пробелы, новые строки, комментарии и т. Д. Это лучше с точки зрения производительности и распределения / освобождения памяти. Как определить тип контекста для такой грамматики, который я должен предоставить BOOST_SPIRIT_INSTANTIATE макрос?

3

Решение

Наконец я нашел решение.

using skipper_parser = x3::rule< class skipper_class, x3::unused_type const >; такое определение типа анализатора шкипера (constВажность возвращаемого типа — важная вещь).

BOOST_SPIRIT_INSTANTIATE(skipper_parser, iterator_type, x3::unused_type) это экземпляр parse_rule Функция шаблона для шкипера была в отдельном переводческом блоке.

3

Другие решения