c++状态机生成器
c++ state machine generator
您知道有任何开源状态机c++代码生成器(可以在linux上工作)吗?理想情况下,该工具将输出所有状态机逻辑和存根。它还将接受UML或人类可读的清单文件作为输入。
Ragel有着不错的声誉。
(我没有具体的经验)。
您应该看看Yakindu:http://statecharts.org/
看看Thingml。它为类似UML的状态机提供了一种文本语法(独立于C)。类似于:
import "../hardware/bricks/led.thingml"
thing Blink includes LedMsgs, TimerMsgs
{
required port HW
{
sends led_toggle, timer_start
receives timer_timeout
}
statechart BlinkImpl init Blinking
{
state Blinking
{
on entry HW!timer_start (1000)
transition -> Blinking
event HW?timer_timeout
action HW!led_toggle ()
}
}
}
ThingML可以生成C代码,这些代码可以很容易地嵌入C++程序中。它实际上可以生成的不仅仅是存根。我们确实可以生成完全可操作的代码。当然,当涉及到底层实现细节时,我们提供了一种将ThingML代码与C代码混合的方法。
请注意,我们还针对Java和JavaScript
您可能会发现我的STTCL框架很有趣。它不是生成器,但可用的(基类)可以很好地映射到UML状态图定义
http://makulik.github.com/sttcl/
我见过的最适合您的东西是StateProto。但它输出C#代码。
您应该查看StateProto和QHSM。开源项目在这里:http://code.google.com/p/gqhsm/
StateProto是开源的,可以修改输出函数为您输出c++代码。但它使用代理。
我建议您使用数据驱动的设计。StateProto将输出XML状态机,并且有C#代码来加载XML并从数据中驱动状态机。
您可以在c++中找到大量的QHSM实现。我不知道是否有可用的XML加载程序。
看看开源QP/C++状态机框架和免费的QM建模工具(请参阅http://www.state-machine.com)。QP/C++框架支持分层状态机(UML状态图),并允许您同时执行多个这样的状态机。QP/C++已移植到Linux(请参阅http://www.state-machine.com/linux)。
现在,关于代码生成器,免费的QM建模工具(请参阅http://www.state-machine.com/qm)允许您绘制状态机图并为QP/C++框架生成C++代码。QM本身是跨平台的,在Linux、Windows和Mac OS X上运行。
- 如何在使用 Boost MSM 编写的状态机中直接访问任何状态
- 启动状态机无法在启动时处理内部转换
- 实现C++状态机.如何解决Wpmf对流警告
- 无法使用模板参数编译提升元状态机
- Boost状态机语言-"操作"中的"发布"事件
- 将C++数据模型与Qt SCXML状态机一起使用
- 如何在 boost::msm 中实现可以访问状态机 (SM) 的后端/前端的"BaseState"
- 分层状态机涉及哪些原则,以及如何实现基本模型?
- 如何在状态内创建状态机?
- 状态机与开关情况
- C++状态机,继承了具有语法不正确的成员值的类
- c++有限状态机
- CXX 库,用于具有运行时操作的有限状态机/自动机
- QTSCXML状态机中的事件处理
- 如何动态创建状态机
- 状态机表示
- 将Java状态机示例转换为C++,陷入最后一道障碍
- QT状态机:如何在初始状态下设置防护措施
- 在Boost Meta状态机的后端访问前端
- 如何将有限状态机集成到我的应用程序中