Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52677 - trunk/libs/spirit/doc
From: hartmut.kaiser_at_[hidden]
Date: 2009-04-30 12:06:52


Author: hkaiser
Date: 2009-04-30 12:06:52 EDT (Thu, 30 Apr 2009)
New Revision: 52677
URL: http://svn.boost.org/trac/boost/changeset/52677

Log:
Spirit: Updated what's new section to cover version 2.1
Text files modified:
   trunk/libs/spirit/doc/spirit2.qbk | 4
   trunk/libs/spirit/doc/what_s_new.qbk | 93 +++++++++++++++++++++++++++++++++++++++
   2 files changed, 94 insertions(+), 3 deletions(-)

Modified: trunk/libs/spirit/doc/spirit2.qbk
==============================================================================
--- trunk/libs/spirit/doc/spirit2.qbk (original)
+++ trunk/libs/spirit/doc/spirit2.qbk 2009-04-30 12:06:52 EDT (Thu, 30 Apr 2009)
@@ -29,8 +29,6 @@
 [def __phoenix2__ [@../../phoenix/doc/html/index.html Phoenix2]]
 [def __fusion__ [@http://spirit.sourceforge.net/dl_more/fusion_v2/libs/fusion/doc/html/index.html Fusion]]
 [def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]]
-[def __boost_tuples__ [@http://www.boost.org/libs/tuple/index.html Boost.Tuples]]
-[def __boost_proto__ -Boost.Proto-]
 [def __boost__ [@http://www.boost.org/ Boost]]
 [def __boost_tools__ [@http://www.boost.org/tools/index.html Boost Tools]]
 [def __spirit_list__ [@https://lists.sourceforge.net/lists/listinfo/spirit-general Spirit Mailing List]]
@@ -54,6 +52,8 @@
 [def __boost_iterator_range__ [@http://www.boost.org/libs/range/doc/utility_class.html#iter_range `boost::iterator_range<>`]]
 [def __boost_bind__ [@http://www.boost.org/libs/bind/index.html Boost.Bind]]
 [def __boost_lambda__ [@http://www.boost.org/libs/lambda/index.html Boost.Lambda]]
+[def __boost_tuples__ [@http://www.boost.org/libs/tuple/index.html Boost.Tuples]]
+[def __boost_proto__ [@http://www.boost.org/doc/libs/1_38_0/doc/html/proto.html Boost.Proto]]
 
 
 [def __classic__ /Spirit.Classic/]

Modified: trunk/libs/spirit/doc/what_s_new.qbk
==============================================================================
--- trunk/libs/spirit/doc/what_s_new.qbk (original)
+++ trunk/libs/spirit/doc/what_s_new.qbk 2009-04-30 12:06:52 EDT (Thu, 30 Apr 2009)
@@ -1,5 +1,5 @@
 [/==============================================================================
- Copyright (C) 2001-2008 Joel de Guzman
+ Copyright (C) 2001-2009 Joel de Guzman
     Copyright (C) 2001-2009 Hartmut Kaiser
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -41,5 +41,96 @@
 deprecated include files are being used. This ensures full backwards
 compatibility for existing applications.
 
+[heading Spirit V2.1]
+
+[heading What's changed in __qi__ and __karma__ from V2.0 to 2.x]
+
+* __spirit__ is now based on the newest version of __boost_proto__
+* qi::phrase_parse, qi::phrase_format now post-skip by default.
+* 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 the last
+ parameter.
+* Added new overloads of those functions allowing to explicitely specify the
+ post-skipping and pre-delimiting behavior.
+* 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 its 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_.
+* qi: skip[] now re-enables outer skipper if used inside lexeme[]
+* karma: maxwidth[] directive
+* karma: delimit[] now re-enables outer delimiter if used inside verbatim[]
+* karma: added and-predicate (operator&()) and not-predicate (operator!())
+
+
+[heading What's changed in __lex__ from V2.0 to 2.x]
+
+Here is a list of changes in __lex__ since version 2.0. __lex__ 2.x is a
+complete rewrite of the original __lex__ distributed. As all parts of the
+__spirit__ library it is usable either standalone or in conjunction with the
+other parts. __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:
+
+ template <typename Lexer>
+ struct example_tokens : lex::lexer<Lexer>
+ {
+ example_lexer()
+ {
+ // your token definitions here
+ this->self = ...
+ }
+ };
+* The new lexer class now can be directly used, their is no need anymore to
+ wrap it using the `make_lexer()` template as before. Therefor 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 a possibly arbitrary number of attribute arguments as its last
+ parameters (well, the number of attributes is limited by the macro
+ `SPIRIT_ARGUMENTS_LIMIT`, which defaults to `PHOENIX_LIMIT`).
+* The `lex::lexertl_lexer`, `lex::lexertl_token_set`, and `lex::lexertl_token`
+ classes has been moved to the `lex::lexertl` namespace and the names have been
+ changed to `lex::lexertl::lexer`, `lex::lexertl::token_set`, `lex::lexertl::token`
+ (the same applies to the `lex::lexert_actor_lexer`, and the `static_lexertl_*`
+ family of types).
+* The __lexer__ 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:
+
+ match_flags::match_default, // no flags
+ match_flags::match_not_dot_newline, // the regex '.' doesn't match newlines
+ match_flags::match_icase // all matching operations are case insensitive
+
+ If no parameter is passed to the constructor, `match_flags::match_default` is
+ used, i.e. the '.' matches newlines and matching is case sensitive.
+* Now the `char_()` and `string()` placeholders can be used for token
+ definitions as a replacement for `token_def<>(...)`, although it is still
+ possible to use the latter one.
 
 [endsect]


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk