8
votes

Générateur de machine d'état C ++

Êtes-vous au courant des générateurs de code C ++ de la machine C ++ (qui fonctionnera sur Linux)? Idéalement, l'outil émettrait toute la logique de la machine à états et les talons. En outre, cela accepterait des fichiers manifestes lisibles par l'UML ou l'homme comme entrée.


5 commentaires

Avez-vous regardé BOOST.MSM ? Il a un EDSL destiné à Mimic UML et possède une superbe performance d'exécution.


Lex et Yacc génèrent définitivement des machines d'état et g ++ :)


Je suggérerais SMC mais cela ne prend pas en charge UML.


@Perreal: C'était ma première pensée aussi. La question est trop large.


J'ai trouvé cet article assez bon sur le sujet Security.hsr.ch/mse/projects/...


6 Réponses :


5
votes

Ragel a une très bonne réputation.

(Je n'ai aucune expérience spécifique avec elle).


1 commentaires

+1 sur Ragel - Performance d'exécution décente avec une mise en œuvre du baiser.



0
votes

La chose la plus proche que j'ai vue qui pourrait travailler pour vous est StateProto. Mais il génère le code C #.

Vous devriez vérifier StateProto et QHSM. Le projet Open Source est ici: http://code.google.com/p/gqhsm/

StateProto est open source et les fonctions de sortie peuvent être modifiées pour vous donner le code C ++ pour vous. Mais il utilise des délégués.

Je vous recommanderais d'utiliser une conception de données pilotée à la place. StateProto produira des machines d'état XML et il y a un code C # pour charger le XML et entraînera la machine d'état des données.

Vous pouvez trouver de nombreuses implémentations QHSM en C ++. Je ne sais pas si vous avez des chargeurs XML disponibles.


0 commentaires

1
votes

Vous trouverez peut-être mon cadre STTCL intéressant. Ce n'est pas un générateur, mais les classes disponibles (base) sont très bien les définitions UML STecharTart.
http://makulik.github.com/stttcl/


0 commentaires

0
votes

Vérifiez la structure de la machine d'état QP / C ++ Source et l'outil de modélisation QM gratuit (voir http: / /www.state-machine.com ). Le framework QP / C ++ prend en charge les machines d'état hiérarchique (UML STETCHARTS) et vous permet d'exécuter simultanément plusieurs machines d'état de ce type. QP / C ++ a été porté sur Linux (voir http://www.state-machine.com/Linux --/ a>).

Maintenant, concernant le générateur de code, l'outil de modélisation QM gratuit (voir http: //www.state- Machine.com/qm ) Vous permet de dessiner des diagrammes de machine à états et de générer du code C ++ pour le cadre QP / C ++. QM elle-même est multiplate-forme et fonctionne sous Linux, ainsi que Windows et Mac OS X.


0 commentaires

3
votes

Jetez un coup d'œil à Thingml . Il fournit une syntaxe textuelle (indépendante de c) pour les machines d'état similaires à l'UML. Quelque chose comme: xxx

chrkml peut générer un code C pouvant être facilement incorporé dans les programmes C ++. Cela peut générer plus que des embouts. Nous pouvons en effet générer un code entièrement opérationnel. Bien sûr, en ce qui concerne les détails de la mise en œuvre de bas niveau, nous fournissons une moyenne pour mélanger le code ThingML avec C code C.

Notez que nous cible également Java et JavaScript


0 commentaires

4
votes

Vous devriez jeter un oeil à Yakindu: http://statechat.org/


0 commentaires