用于有限状态机的CXX库/具有运行时操作的自动机

时间:2017-01-17 18:12:07

标签: c++ boost

我正在寻找一个CXX库,它通过状态机上的运行时操作实现有限状态机(或自动机)?

在SageMath中,有一个模块Finite State Machines正是我正在寻找的。

我看了下面的图书馆。但是在所有这些中,应该在代码中指定状态机。

但我想select min(DURATION_MACRO_CURR) as min_val, min(case when seqnum / 0.25 >= cnt then DURATION_MACRO_CURR end) as 25_percentile, min(case when seqnum / 0.50 >= cnt then DURATION_MACRO_CURR end) as 50_percentile, min(case when seqnum / 0.75 >= cnt then DURATION_MACRO_CURR end) as 75_percentile, max(DURATION_MACRO_CURR) as max_val from (select pc.*, row_number() over (order by DURATION_MACRO_CURR) as seqnum, count(*) over () as cnt from PROD_EXP_DL_CVM.PROD_CVM pc where pc.PW_END_DATE = '2016-10-18' ) pc; add_state(s)delete_state(s)add_transition(s1,s2,input,output)  或类似的东西,在运行时

是否有可用的CXX库?

1 个答案:

答案 0 :(得分:0)

Qt的QStateMachine可以做到这一点。

首先,创建一个状态机。

QStateMachine sm;

然后,创建状态。

QState *s1 = new QState();
QState *s2 = new QState();

您可以按如下方式将状态添加到状态:

//                Event source  Event        Transition to state
s1->addTransition(button, SIGNAL(clicked()), s2);

最后,将状态机添加到状态,如下所示:

sm.addState(s1);

这意味着您可以动态创建状态机,状态和转换。

这是一份文件:

http://doc.qt.io/qt-5/statemachine-api.html