Boost logo

Boost :

Subject: Re: [boost] [MSM] Is there any interest in C++14 Boost.MSM-eUML like library which compiles up to 60x quicker whilst being a slightly faster too?
From: Klaim - Joël Lamotte (mjklaim_at_[hidden])
Date: 2016-02-02 17:10:17


On 2 February 2016 at 22:29, Krzysztof Jusiak <krzysztof_at_[hidden]> wrote:

> On Tue, Feb 2, 2016 at 7:09 PM, Klaim - Joël Lamotte <mjklaim_at_[hidden]>
> wrote:
>
> > On 2 February 2016 at 19:41, Vicente J. Botet Escriba <
> > vicente.botet_at_[hidden]> wrote:
> >
> > >
> > > I see that MSM eUML defines the transitions like
> > >
> > > target == source + event [guard] / action
> > >
> > > but MSM-lite reverse the source and target
> > >
> > > src_state == dst_state + event[ guard ] / action This is confusing.
> > >
> > > Why have you chosen this syntax? Vicente
> > >
> > >
> >
> > Same question here. I misread the examples at first because the meaning
> is
> > reversed.
> > It feels unnatural that the state you are going to is part of the
> > expression stating the conditions to get there.
> >
> > The MSM syntax is clearer to me at least.
>
>
> I see your point. It seems like I will have to change the default behaviour
> then as it's clearer for most devs. Guess, I'm the ackward one here.
> Please, check the euML emulation example ->
>
> http://boost-experimental.github.io/msm-lite/examples/index.html#euml-emulation
> as DSL
> behaviour might be changed if it comes to states order by defining
> BOOST_MSM_DSL_DST_STATE_FIRST.
>
> If it comes to the transition table DSL. I was concidering a lot of
> options. For example MSM3(eUML2) is using src + event [guard] / action ->
> dst
> which looks great, however, having a dst state at the end is not really
> practical, especially after a lot of noice introduced by guard and actions
> (for example in place lambda expressions).
>
> Right now, I'm thinking of introducing DSL which would look like that.
>
> make_transition_table(
> "idle* -> state1"_t + event [ guard ] / action
> , "state1 -> X"_t [ guard ] / action
> );
>
> Nevertheless, I'm not sure whether such approach would be seen positively
> because following MSM approach it should be more like that.
>
> make_transition_table(
> "state1 <- idle*"_t + event [ guard ] / action
> , "X <- state1"_t [ guard ] / action
> );
>
> which looks confusing for me. Any thought on this?
>
>
I was going to suggest <= and => but I don't know the potential problems.

> Thanks for your feedback,
> Cheers, Kris
>
>
> _______________________________________________
> > Unsubscribe & other changes:
> > http://lists.boost.org/mailman/listinfo.cgi/boost
> >
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk