c++;状态机生成器 你知道有什么开源状态机C++代码生成器(在Linux上工作吗?)理想情况下,该工具将输出所有状态机逻辑和存根。它还将接受UML或人类可读的清单文件作为输入
有很好的声誉c++;状态机生成器 你知道有什么开源状态机C++代码生成器(在Linux上工作吗?)理想情况下,该工具将输出所有状态机逻辑和存根。它还将接受UML或人类可读的清单文件作为输入,c++,code-generation,state-machine,C++,Code Generation,State Machine,有很好的声誉 (我没有这方面的具体经验)。我见过的最适合你的东西是StateProto。但它输出C#代码 您应该查看StateProto和QHSM。开源项目在这里: StestEndoto是开源的,可以修改输出函数,为您输出C++代码。但它使用代理 我建议您改用数据驱动的设计。StateProto将输出XML状态机,并且有C#代码来加载XML并从数据驱动状态机 你可以在C++中找到大量的QHSM实现。我不知道是否有XML加载器可用。您可能会发现我的STTCL框架很有趣。它不是一个生成器,但可用
(我没有这方面的具体经验)。我见过的最适合你的东西是StateProto。但它输出C#代码 您应该查看StateProto和QHSM。开源项目在这里:
StestEndoto是开源的,可以修改输出函数,为您输出C++代码。但它使用代理
我建议您改用数据驱动的设计。StateProto将输出XML状态机,并且有C#代码来加载XML并从数据驱动状态机<>你可以在C++中找到大量的QHSM实现。我不知道是否有XML加载器可用。您可能会发现我的STTCL框架很有趣。它不是一个生成器,但可用的(基本)类非常好地映射到UML状态图定义。
看看开源的QP/C++状态机框架和免费的QM建模工具(请参阅)。QP/C++框架支持分层状态机(UML状态图),并允许您同时执行多个这样的状态机。QP/C++已经移植到Linux(请参阅)
现在,关于代码生成器,自由QM建模工具(见)允许您绘制状态机图并生成QP/C++框架的C++代码。QM本身是跨平台的,运行在Linux、Windows和Mac OS X上。
请看一看。它为类似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 ()
}
}
}
THIGML可以生成C代码,可以很容易地嵌入到C++程序中。它实际上可以生成多个存根。我们确实可以生成完全可操作的代码。当然,当涉及到底层实现细节时,我们提供了将ThingML代码与C代码混合的方法
请注意,我们还针对Java和JavaScript您应该看看Yakindu:您看过吗?它有一个模拟UML的EDSL,运行时性能极佳。lex和yacc肯定会生成状态机,g++:)我建议,但它不支持UML。@perreal:这也是我的第一个想法。问题太宽泛了,我发现这篇文章在Ragel上的主题+1上做得相当不错,这是一个KISS实现的体面的运行时性能。