Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-04-21 01:40:02


Author: eric_niebler
Date: 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
New Revision: 44677
URL: http://svn.boost.org/trac/boost/changeset/44677

Log:
don't double-deref args to make_expr, nuke trailing spaces
Text files modified:
   branches/proto/v4/boost/proto/expr.hpp | 17 +++++++++++
   branches/proto/v4/boost/proto/make_expr.hpp | 8 +----
   branches/proto/v4/boost/proto/proto_fwd.hpp | 1
   branches/proto/v4/boost/xpressive/detail/core/matcher/action_matcher.hpp | 2
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp | 6 ++--
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_independent.hpp | 10 +++---
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_matcher.hpp | 2
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_modifier.hpp | 4 +-
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_quantifier.hpp | 12 ++++----
   branches/proto/v4/boost/xpressive/detail/static/width_of.hpp | 6 ++--
   branches/proto/v4/boost/xpressive/regex_primitives.hpp | 2
   branches/proto/v4/libs/proto/test/examples.cpp | 2
   branches/proto/v4/libs/proto/test/make_expr.cpp | 2
   branches/proto/v4/libs/proto/test/matches.cpp | 2
   branches/proto/v4/libs/proto/test/toy_spirit.cpp | 2
   branches/proto/v4/libs/xpressive/doc/acknowledgements.qbk | 6 ++--
   branches/proto/v4/libs/xpressive/doc/actions.qbk | 60 ++++++++++++++++++++--------------------
   branches/proto/v4/libs/xpressive/doc/dynamic_regexes.qbk | 2
   branches/proto/v4/libs/xpressive/doc/history.qbk | 2
   branches/proto/v4/libs/xpressive/doc/installation.qbk | 2
   branches/proto/v4/libs/xpressive/doc/introduction.qbk | 2
   branches/proto/v4/libs/xpressive/doc/matching.qbk | 8 ++--
   branches/proto/v4/libs/xpressive/doc/nyi.qbk | 2
   branches/proto/v4/libs/xpressive/doc/substitutions.qbk | 2
   branches/proto/v4/libs/xpressive/doc/symbols.qbk | 4 +-
   25 files changed, 91 insertions(+), 77 deletions(-)

Modified: branches/proto/v4/boost/proto/expr.hpp
==============================================================================
--- branches/proto/v4/boost/proto/expr.hpp (original)
+++ branches/proto/v4/boost/proto/expr.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -106,6 +106,23 @@
 
         #undef BOOST_PROTO_CHILD
         #undef BOOST_PROTO_VOID
+
+ /// \brief Lets you inherit the interface of an expression
+ /// while hiding from Proto the fact that the type is a Proto
+ /// expression.
+ template<typename Expr>
+ struct unexpr
+ : Expr
+ {
+ BOOST_PROTO_UNEXPR()
+
+ explicit unexpr(Expr const &expr)
+ : Expr(expr)
+ {}
+
+ using Expr::operator =;
+ };
+
     }}
 
     #if defined(_MSC_VER) && (_MSC_VER >= 1020)

Modified: branches/proto/v4/boost/proto/make_expr.hpp
==============================================================================
--- branches/proto/v4/boost/proto/make_expr.hpp (original)
+++ branches/proto/v4/boost/proto/make_expr.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -376,16 +376,12 @@
             struct protoify_<T &, Domain>
             {
                 typedef
- typename boost::unwrap_reference<T>::type
- unref_type;
-
- typedef
- typename proto::result_of::as_child<unref_type, Domain>::type
+ typename proto::result_of::as_child<T, Domain>::type
                 type;
 
                 static type call(T &t)
                 {
- return functional::as_child<Domain>()(static_cast<unref_type &>(t));
+ return functional::as_child<Domain>()(t);
                 }
             };
 

Modified: branches/proto/v4/boost/proto/proto_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/proto/proto_fwd.hpp (original)
+++ branches/proto/v4/boost/proto/proto_fwd.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -695,6 +695,7 @@
     template<typename T, typename Void = void>
     struct is_transform;
 
