To be honest I am a little bit confuse with the examples you mentioned. I do not see where the grammar is now defined in the .cpp file from the example. I only see a declaration of grammar in .hpp.

I would have expect that the Grammar header is defined in .hpp but the actual EBNF definition is defined in .cpp. Hence, I do not see example of (2) in the examples, unless I miss something.
 
About your point (1), I think Classic Spirit also support this. You can have a rule that embed a grammar which is defined in a different file.

 
> From: hoeppler@gmx.net
> To: boost-users@lists.boost.org
> Date: Sun, 8 Nov 2009 15:33:16 +0100
> Subject: Re: [Boost-users] [Spirit] Problem with fairly big grammar
>
> On Sunday 08 November 2009, Ray Burkholder wrote:
> > > I highly suggest moving to spirit2 if you are planning to do any
> > > refactorization. In spirit2 (http://spirit.sourceforge.net/home/)
> > > we have some examples that highlight this:
> > >
> > > calc6, calc7 and mini_c are examples of modular grammar constructions.
> > > calc6 is simplest of the three and shows how you can:
> > >
> > > 1) embed grammars for modularization
> > > 2) separate the grammar definition (constructor) from the class
> > > declaration
> > > 3) instantiate a particular grammar template in a cpp file.
> >
> > Would you be able to provide a direct link to the calc6, calc7 examples?
> > They don't appear to be directly linked or described on the documentation
> > page at:
> > http://spirit.sourceforge.net/home/spirit2/libs/spirit/doc/html/index.html
>
> http://svn.boost.org/svn/boost/trunk/libs/spirit/example/qi/calc6/
>
> HTH,
> Chris
> _______________________________________________
> Boost-users mailing list
> Boost-users@lists.boost.org
> http://lists.boost.org/mailman/listinfo.cgi/boost-users


Windows 7: Unclutter your desktop. Learn more.