OK, small road bump.

I tried a simple "grammar as geenrator" thingy but using the idea that i didnt wanted to replicate all possible generator out there.
So i made a template grammar taking a Generator and doing thing around:

struct print_tag : proto::callable
{
  typedef void result_type;
  template<class X> void operator()(X const&) const
  {
    std::cout << typeid(typename proto::tag_of<X>::type).name() << "\n";
  }
};

template<class Generator>
struct  debug_generator
      : proto::when < proto::_
                    , proto::and_ < print_tag(proto::_)
                                          , Generator(proto::_)
>
> {};

I then took the Calc2 example and changed the calculator_domain to be :

struct calculator_domain
: proto::domain<debug_generator<proto::generator<calculator_expression> > >
{};

Boost version is 1.45
The full modified code is : http://codepad.org/41nnNNwf
Alas, I got a lump of errors as specified here : http://codepad.org/4hnylfvQ

Am I missing something or is the and_ not working like I thougt it was as a transform.
_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to