Boost.PhoenixУпрощает прикрепление семантических действий. Вы просто вставляете свои лямбда-выражения:
l[phoenix-lambda-expression]
Spirit.LexПриведены некоторыеBoost.Phoenixдержатели для доступа к важной информации из<Context>, которые в противном случае трудно извлечь.
Spirit.Lex specific Phoenix placeholders
_start,_end
Итераторы указывают на начало и конец согласованной входной последовательности.
_pass
<lex::pass_flags::pass_fail>—<_pass>, чтобы заставить текущий матч провалиться.
_tokenid
Токен id соответствующего токена.
_val
Значение токена соответствующего токена.
_state
Состояние лексера, в котором был сопоставлен токен.
_eoi
Итератор относится к текущему концу входной последовательности.
Tip
Все заполнители в списке выше (кроме<_eoi>) могут быть изменены изнутри семантического действия, позволяющего модифицировать поведение лексера. Они определены в пространстве имен<boost::spirit::lex>.
Статья Phoenix раздела Spirit 2.5.2 Quick Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.