我正在寻找一个在状态机上实现有限状态机(或自动机)和运行时操作的 CXX 库?
在SageMath中,有一个模块有限状态机正是我正在寻找的。
我查看了以下库。但在所有这些中,状态机都应该在代码中指定。
-
有限状态机(前Boost.FSM)
-
TinyFSM
-
The Boost Statechart Library (boost::fsm)
-
提升元状态机 (MSM)
但我想add_state(s)
,delete_state(s)
,add_transition(s1,s2,input,output)
,delete_transition(t)
或类似的东西,在运行时。
是否有可用的 CXX 库?
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