+ #define BOOST_PROTO_UNEXPR() typedef int proto_is_expr_;
     #define BOOST_PROTO_CALLABLE() typedef void proto_is_callable_;
     #define BOOST_PROTO_TRANSFORM() typedef void proto_is_transform_;
 

Modified: branches/proto/v4/boost/xpressive/detail/core/matcher/action_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/core/matcher/action_matcher.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/core/matcher/action_matcher.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -351,7 +351,7 @@
             typedef
                 typename expr_type::proto_child0::matcher_type::value_type::second_type
             attr_type;
-
+
             typedef
                 typename proto::terminal<opt<attr_type> >::type
             result_type;

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -173,7 +173,7 @@
                   , typename data_type::icase_type
>
             result_type;
-
+
             result_type operator ()(
                 typename impl::expr_param expr
               , typename impl::state_param
@@ -202,9 +202,9 @@
                     typename MaxAttr::template impl<Expr, mpl::int_<0>, int>::result_type
>
             begin_type;
-
+
             typedef typename impl::expr expr_type;
-
+
             typedef
                 typename shift_right<
                     typename terminal<begin_type>::type

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_independent.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_independent.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_independent.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -102,7 +102,7 @@
         struct impl : proto::transform_impl<Expr, State, Data>
         {
             typedef typename proto::result_of::child<Expr>::type arg_type;
-
+
             typedef
                 typename IndependentEndXpression::impl<arg_type, int, int>::result_type
             end_xpr_type;
@@ -110,7 +110,7 @@
             typedef
                 typename Grammar::template impl<arg_type, end_xpr_type, Data>::result_type
             xpr_type;
-
+
             typedef
                 detail::lookahead_matcher<xpr_type>
             result_type;
@@ -141,7 +141,7 @@
         struct impl : proto::transform_impl<Expr, State, Data>
         {
             typedef typename proto::result_of::child<Expr>::type arg_type;
-
+
             typedef
                 typename IndependentEndXpression::impl<arg_type, int, int>::result_type
             end_xpr_type;
@@ -149,7 +149,7 @@
             typedef
                 typename Grammar::template impl<arg_type, end_xpr_type, Data>::result_type
             xpr_type;
-
+
             typedef
                 detail::lookbehind_matcher<xpr_type>
             result_type;
@@ -179,7 +179,7 @@
         struct impl : proto::transform_impl<Expr, State, Data>
         {
             typedef typename proto::result_of::child<Expr>::type arg_type;
-
+
             typedef
                 typename IndependentEndXpression::impl<arg_type, int, int>::result_type
             end_xpr_type;

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_matcher.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_matcher.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -31,7 +31,7 @@
                     typename proto::result_of::value<typename impl::expr>::type
>::type
             result_type;
-
+
             result_type operator ()(
                 typename impl::expr_param expr
               , typename impl::state_param

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_modifier.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_modifier.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_modifier.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -47,7 +47,7 @@
                     typename proto::result_of::left<typename impl::expr>::type
>::type
             modifier_type;
-
+
             typedef
                 typename modifier_type::template apply<typename impl::data>::type
             visitor_type;
@@ -55,7 +55,7 @@
             typedef
                 typename proto::result_of::right<Expr>::type
             expr_type;
-
+
             typedef
                 typename Grammar::template impl<expr_type, State, visitor_type &>::result_type
             result_type;

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_quantifier.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_quantifier.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_quantifier.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -72,15 +72,15 @@
             typedef
                 typename proto::result_of::child<Expr>::type
             arg_type;
-
+
             typedef
                 typename Grammar::template impl<arg_type, detail::true_xpression, Data>::result_type
             xpr_type;
-
+
             typedef
                 detail::simple_repeat_matcher<xpr_type, Greedy>
             matcher_type;
-
+
             typedef
                 typename proto::terminal<matcher_type>::type
             result_type;
@@ -165,7 +165,7 @@
             typedef
                 typename proto::result_of::child<Expr>::type
             xpr_type;
-
+
             typedef
                 typename InsertMark::impl<xpr_type, State, Data>::result_type
             marked_sub_type;
@@ -224,7 +224,7 @@
             typedef
                 detail::alternate_end_xpression
             end_xpr;
-
+
             typedef
                 detail::optional_matcher<
                     typename Grammar::template impl<Expr, end_xpr, Data>::result_type
@@ -256,7 +256,7 @@
             typedef
                 detail::alternate_end_xpression
             end_xpr;
-
+
             typedef
                 detail::optional_mark_matcher<
                     typename Grammar::template impl<Expr, end_xpr, Data>::result_type

Modified: branches/proto/v4/boost/xpressive/detail/static/width_of.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/width_of.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/width_of.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -37,17 +37,17 @@
     struct add_widths
       : mpl::size_t<N + M>
     {};
-
+
     template<std::size_t M>
     struct add_widths<unknown_width::value, M>
       : unknown_width
     {};
-
+
     template<std::size_t N>
     struct add_widths<N, unknown_width::value>
       : unknown_width
     {};
-
+
     template<>
     struct add_widths<unknown_width::value, unknown_width::value>
       : unknown_width

Modified: branches/proto/v4/boost/xpressive/regex_primitives.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/regex_primitives.hpp (original)
+++ branches/proto/v4/boost/xpressive/regex_primitives.hpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -188,7 +188,7 @@
                   , mpl::void_ &
>
             skip_transform;
-
+
             typedef
                 typename proto::shift_right<
                     typename skip_transform::result_type

Modified: branches/proto/v4/libs/proto/test/examples.cpp
==============================================================================
--- branches/proto/v4/libs/proto/test/examples.cpp (original)
+++ branches/proto/v4/libs/proto/test/examples.cpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -81,7 +81,7 @@
 
         /*<< Apply `CalculatorArity` to find the arity of the child. >>*/
         typedef typename boost::result_of<CalculatorArity(child_expr, State, Data)>::type result_type;
-
+
         /*<< The `unary_arity` transform doesn't have an interesting
         runtime counterpart, so just return a default-constructed object
         of the correct type. >>*/

Modified: branches/proto/v4/libs/proto/test/make_expr.cpp
==============================================================================
--- branches/proto/v4/libs/proto/test/make_expr.cpp (original)
+++ branches/proto/v4/libs/proto/test/make_expr.cpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -263,7 +263,7 @@
     void const *addr1 = boost::addressof(proto::child_c<1>(proto::child_c<0>(expr)));
     void const *addr2 = boost::addressof(proto::child_c<1>(proto::child_c<0>(Convert()(expr))));
     BOOST_CHECK_EQUAL(addr1, addr2);
-
+
     BOOST_CHECK_EQUAL(1, proto::value(proto::child_c<1>(proto::child_c<0>(expr))));
     BOOST_CHECK_EQUAL(1, proto::value(proto::child_c<1>(proto::child_c<0>(Convert()(expr)))));
 }

Modified: branches/proto/v4/libs/proto/test/matches.cpp
==============================================================================
--- branches/proto/v4/libs/proto/test/matches.cpp (original)
+++ branches/proto/v4/libs/proto/test/matches.cpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -11,7 +11,7 @@
 #include <boost/mpl/placeholders.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/proto/core.hpp>
-#include <boost/proto/transform.hpp>
+#include <boost/proto/transform/arg.hpp>
 #include <boost/test/unit_test.hpp>
 
 using namespace boost;

Modified: branches/proto/v4/libs/proto/test/toy_spirit.cpp
==============================================================================
--- branches/proto/v4/libs/proto/test/toy_spirit.cpp (original)
+++ branches/proto/v4/libs/proto/test/toy_spirit.cpp 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -439,7 +439,7 @@
                   , Expr
>::type
             result_type;
-
+
             result_type operator ()(
                 typename impl::expr_param expr
               , typename impl::state_param state

Modified: branches/proto/v4/libs/xpressive/doc/acknowledgements.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/acknowledgements.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/acknowledgements.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -8,15 +8,15 @@
 [section Acknowledgments]
 
 I am indebted to [@http://boost.org/people/joel_de_guzman.htm Joel de Guzman]
-and [@http://boost.org/people/hartmut_kaiser.htm Hartmut Kaiser] for their
+and [@http://boost.org/people/hartmut_kaiser.htm Hartmut Kaiser] for their
 expert advice during the early states of xpressive's development. Much of
 static xpressive's syntax is owes a large debt to _spirit_, including the
-syntax for xpressive's semantic actions. I am thankful for
+syntax for xpressive's semantic actions. I am thankful for
 [@http://boost.org/people/john_maddock.htm John Maddock]'s excellent work on
 his proposal to add regular expressions to the standard library, and for
 various ideas borrowed liberally from his regex implementation. I'd also like
 to thank [@http://moderncppdesign.com/ Andrei Alexandrescu] for his input
-regarding the behavior of nested regex objects, and
+regarding the behavior of nested regex objects, and
 [@http://boost.org/people/dave_abrahams.htm Dave Abrahams] for his suggestions
 regarding the regex domain-specific embedded language. Noel Belcourt helped
 porting xpressive to the Metrowerks CodeWarrior compiler. Markus

Modified: branches/proto/v4/libs/xpressive/doc/actions.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/actions.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/actions.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -10,7 +10,7 @@
 [h2 Overview]
 
 Imagine you want to parse an input string and build a `std::map<>` from it. For
-something like that, matching a regular expression isn't enough. You want to
+something like that, matching a regular expression isn't enough. You want to
 /do something/ when parts of your regular expression match. Xpressive lets
 you attach semantic actions to parts of your static regular expressions. This
 section shows you how.
@@ -31,12 +31,12 @@
     {
         std::map<std::string, int> result;
         std::string str("aaa=>1 bbb=>23 ccc=>456");
-
+
         // Match a word and an integer, separated by =>,
         // and then stuff the result into a std::map<>
         sregex pair = ( (s1= +_w) >> "=>" >> (s2= +_d) )
             [ ref(result)[s1] = as<int>(s2) ];
-
+
         // Match one or more word/integer pairs, separated
         // by whitespace.
         sregex rx = pair >> *(+_s >> pair);
@@ -47,7 +47,7 @@
             std::cout << result["bbb"] << '\n';
             std::cout << result["ccc"] << '\n';
         }
-
+
         return 0;
     }
 
@@ -59,7 +59,7 @@
 456
 ]
 
-The regular expression `pair` has two parts: the pattern and the action. The
+The regular expression `pair` has two parts: the pattern and the action. The
 pattern says to match a word, capturing it in sub-match 1, and an integer,
 capturing it in sub-match 2, separated by `"=>"`. The action is the part in
 square brackets: `[ ref(result)[s1] = as<int>(s2) ]`. It says to take sub-match
@@ -73,15 +73,15 @@
 between brackets is an expression template. It encodes the action and executes
 it later. The expression `ref(result)` creates a lazy reference to the `result`
 object. The larger expression `ref(result)[s1]` is a lazy map index operation.
-Later, when this action is getting executed, `s1` gets replaced with the
+Later, when this action is getting executed, `s1` gets replaced with the
 first _sub_match_. Likewise, when `as<int>(s2)` gets executed, `s2` is replaced
-with the second _sub_match_. The `as<>` action converts its argument to the
+with the second _sub_match_. The `as<>` action converts its argument to the
 requested type using Boost.Lexical_cast. The effect of the whole action is to
 insert a new word/integer pair into the map.
 
 [note There is an important difference between the function `boost::ref()` in
-`<boost/ref.hpp>` and `boost::xpressive::ref()` in
-`<boost/xpressive/regex_actions.hpp>`. The first returns a plain
+`<boost/ref.hpp>` and `boost::xpressive::ref()` in
+`<boost/xpressive/regex_actions.hpp>`. The first returns a plain
 `reference_wrapper<>` which behaves in many respects like an ordinary
 reference. By contrast, `boost::xpressive::ref()` returns a /lazy/ reference
 that you can use in expressions that are executed lazily. That is why we can
@@ -137,7 +137,7 @@
 operators. But what if you want to be able to call a function from a semantic
 action? Xpressive provides a mechanism to do this.
 
-The first step is to define a function object type. Here, for instance, is a
+The first step is to define a function object type. Here, for instance, is a
 function object type that calls `push()` on its argument:
 
     struct push_impl
@@ -158,7 +158,7 @@
     // Global "push" function object.
     function<push_impl>::type const push = {{}};
 
-The initialization looks a bit odd, but this is because `push` is being
+The initialization looks a bit odd, but this is because `push` is being
 statically initialized. That means it doesn't need to be constructed
 at runtime. We can use `push` in semantic actions as follows:
 
@@ -182,7 +182,7 @@
 `result_type` typedef. Here, for example, is a `first` function object
 that returns the `first` member of a `std::pair<>` or _sub_match_:
 
- // Function object that returns the
+ // Function object that returns the
     // first element of a pair.
     struct first_impl
     {
@@ -204,7 +204,7 @@
     };
 
     // OK, use as first(s1) to get the begin iterator
- // of the sub-match referred to by s1.
+ // of the sub-match referred to by s1.
     function<first_impl>::type const first = {{}};
 
 [h3 Referring to Local Variables]
@@ -238,7 +238,7 @@
     }
 
 In the above code, we use `xpressive::val()` to hold the shared pointer by
-value. That's not normally necessary because local variables appearing in
+value. That's not normally necessary because local variables appearing in
 actions are held by value by default, but in this case, it is necessary. Had
 we written the action as `++*pi`, it would have executed immediately. That's
 because `++*pi` is not an expression template, but `++*val(pi)` is.
@@ -263,7 +263,7 @@
 
 As you can see, when using `reference<>`, you need to first declare a local
 variable and then declare a `reference<>` to it. These two steps can be combined
-into one using `local<>`.
+into one using `local<>`.
 
 [table local<> vs. reference<>
 [[This ...][... is equivalent to this ...]]
@@ -301,15 +301,15 @@
 that in the semantic action instead of the map itself. Later, when we
 call one of the regex algorithms, we can bind the reference to an actual
 map object. The following code shows how.
-
+
     // Define a placeholder for a map object:
     placeholder<std::map<std::string, int> > _map;
-
+
     // Match a word and an integer, separated by =>,
     // and then stuff the result into a std::map<>
     sregex pair = ( (s1= +_w) >> "=>" >> (s2= +_d) )
         [ _map[s1] = as<int>(s2) ];
-
+
     // Match one or more word/integer pairs, separated
     // by whitespace.
     sregex rx = pair >> *(+_s >> pair);
@@ -319,7 +319,7 @@
 
     // Here is the actual map to fill in:
     std::map<std::string, int> result;
-
+
     // Bind the _map placeholder to the actual map
     smatch what;
     what.let( _map = result );
@@ -340,10 +340,10 @@
 456
 ]
 
-We use `placeholder<>` here to define `_map`, which stands in for a
+We use `placeholder<>` here to define `_map`, which stands in for a
 `std::map<>` variable. We can use the placeholder in the semantic action as if
 it were a map. Then, we define a _match_results_ struct and bind an actual map
-to the placeholder with "`what.let( _map = result );`". The _regex_match_ call
+to the placeholder with "`what.let( _map = result );`". The _regex_match_ call
 behaves as if the placeholder in the semantic action had been replaced with a
 reference to `result`.
 
@@ -360,27 +360,27 @@
 
     // Define a placeholder for a map object:
     placeholder<std::map<std::string, int> > _map;
-
+
     // Match a word and an integer, separated by =>,
     // and then stuff the result into a std::map<>
     sregex pair = ( (s1= +_w) >> "=>" >> (s2= +_d) )
         [ _map[s1] = as<int>(s2) ];
-
+
     // The string to parse
     std::string str("aaa=>1 bbb=>23 ccc=>456");
-
+
     // Here is the actual map to fill in:
     std::map<std::string, int> result;
-
+
     // Create a regex_iterator to find all the matches
     sregex_iterator it(str.begin(), str.end(), pair, let(_map=result));
     sregex_iterator end;
-
+
     // step through all the matches, and fill in
     // the result map
     while(it != end)
         ++it;
-
+
     std::cout << result["aaa"] << '\n';
     std::cout << result["bbb"] << '\n';
     std::cout << result["ccc"] << '\n';
@@ -397,7 +397,7 @@
 
 You are probably already familiar with regular expression /assertions/. In
 Perl, some examples are the [^^] and [^$] assertions, which you can use to
-match the beginning and end of a string, respectively. Xpressive lets you
+match the beginning and end of a string, respectively. Xpressive lets you
 define your own assertions. A custom assertion is a contition which must be
 true at a point in the match in order for the match to succeed. You can check
 a custom assertion with xpressive's _check_ function.
@@ -438,7 +438,7 @@
     sregex rx = (bow >> +_w >> eow)[ check(length(_)==3 || length(_)==6) ] ;
 
 In the above, `length()` is a lazy function that calls the `length()` member
-function of its argument, and `_` is a placeholder that receives the
+function of its argument, and `_` is a placeholder that receives the
 `sub_match`.
 
 Once you get the hang of writing custom assertions inline, they can be
@@ -451,7 +451,7 @@
 
     mark_tag month(1), day(2);
     // find a valid date of the form month/day/year.
- sregex date =
+ sregex date =
         (
             // Month must be between 1 and 12 inclusive
             (month= _d >> !_d) [ check(as<int>(_) >= 1

Modified: branches/proto/v4/libs/xpressive/doc/dynamic_regexes.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/dynamic_regexes.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/dynamic_regexes.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -20,7 +20,7 @@
 There are two ways to create a dynamic regex: with the _regex_compile_
 function or with the _regex_compiler_ class template. Use _regex_compile_
 if you want the default locale. Use _regex_compiler_ if you need to
-specify a different locale. In the section on
+specify a different locale. In the section on
 [link boost_xpressive.user_s_guide.grammars_and_nested_matches regex grammars],
 we'll see another use for _regex_compiler_.
 

Modified: branches/proto/v4/libs/xpressive/doc/history.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/history.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/history.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -66,7 +66,7 @@
 
 [h2 Version 0.0.1, November 16, 2003]
 
-Announcement of xpressive:
+Announcement of xpressive:
 [@http://lists.boost.org/Archives/boost/2003/11/56312.php]
 
 [endsect]

Modified: branches/proto/v4/libs/xpressive/doc/installation.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/installation.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/installation.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -16,7 +16,7 @@
 The second way is by downloading xpressive.zip at the
 [@http://www.boost-consulting.com/vault/index.php?directory=Strings%20-%20Text%20Processing
 Boost File Vault] in the ["Strings - Text Processing] directory. In addition to
-the source code and the Boost license, this archive contains a copy of this
+the source code and the Boost license, this archive contains a copy of this
 documentation in PDF format. This version will always be stable and at least as
 current as the version in the latest Boost release. It may be more recent. The
 version in the File Vault is always guaranteed to work with the latest official

Modified: branches/proto/v4/libs/xpressive/doc/introduction.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/introduction.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/introduction.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -15,7 +15,7 @@
 [@http://www.osl.iu.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html
 Expression Templates]] that are parsed at compile-time (static regexes).
 Dynamic regexes have the advantage that they can be accepted from the user
-as input at runtime or read from an initialization file. Static regexes
+as input at runtime or read from an initialization file. Static regexes
 have several advantages. Since they are C++ expressions instead of
 strings, they can be syntax-checked at compile-time. Also, they can naturally
 refer to code and data elsewhere in your program, giving you the ability to call

Modified: branches/proto/v4/libs/xpressive/doc/matching.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/matching.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/matching.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -23,8 +23,8 @@
 algorithm.]
 
 The input can be a bidirectional range such as `std::string`, a C-style null-terminated string or a pair of
-iterators. In all cases, the type of the iterator used to traverse the input sequence must match the iterator
-type used to declare the regex object. (You can use the table in the
+iterators. In all cases, the type of the iterator used to traverse the input sequence must match the iterator
+type used to declare the regex object. (You can use the table in the
 [link boost_xpressive.user_s_guide.quick_start.know_your_iterator_type Quick Start] to find the correct regex
 type for your iterator.)
 
@@ -78,8 +78,8 @@
 
 In all other regards, _regex_search_ behaves like _regex_match_ ['(see above)]. In particular, it can operate
 on a bidirectional range such as `std::string`, C-style null-terminated strings or iterator ranges. The same
-care must be taken to ensure that the iterator type of your regex matches the iterator type of your input
-sequence. As with _regex_match_, you can optionally provide a _match_results_ struct to receive the results
+care must be taken to ensure that the iterator type of your regex matches the iterator type of your input
+sequence. As with _regex_match_, you can optionally provide a _match_results_ struct to receive the results
 of the search, and a _match_flag_type_ bitmask to control how the match is evaluated.
 
 Click [link boost_xpressive.user_s_guide.examples.see_if_a_string_contains_a_sub_string_that_matches_a_regex here]

Modified: branches/proto/v4/libs/xpressive/doc/nyi.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/nyi.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/nyi.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -10,7 +10,7 @@
 The following features are planned for xpressive 2.X:
 
 * `syntax_option_type::collate`
-* Collation sequences such as [^'''[.a.]''']
+* Collation sequences such as [^'''[.a.]''']
 * Equivalence classes like [^'''[=a=]''']
 * Control of nested results generation with `syntax_option_type::nosubs`,
   and a `nosubs()` modifier for static xpressive.

Modified: branches/proto/v4/libs/xpressive/doc/substitutions.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/substitutions.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/substitutions.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -67,7 +67,7 @@
 
 [h2 The ECMA-262 Format Sequences]
 
-When you haven't specified a substitution string dialect with one of the format flags above,
+When you haven't specified a substitution string dialect with one of the format flags above,
 you get the dialect defined by ECMA-262, the standard for ECMAScript. The table below shows
 the escape sequences recognized in ECMA-262 mode.
 

Modified: branches/proto/v4/libs/xpressive/doc/symbols.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/symbols.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/symbols.qbk 2008-04-21 01:40:00 EDT (Mon, 21 Apr 2008)
@@ -9,7 +9,7 @@
 
 [h2 Overview]
 
-Symbol tables can be built into xpressive regular expressions with just a
+Symbol tables can be built into xpressive regular expressions with just a
 `std::map<>`. The map keys are the strings to be matched and the map values are
 the data to be returned to your semantic action. Xpressive attributes, named
 `a1`, `a2`, through `a9`, hold the value corresponding to a matching key so
@@ -83,7 +83,7 @@
 ninety nine million nine hundred ninety nine thousand nine hundred ninety nine"
 along with some special number names like "dozen".
 
-Symbol table matches are case sensitive by default, but they can be made
+Symbol table matches are case sensitive by default, but they can be made
 case-insensitive by enclosing the expression in `icase()`.
 
 [h2 Attributes]


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