|
Proto : |
Subject: Re: [proto] Adding stuff in proto operator
From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2010-12-29 03:23:53
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 list run by eric at boostpro.com