Когда я использую эту грамматику приема ки от Лекса:
pair %= token(ID_MARKER)
>> ':'
>> atom
>> ','
>> atom
;
в сочетании с этим сопоставлением fusion / tuple для помощи в захвате:
BOOST_FUSION_ADAPT_STRUCT(
Client::pair_rec,
(std::string, m_dummy ) // want to rid of this capture of ID_MARKER
(Client::atom_rec, m_atom_1 )
(Client::atom_rec, m_atom_2 )
)
все отлично работает
Но я хотел бы использовать ID_MARKER
просто для разбора; Я действительно не нуждаюсь или не хочу захватить это.
Поэтому я попытался игнорировать атрибут с помощью qi::lit
:
pair %= qi::lit( token(ID_MARKER) )
>> ':'
>> atom
>> ','
>> atom
;
наряду с удалением m_dummy
из захвата, но я просто получаю стену ошибок шаблона.
Что я должен делать вместо этого, чтобы очистить это?
Без кода для тестирования я не могу быть уверен, но:
pair %= qi::omit[ token(ID_MARKER) ]
>> ':'
>> atom
>> ','
>> atom
;
должно сработать. Вы также можете добавить token_def<lex::omit> marker;
в вашем лексере.
Других решений пока нет …