Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards



Boost.Phoenix makes it easier to attach semantic actions. You just inline your lambda expressions:


Spirit.Lex provides some Boost.Phoenix placeholders to access important information from the Context that are otherwise difficult to extract.

Spirit.Lex specific Phoenix placeholders

_start, _end

Iterators pointing to the begin and the end of the matched input sequence.


Assign lex::pass_flags::pass_fail to _pass to force the current match to fail.


The token id of the matched token.


The token value of the matched token.


The lexer state the token has been matched in.


Iterator referring to the current end of the input sequence.

[Tip] Tip

All of the placeholders in the list above (except _eoi) can be changed from the inside of the semantic action allowing to modify the lexer behavior. They are defined in the namespace boost::spirit::lex.

For more information see Lexer Semantic Actions.