<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.comp.parsers.spirit.devel">
    <title>gmane.comp.parsers.spirit.devel</title>
    <link>http://blog.gmane.org/gmane.comp.parsers.spirit.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3463"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3458"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3454"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3450"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3441"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3435"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3431"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3423"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3405"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3374"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3373"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3367"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3359"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3349"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3348"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3344"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3330"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3321"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3264"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3258"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3463">
    <title>Rethinking the "what"</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3463</link>
    <description>Hi,

I have mixed feelings with the way we have the "what"
member functions. In spirit2, it simply returns a
std::string. I've had problems when I had to return
a wide string. No good. In spirit2x, I initially redesigned
it to take in a templated stream:. Here's the int parser
parser's what function, for example:

     template &lt;typename OStream, typename Context&gt;
     void what(OStream&amp; out, Context const&amp; /*context*/) const
     {
         out &lt;&lt; "integer";
     }

Here's for alternative:

     template &lt;typename OStream, typename Context&gt;
     void what(OStream&amp; out, Context const&amp; context) const
     {
         out &lt;&lt; "alternatives[";
         fusion::for_each(elements,
             spirit::detail::what_function&lt;OStream, Context&gt;(out, context));
         out &lt;&lt; "]";
     }

Iterates over the alternatives and collects the "what"s of each.

So far so good. But then I had to implement the expect parser
which throws an exception. Somewhere in its internals, it
has to call the "what" function of the parser th</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-11-22T04:45:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3458">
    <title>Anatomy of.. installment: extended terminals</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3458</link>
    <description>Hi,

We had an example of a terminal, the int parser. next, well
investigate extended terminals, those that accept parameters.

First, we'll have another example of a simple terminal, the
bare eps parser. Like before, we start of by enabling our place holder.
But wait, we haven't really seen how we define our place holders.
It's actually quite simple. For the int_ (and friends) we
have this code:

     BOOST_SPIRIT_DEFINE_TERMINALS(
     /*...*/

         ( short_ )
         ( long_ )
         ( int_ )
         ( ulong_long )
         ( long_long )

     /*...*/
     )

Placed in support/common_terminals.hpp. Each of these is a call
to the macro, BOOST_SPIRIT_TERMINAL. Example:

     BOOST_SPIRIT_TERMINAL(int_)

which expands to:

     namespace tag { struct int_{};  }
     typedef boost::proto::terminal&lt;tag::name&gt;::type int__type;
     int__type const int_ = {{}};

Our eps parser also has its eps placeholder. Unlike the int_
placeholder, however, eps can stand in its own, or can accept
a parameter. eps basi</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-11-16T18:35:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3454">
    <title>[Spirit2X] How to add function-like parsers anddirectives to Spirit2X (+ remarks)</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3454</link>
    <description>Hi,

I started playing around with Spirit2X, and have a few minor remarks
as well as one "how should I" question (to which the answer is
probably "just wait for it to be implemented" :p).


First off, 3 remarks:

1. In support/placeholder.hpp I suggest applying the attached patch
(adding the boost namespace) so that the BOOST_SPIRIT_PLACEHOLDER and
BOOST_SPIRIT_DEFINE_PLACEHOLDERS macros can be used in contexts which
do not have "using namespace boost;".

2. Small copy/paste error in plus's what() function, patch attached.

