...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
transform_attribute
now has to implement a third function: void
fail(Exposed&)
,
which normally will do nothing. This function will be called whenever
the right hand side of the rule
(or the embedded parser of attr_cast
)
fail parsing. This change affects Qi only. See the
description of the traits::transform_attribute
for more
details.
BOOST_FUSION_ADAPT_CLASS
and BOOST_FUSION_ADAPT_CLASS_NAMED
.
This support requires to include the new header file: #include
<boost/spirit/inlcude/support_adapt_class_attributes.hpp>
.
karma::ostream_iterator
as a counterpart to
qi::istream_iterator
(see new header file:
#include <boost/spirit/home/support/iterators/ostream_iterator.hpp>
).
qi::hold
allowing to make sure the embedded
parser does not touch the passed attribute in case it fails parsing.
qi::no_skip
directive, which is
equivalent to qi::
lexeme
,
except that it does not pre-skip.
karma::no_delimit
directive, which
is equivalent to karma::
verbatim
, except that it does
not perform a post-delimiting step.
multi_pass
iterator framework (named buffering_input_iterator
)
allowing to wrap underlying input iterators which do not store the last
character read from the input (such as std::istream_iterator
).
This is now used as the default input policy.
karma::buffer[karma::buffer[...]]
don't result in performing double
buffering anymore. The same is true if an alternative is wrapped into
a karma::buffer[]
directive (as for instance: buffer[a] | b
).
multi_pass
iterator is now usable with underlying input iterators which do not store
the last character read from the input (such as std::istream_iterator
).
Thanks to Larry Evans and Peter Schueller for independently reporting
this problem.
karma::omit[]
now does not accept an arbitrary attribute type anymore.
karma::omit[]
now disable output altogether instead
of intercepting the output into a buffer which got discarded as before.
karma::rule
to properly handles optional attributes.
lexer<>::init_dfa()
now takes a single boolean parameter (which defaults to false
) allowing to force minimization
of the generated lexer tables.