Разобрать строку, содержащую литерал, с помощью Boost Spirit Qi

Я хотел бы разобрать строку следующим образом:

<stuff I don't care> <literal value> <more stuff I don't care>

с boost::spirit::qi. Предположим, что <literal value>, например. ABC, то я бы хотел, чтобы парсер принимал:

Some text ABC more text

но отвергнуть:

Some text ACB more text

К сожалению,

*char_ >> lit("ABC") >> *char_

не работает из-за жадности ци. Есть ли простой способ написать этот парсер?


person Markus Mayr    schedule 08.03.2014    source источник
comment
*(char_ - lit("ABC")) >> lit("ABC") >> *char_ не работает?   -  person filmor    schedule 09.03.2014
comment
Спасибо. Я думал, что синтаксический анализатор с правой стороны оператора минус должен анализировать подмножество синтаксического анализатора с левой стороны.   -  person Markus Mayr    schedule 09.03.2014
comment
Тогда я сделаю это ответом;). Я просто не был уверен, так как я довольно давно не работал с Boost.Spirit (в частности, до того, как он был назван Qi).   -  person filmor    schedule 09.03.2014


Ответы (1)


Использовать

*(char_ - lit("ABC")) >> lit("ABC") >> *char_;

вместо этого, чтобы предотвратить потребление char_ "ABC".

person filmor    schedule 09.03.2014