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

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


person Tomilov Anatoliy    schedule 11.09.2014    source источник
comment
Я предполагаю, что это знак, что я должен начать смотреть на Spirit X3 :/   -  person sehe    schedule 11.09.2014


Ответы (1)


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

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 для шкипера в отдельной единице перевода.

person Tomilov Anatoliy    schedule 12.09.2014