3. Setting "pass" to false in an action (e.g. my_parser[pass = false])
fails parsing as expected, yet the input iterator is still advanced
(it isn't reset to the value it had before my_parser was called). Just
wondering, since this is contrary to usual Spirit behavior -- is that
intentional? (Looks like it was the same in Spirit2.)



And the question: in Spirit2 I had several custom directives with
arguments, using the following syntax:
        my_directive(first_arg, second_arg, ...)[ .</description>
    <dc:creator>Francois Barel</dc:creator>
    <dc:date>2008-11-11T15:23:44</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3450">
    <title>Boostcon 2009 call for sessions</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3450</link>
    <description>3rd annual Boost Conference 2009
Aspen CO, USA, May 3-9, 2009, www.boostcon.com
----------------------------------------------------------------------------

Call for participation
----------------------
Promising to be the main face-to-face event for all things Boost 
(www.boost.org), BoostCon'09 opens the door to your C++ future. From using 
the Boost libraries to writing and maintaining them, from evangelizing to 
deploying Boost within your organization, from infrastructure and process 
to vision and mission, and from TR1  to TR2 and the new C++0x Standard, 
BoostCon brings together the sessions, the colleagues, and the inspiration 
to support your work with C++ and Boost in particular for the next year.

To reflect the breadth of the Boost community, the conference includes 
sessions aimed at two constituencies: Boost end-users and hard-core Boost 
library and tool developers. The program fosters interaction and engagement 
within and across those two groups, with an emphasis on hands-on, 
participatory</description>
    <dc:creator>dan marsden</dc:creator>
    <dc:date>2008-11-09T20:00:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3441">
    <title>spirit2x speedup</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3441</link>
    <description>Hi Y'all,

Ok, the informal count is in. Heh, not the U.S. race, but
for Spirit2x vs. Spirit2 :-)

I'm getting a 24% speedup in the rule.cpp test when comparing
the old and the new. The syntax and usage is nearly identical.
I haven't optimized yet. Well, ok, I did a bit: converting the
proto transforms into its primitive forms.

Next step: profiling the compiler. Dan, any news in the Fusion
side of things?

Regards,
</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-11-05T12:35:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3435">
    <title>spirit2 permutations and attributes</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3435</link>
    <description>Hi Y'all,

Ok, so we know that spirit2 collapses unused attributes.
Some terminals have unused attributes. For example literals
have unused attributes so as to be able to collapse attributes
of expressions like:

     char_ &gt;&gt; ',' &gt;&gt; int_

into:

     tuple&lt;char, int&gt;

The collapsing rules work fine for sequences and alternatives.
Most of the time, we do not care about the literals. Yet, I know
at least one use case for alternatives where you want to have
an attribute for the literals. Example:

     lit("apple") | "banana" |  "cherry"

but, of course, you can use a symbol table for that. But what
if we had:

     int_ | "banana" |  "cherry"

I think this is clearly a case where we definitely want to
know if it's an int, a "banana" or "cherry" we parsed. I think
we need an attributed literal. Example:

     attr("banana")

(can anyone suggest a better name?)

I'm guessing the raw directive allows you to do the same:

     raw["banana"]

but the intent is not the same.

Anyway, so... permutations...

We all k</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-11-04T16:00:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3431">
    <title>modifying symbols</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3431</link>
    <description>I have symbols working for
adder::operator () (const std::basic_string&lt;Char,A&gt; &amp;)
remover::operator () (const std::basic_string&lt;Char,A&gt; &amp;)

working.
Problem is  that

symbols&lt;Char,T&gt;::operator += (const std::basic_string&lt;Char,A&gt; &amp;str)
{
return add(str);
}

does nothing

have not added operator , (const std::basic_string&lt;Char,A&gt; &amp;) to  
either adder or remover at this
time don't see much gain with strings but as soon as I frind a  
solution to this forwarding problem I will
make similiar additons to operator , ( const std::basic_string&lt;Char,A&gt;  
&amp;),

Any Ideas why

symbols&lt;Char.T&gt;table;
std::basic_string&lt;Char&gt;str;

table.add(str) worksl

but table += str;   should not work ????



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin</description>
    <dc:creator>Carl Barron</dc:creator>
    <dc:date>2008-10-30T04:18:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3423">
    <title>Anatomy of a Spirit2x composite parser</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3423</link>
    <description>Hi,

As part of my "Inside Spirit2x" installments, here's some info on
how to write a Spirit composite. I'll put all installements so far
in the Spirit site soon.

Required reading: "Anatomy of a Spirit2x primitive parser"

///////////////////////////////////////////////////////////////////////////////
Composites:
///////////////////////////////////////////////////////////////////////////////

Let me present the kleene star (also in namespace spirit::qi):

     template &lt;typename Subject&gt;
     struct kleene : unary_parser&lt;kleene&lt;Subject&gt; &gt;
     {
         typedef Subject subject_type;

         template &lt;typename Context&gt;
         struct attribute
         {
             // Build a std::vector from the subject's attribute. Note
             // that build_std_vector may return unused_type if the
             // subject's attribute is an unused_type.
             typedef typename
                 traits::build_std_vector&lt;
                     typename traits::attribute_of&lt;Subject, Context&gt;::type
              </description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-10-26T12:10:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3405">
    <title>Collapsing rule not applied to optional variant</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3405</link>
    <description>If I have a rule like this:
     rule %= -(':' &gt;&gt; (char_ | double_));

I would expect the attribute type to be:
     optional&lt; variant&lt;char, double&gt; &gt;

But instead it is:
     optional&lt; fusion::vector&lt; variant&lt;char, double&gt; &gt; &gt;

A full example is attached below which shows that this problem is not  
present in variations of the above.

This is running spirit 2 as included with boost 1.36.0


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/_______________________________________________
Spirit-devel mailing list
Spirit-devel&lt; at &gt;lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spirit-devel
</description>
    <dc:creator>Allan Odgaard</dc:creator>
    <dc:date>2008-10-22T12:47:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3374">
    <title>[Spirit2][Spirit2x] Rules / skippers and impact oncompilation times</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3374</link>
    <description>Not sure if this is the place for a little question about Spirit2 /
Spirit2x, but I'll try... I thought I should at least raise the
question before it's re-written :)


IIUC Spirit2's implementation, for a rule object whose type has a
given skipper type:
- whenever an expr is assigned to that rule,
- a virtual_component gets instantiated,
- and two parse() worker methods always get instantiated: one for
parsing with an instance of that skipper type (or of another skipper
type convertible to the former), but also one for parsing with no
skipper (in case that rule ever gets used in lexeme[...] context).

The result is very nice from a user's pov, since the user doesn't have
to worry whether a rule is used "directly" or in lexeme[...] context,
both just work.


However, if I look at the grammars I've written, this means almost 1/2
of those instantiations are never used: most rules (especially the
high-level, more complex ones) only get used either directly or in
lexeme[...] context, but not in both (only very f</description>
    <dc:creator>Francois Barel</dc:creator>
    <dc:date>2008-10-19T15:49:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3373">
    <title>Anatomy of a Spirit2x primitive parser</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3373</link>
    <description>Hi,

Let me present an exemplar for a Spirit2x primitive, the int_parser
in the boost::spirit::qi namespace:

     template &lt;
         typename T
       , unsigned Radix = 10
       , unsigned MinDigits = 1
       , int MaxDigits = -1&gt;
     struct int_parser
       : primitive_parser&lt;int_parser&lt;T, Radix, MinDigits, MaxDigits&gt; &gt;
     {
         // check template parameter 'Radix' for validity
         BOOST_MPL_ASSERT_MSG(
             Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16,
             not_supported_radix, ());

         template &lt;typename Context&gt;
         struct attribute
         {
             typedef T type;
         };

         template &lt;typename Iterator, typename Context
           , typename Skipper, typename Attribute&gt;
         bool parse(Iterator&amp; first, Iterator const&amp; last
           , Context&amp; /*context*/, Skipper const&amp; skipper
           , Attribute&amp; attr) const
         {
             qi::skip(first, last, skipper);
             return extract_int&lt;T, Radix, MinDigits, MaxDi</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-10-18T23:40:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3367">
    <title>Spirit2x in Spirit SVN</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3367</link>
    <description>Hi,

To those interested, FYI, I have the Spirit2x code in the
Spirit SourceForge SVN at:

     https://spirit.svn.sourceforge.net/svnroot/spirit/trunk/Spirit2x

This is not the Boost SVN. Since this is a total rewrite, I do not
want to touch Spirit2 in the Boost SVN.

What do we have there? Well, more or less the same code that I
posted a few days ago but structured into modules and directories
like Spirit2.

For those who want to keep up with the development, are
interseted in contributing somehow in the future, or simply
want to see how a library like Spirit is being developed,
this is it. I'll try to provide tech information as it's
being developed. This log might be useful in the future to
document the design and evolution of the library. To those
who really, really want to keep abreast, the basic requirement
is knowledge of key Boost libraries, most importantly:

1) MPL
2) Fusion
3) Proto
4) Phoenix

Oh, did you know that Phoenix is now a full fledged Boost library?

Cheers!!!,
</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-10-17T14:20:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3359">
    <title>Spirit2x development</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3359</link>
    <description>Hi,

(posting to both Spirit general and Spirit devel.
I'd like to invite those interested in Spirit-general
to join in the development, the discussions, etc. I intend to
have another round of dev-talk-and-coding. All these will happen
in the spirit-devel list.)

For some time now, we had Spirit2 in beta. The library is just fine.
The generated code is trim and fit and fast! The interface is nice
and intuitive, and IMO, is quite elegant. Like it's predecessor,
classic Spirit, Spirit2 is again breaking new grounds on what
you can do with template metaprogramming and expresion templates.
It is quite stable, despite its beta status, perhaps in large,
due to its undrelying infrastructure: MPL, Fusion and Proto (and
a couple more boost libraries here and there).

We've focused on optimizing runtime. And indeed, as shown by
Overmind's recent tests, and by some of my (and Hartmut's) original
tests, Spirit2 is fast. I'm planning to have more tests done,
surely. We've also focused on usability and perfected the inter</description>
    <dc:creator>Joel de Guzman</dc:creator>
    <dc:date>2008-10-16T02:00:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3349">
    <title>Using position_iterator with mixed newlines</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3349</link>
    <description>Hello,

Because of the recent problems with quickbook and windows newlines,
I've been having a look at how position_iterator in classic spirit
deals with windows newlines and it has some problems.
position_iterator treats as a single newline '\r', '\n', '\r\n' and
'\n\r' - the last of which isn't generally treated as a single
newline, and isn't by classic spirit elsewhere.

Also, in the case of '\r\n' and '\n\r' it skips over the second
character, which means that it transforms '\r\n' to '\r' and '\n\r' to
'\n'. This leads to interesting situation with '\r\n\n', this gets
transformed to '\r\n' which spirit treats as a single newline, but
position_iterator will have counted two lines.

Here's a demonstration that spirit with and without position_iterator
acts differently:

#include &lt;boost/spirit/include/classic_core.hpp&gt;
#include &lt;boost/spirit/include/classic_position_iterator.hpp&gt;
#include &lt;cassert&gt;

using namespace boost::spirit::classic;

template &lt;class Grammar&gt;
bool position_parse(char const* str, Gramma</description>
    <dc:creator>Daniel James</dc:creator>
    <dc:date>2008-10-08T20:00:47</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3348">
    <title>Minor BOOST_SPIRIT_RULE fixes</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3348</link>
    <description>Hello,

I tried to recompile my project with g++ -pedantic-errors option, and
then I encountered some problems with BOOST_SPIRIT_RULE macro (the
compiler complained about extra semicolons). The attached patch fixes
the problem.

Cheers,
Vygintas
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK &amp; win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/_______________________________________________
Spirit-devel mailing list
Spirit-devel&lt; at &gt;lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spirit-devel
</description>
    <dc:creator>Vygintas Daugmaudis</dc:creator>
    <dc:date>2008-09-15T14:49:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3344">
    <title>[proto v4]compile time equation soln prototype fails to compile with "when" map for "variables"</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3344</link>
    <description>In the vault at:

http://www.boost-consulting.com/vault/index.php?action=downloadfile&amp;filename=pass_thru_tag_xform.cpp&amp;directory=Strings%20-%20Text%20Processing&amp;PHPSESSID=ab51206c9d980155d142f5bcef8e00ee

there's a partial prototype for compile time solving a system of
equations. The partial prototype is partial because it just tries
to simplify the rhs of the equation.  The domain is calculating
the empty attributes of a set of grammar productions (i.e. the
equations).  The typedef ... xfrm_empty_varbl_map0
is supposed to implement a substitution operation which
substitutes a literal value for a variable.  In this
particular case, the variable is

   empty::tag_varbl&lt;gram::varbl_factor&gt;

and the value to be substituted is:

   empty::tag_literal&lt;empty::literal_not&gt;

As indicated in the comments following:

//NOTE:varbl_empty_map_bug:

it fails to reduce the rhs to a terminal expression
of type tag_literal&lt;empty::literal_not&gt; at the valu_empty_not_leaves
statement.  However, this only happens when the xfrm_e</description>
    <dc:creator>Larry Evans</dc:creator>
    <dc:date>2008-05-14T18:23:22</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3330">
    <title>Proto v4</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3330</link>
    <description>No library ever made it through a review unscathed and proto is no 
exception. There's a new version of proto in branches/proto/v4, and 
Spirit-2 will need some changes to work with it. This is the version 
that will be merged into trunk, eventually.

First the simple things:

* Proto lives at boost/proto/, not boost/xpressive/proto
* boost/proto/proto.hpp now includes all of proto with the
   exception of the typeof registrations. That includes the
   contexts, the transforms and the debugging utilities. If
   you just want the core of proto without the other stuff,
   there is boost/proto/core.hpp
* s/posit/unary_plus/
* s/arg/child, s/arg_c/child_c/, s/_argN/_childN
* s/bind/lazy/
* s/_visitor/_data/
* The proto::transform namespace is no more.

Some bigger changes:

The protocol for defining a primitive transform has changed. Previously, 
primitive transforms were just ternary function objects like this:

struct MyTransform : proto::callable
{
   template&lt;class Sig&gt;
   struct result;

   template&lt;class T</description>
    <dc:creator>Eric Niebler</dc:creator>
    <dc:date>2008-04-08T00:43:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3321">
    <title>skipper rules silently ignored (spirit2)</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3321</link>
    <description>Hi,

Using the latest svn version of spirit2, I have had a small problem with the
skipper rule.
Since I wanted to use a rule more complexe than space (and that I didn't
have its type):

charset::space | ('%' &gt;&gt; *~spirit::char_('\n') &gt;&gt; '\n')

I defined my grammar like this:

template &lt;typename Iterator&gt;
struct my_grammar : qi::grammar_def&lt;Iterator, qi::rule&lt;Iterator&gt; &gt; {...};

but doing:

bool r = phrase_parse(iter, storage.end(), make_parser(def),
charset::space | ('%' &gt;&gt; *~spirit::char_('\n') &gt;&gt; '\n'));

ignore the skipping rule

in qi/nonterminal/rule.hpp:170

  template &lt;typename Iterator_, typename Context, typename Skipper&gt;
        bool parse(
            Iterator_&amp; first, Iterator_ const&amp; last
          , Context&amp; context, Skipper const&amp; skipper) const
        {
// in this function, the skipper is ok
// but this call loose it (select the unused_type for the skipper overload
of the function)
            return ptr-&gt;parse(first, last, context, skipper);
        }

Finally, I did:

  qi::rule&lt;iterator_</description>
    <dc:creator>Cédric Venet</dc:creator>
    <dc:date>2008-02-24T17:16:18</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3264">
    <title>proto breaking changes (and patch for spirit2)</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3264</link>
    <description>I've committed to boost svn head a new version of proto with improved 
transforms. This is a breaking change. There isn't documentation yet for 
the new transforms, so I made a patch that gets Spirit-2 working again. 
(At least, it works with msvc, but there appear to be other problems 
with spirit-2 and gcc which are unrelated.) Patch attached.

Cheers,

</description>
    <dc:creator>Eric Niebler</dc:creator>
    <dc:date>2008-01-12T06:48:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3258">
    <title>[fusion] Constructing fusion::map&lt;P1, P2, ..,PN&gt; Requires same ordering of P's?</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3258</link>
    <description>Hi Everyone,

I don't know if this is a bug or intended behavior, given the snippet
below:

&lt;code&gt;

struct tags {
  struct type_1 { };
  struct type_2 { };
};

typedef map&lt; pair&lt;tags::type_1, int&gt;, pair&lt;tags::type_2, int&gt; &gt; 
my_map_type;

void foo() {
  my_map_type instance( make_pair&lt;tags::type_2&gt;(1),
make_pair&lt;tags::type_2&gt;(2) );
};

&lt;/code&gt;

It complains that instance does not have a defined constructor given the
order of arguments. I'm using Fusion that's in Boost SVN trunk revision
39151 -- frozen due to internal development/engineering decisions.

Is this a bug, or a feature?

Insights would be most appreciated.

--
Dean Michael Berris
Software Engineer, Friendster, Inc.
&lt;dmberris&lt; at &gt;friendster.com&gt;
Mobile: +639287291459
YMID: mikhailberis

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FRE</description>
    <dc:creator>Dean Michael C. Berris</dc:creator>
    <dc:date>2007-10-31T15:02:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3246">
    <title>[fusion] Short-circuited Exception-based ViewIteration</title>
    <link>http://comments.gmane.org/gmane.comp.parsers.spirit.devel/3246</link>
    <description>Hi Everyone,

I'm not sure if the title makes sense, but I have a problem which can
be solved with a handful of preprocessor macros, but would like to see
solved with Fusion.

Let's say I have a vector of values:

fusion::vector&lt;int, int, int, int&gt; ints(0, 1, 2, 3);

I then have a function such as:

struct function {
  void operator()(int value) {
    if (value &lt; 2)
      throw runtime_error("less than 3");
    cout &lt;&lt; value &lt;&lt; endl;
  };
};

Would there be a way for me to iterate through every element of 'ints'
and apply the function object instance to each element, and stop the
iteration only when function does not throw?

I know using exceptions for control flow is pretty frowned upon, and I
can certainly use it the other way around -- to short-circuit the
iteration only when it throws.

If you're interested in the use case for this particular question, I'm
looking for a way to make the dispatcher library I'm working on
(http://dispatcher.sourceforge.net/) be able to generically support
the following cons</description>
    <dc:creator>Dean Michael Berris</dc:creator>
    <dc:date>2007-09-22T06:06:23</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.comp.parsers.spirit.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.parsers.spirit.devel</link>
  </textinput>
</rdf:RDF>
