karma::generate_delimited and karma::format_delimited now don't do pre-
delimiting by default.

Changed parameter sequence of qi::phrase_parse,
qi::phrase_match, karma::generate_delimited,
and match_delimited.
The attribute is now always the last parameter.

Added new overloads of those functions allowing to explicitly specify
the post-skipping and pre-delimiting behavior.

Added multi attribute API functions

Removed grammar_def<>

Removed functions make_parser() and make_generator()

Removed qi::none and karma::none

Sequences and lists now accept a standard container as their attribute

The string placeholder terminal now can take other strings as its parameter
(i.e. std::string)

All terminals taking literals now accept a (lazy) function object as
well

All placeholders for terminals and directives (such as int_, double_,
verbatim, etc.) were
previously defined in the namespace boost::spirit
only. Now these are additionally imported into the namespaces spirit::qi, spirit::karma,
and spirit::lex (if they are supported by the corresponding
sub-library).

The terminal placeholders char_
and string are not defined
in the namespace boost::spirit
anymore as they have been moved to the character set namespaces, allowing
to do proper character set handling based on the used namespace (as
spirit::ascii, etc.)

The uint, ushort, ulong,
and byte terminal placeholders
have been renamed to uint_,
ushort_, ulong_, and byte_.

Added karma::omit[]
allowing to consume the attribute of subject generator without emitting
any output (see omit).

Added karma::buffer[]
allowing to avoid unwanted output to be generated in case of a generator
failing in the middle of a sequence (see buffer).

karma::delimit[]
now re-enables outer delimiter if used inside verbatim[]

Karma: added and-predicate (operator&()) and not-predicate (operator!())
Both now always consume an attribute.

Karma: changed semantics of char_(), string(), int_() et.al., and double_() et.al.: all of these generators now
always expose an attribute. If they do not have an associated attribute,
they generate their immediate literal. If they have an associated attribute,
the generators first test if the attribute value is equal to the immediate
literal. They fail and do not generate anything if those are not equal.
Otherwise they generate their immediate literal. For more information
see for instance int_.

karma::lit()
can now be used to generate integer and floating point numbers

qi::rule and karma::rule
now can be directly initialized using their copy constructor. I.e. this
works now: qi::rule<...>r=...someparser...;.

Added qi::attr()
exposing its immediate parameter as its attribute.

Added boolean parsers and generators (bool_,
true_, false_).

Added attr_cast<>
enabling in place attribute type conversion in Qi and Karma grammars.

Almost all Karma generators now accept optional<> attributes and will fail generating
if this is not initialized.

Qi and Karma rules now automatically detect whether to apply auto-rule
semantics or not (no need for using operator%=() anymore, even if it's still existing).
Auto-rule semantics are applied if the right hand side has no semantic
actions attached to any of the elements. This works for rule initialization
and assignment.

All char_ parsers now always expose an attribute. Earlier char_(...)
didn't expose an attribute while char_
did. If you need a literal parser not exposing any attribute use lit(...)
instead.

The qi::int_spec, qi::real_spec, karma::int_spec, and karma real_spec
types do not exist anymore. These have been replaced with qi::int_parser,
qi::real_parser, karma::int_generator, and karma::real_generator.

Here is a list of changes in Spirit.Lex since version
2.0. Spirit.Lex 2.1 is a complete rewrite of the Spirit.Lex
distributed with Boost V1.37. As with all code portions of the Spirit
library, Spirit.Lex is usable as stand alone piece.
Spirit.Lex now uses the infrastructure provided by
Spirit version 2.1.

The lex::lexer_def class has been renamed to lex::lexer, while the original
class lex::lexer does not exist anymore. This simplifies the creation
of lexers.

The lex::lexer class does not have the function def(Self&self) anymore, token definitions can be added
to the lexer at any time, usually in the constructor of the user defined
lexer class:

The new lexer class can now be used directly. The function make_lexer()
has been removed.

The lex::tokenize_and_parse()
and lex::tokenize_and_phrase_parse()
functions have been changed to match the parameter sequence as implemented
by the qi::parse()
and qi::phrase_parse()
functions. Both take an arbitrary number of attribute arguments as the
last parameters. This argument list is limited by the macro SPIRIT_ARGUMENTS_LIMIT.

The lex::lexertl_lexer, and lex::lexertl_token
classes have been moved to the lex::lexertl
namespace and the names have been changed to lex::lexertl::lexer,
lex::lexertl::token. This also applies to the lex::lexert_actor_lexer, and the static_lexertl_*
family of types.

The class lex::lexertl_token_set has been removed.
This functionality is now available from the lexer class.

The Spirit.Lex library has been updated to use the
newest version of Ben Hansons Lexertl
lexer construction library (Boost review pending).

The lex::lexer<Lexer>
template constructor now takes an optional parameter specifying the
match_flags to be used
for table generation. Currently, there are the following flags available: