¿Conocen los generadores de código de máquina de estado de código abierto (que funcionarán en Linux)? Lo ideal es que la herramienta genere toda la lógica de estado de la máquina y los stubs. También aceptaría UML o archivos de manifiesto legibles por humanos como entrada.Generador de máquinas de estado C++
Respuesta
Lo más parecido que he visto que podría funcionar para usted es StateProto. Pero emite el código C#.
Debería echar un vistazo a StateProto y QHSM. El proyecto de código abierto está aquí: http://code.google.com/p/gqhsm/
StateProto es de código abierto y las funciones de salida se pueden modificar para producir código de C++ por usted. Pero usa delegados.
Yo recomendaría que utilice un diseño basado en datos en su lugar. StateProto generará máquinas de estado XML y existe un código C# para cargar el XML e impulsar la máquina de estado desde los datos.
Puede encontrar muchas implementaciones de QHSM en C++. No sé si alguno tiene cargadores XML disponibles.
Puede encontrar mi marco STTCL interesante. No es un generador, pero las clases disponibles (base) se corresponden muy bien con las definiciones de diagrama de estado UML.
http://makulik.github.com/sttcl/
Tome un vistazo a la QP C marco máquina de estados de código abierto/++ y la herramienta de modelado libre de QM (ver http://www.state-machine.com). El marco QP/C++ admite máquinas de estado jerárquico (gráficos de estado UML) y le permite ejecutar varias máquinas de estado al mismo tiempo. QP/C++ ha sido portado a Linux (ver http://www.state-machine.com/linux).
Ahora, con respecto al generador de código, la herramienta gratuita de modelado QM (ver http://www.state-machine.com/qm) le permite dibujar diagramas de máquina de estado y generar código C++ para el marco QP/C++. QM en sí mismo es multiplataforma y se ejecuta en Linux, así como en Windows y Mac OS X.
Eche un vistazo a Thingml. Proporciona una sintaxis textual (independiente de C) para máquinas de estados de tipo UML. Algo así como:
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 puede generar código C que puede ser fácilmente integrado en los programas en C++. En realidad, puede generar más de talones. De hecho, podemos generar un código completamente operativo. Por supuesto, cuando se trata de detalles de implementación de bajo nivel, proporcionamos un medio para mezclar código ThingML con código C.
Tenga en cuenta que también nos dirigimos a Java y JavaScript
Usted debe echar un vistazo a Yakindu: http://statecharts.org/
- 1. ¿C# incluye máquinas de estado finito?
- 2. Estado de distribución en muchas máquinas
- 3. Implementación de máquinas de estado líquido
- 4. Múltiples máquinas de estado en un modelo?
- 5. generador de copia del generador de C#
- 6. ¿Hay algún programa para dibujar y probar máquinas de estado, máquinas de turing, etc.?
- 7. Máquinas de estados en C
- 8. Cómo escribir máquinas de estados con C#?
- 9. generador de código C#
- 10. Marco de aprendizaje de máquinas C++
- 11. c - generador de números aleatorios
- 12. Generador de C# aleatorio real
- 13. C# API generador
- 14. C++ Generador de código de esquema XML
- 15. máquinas virtuales
- 16. Biblioteca de máquinas de vectores de soporte para C#
- 17. Generador de documentación Visual studio C++
- 18. C# A Bigint al azar generador de
- 19. Windows Phone 7 - Generador de iCal - C#
- 20. ¿Cómo puedo almacenar el estado del generador pseudoaleatorio en Perl?
- 21. ¿Hay un buen módulo de CPAN para implementar máquinas de estado al analizar texto?
- 22. Generador CRUD simple para C#
- 23. Documentación-generador para Objective-C?
- 24. C++ estado de consulta atomic_flag
- 25. ¿Cuál es la forma estándar de obtener el estado de un generador de números aleatorios C++ 0x?
- 26. Crappy generador de números aleatorios
- 27. Dynamic State Machine en Ruby? ¿Las máquinas de estado deben ser clases?
- 28. construcción usando múltiples máquinas
- 29. Generador de código Python
- 30. Un generador de código C++ de una especificación XML
¿Ha mirado [Boost.MSM] (http://www.boost.org/libs/ msm /)? Tiene un EDSL destinado a imitar a UML y tiene un excelente rendimiento en tiempo de ejecución. – ildjarn
lex y yacc definitivamente generan máquinas de estado, y g ++:) – perreal
Sugeriría [SMC] (http://smc.sourceforge.net/) pero no es compatible con UML. – tinman