Subject: Re: [proto] Using Phoenix inside eUML: mixing grammars
From: Michael Caisse (boost_at_[hidden])
Date: 2011-03-20 16:31:33
On 03/16/2011 01:56 PM, Christophe Henry wrote:
> I have my eUML grammar, defing, for example a transition as:
<snip first question that I don't have an answer for>
> Second question. Now it's becoming more "interesting". And not easy to
> explain :(
> For eUML, a guard can be defined as "g1&& g2", where g1 and g2 are
> functors, taking 4 arguments. For example (to make short):
> struct g1_
> template<class FSM,class EVT,class SourceState,class TargetState>
> void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
> g1_ g1;
> The fact that there are 4 arguments is the condition to make this work
> without placeholders.
> I 'm pretty sure that, while this clearly should be a function for
> phoenix, I would not like the syntax:
> g1(arg1,arg2,arg3,arg4)&& g2(arg1,arg2,arg3,arg4).
Placeholders would be great here. I find most of the time I only care
about EVT or EVT and FSM. Having MSM defined placeholders with cool
names like evt_ and fsm_ wouldn't be bad IMHO.
Also... shouldn't operator() return a bool for a guard? Then this just
becomes a composition. If g1 and g2 are phoenix functions then (making
up some new MSM placeholders):
g1(evt_) && g2(evt_,fsm_)
will result in the composed lazy functors and placeholders are now
This also allows me to write full phoenix lambdas inline with the eUML
which would be the cat's meow!
I like the way these discussions are going Christophe!
-- Michael Caisse Object Modeling Designs www.objectmodelingdesigns.com
Proto list run by eric at boostpro.com