【发布时间】:2015-05-17 05:17:41
【问题描述】:
我已经看到了许多不同的方法来实现 FSM。
开关盒 函数指针表 面向对象编程
我的问题是,在选择一种实现方式而不是另一种实现方式时,我应该注意哪些主要因素。在我的情况下,我只有 4 个状态,每个状态最多有 2 个转换。我的主要目标是让实现易于阅读,其他人可以修改。
谢谢
【问题讨论】:
-
看看 boost msm。您还可以在他们的文档中看到优缺点。在你描述的这个非常简单的状态机中,这可能有点过头了,但 msm 将提供一个非常易读的转换表
-
我猜你可以考虑的一件事是为 FSM 使用升压灵气解析器?既然你说你的 FSM 很小——如果它很自然地对应于正则表达式,并且你认为这比编写转换表更简单,那么以语法形式(使用语义动作?)可能值得考虑。如果您在大学学习过计算理论,那么您可能在某个时候了解到 FSM 和(简单)正则表达式在形式上是等价的(但不是像 perl 和 grep 中使用的超级正则表达式)
标签: c++ fsm state-machine