2012-03-15 14 views
7

क्या आप किसी भी ओपनसोर्स स्टेट मशीन सी ++ कोड जेनरेटर (जो लिनक्स पर काम करेंगे) के बारे में जानते हैं? आदर्श रूप से उपकरण सभी राज्य मशीन तर्क और स्टब्स आउटपुट करेगा। इसके अलावा यह इनपुट के रूप में यूएमएल या मानव पठनीय मेनिफेस्ट फाइलों को स्वीकार करेगा।सी ++ राज्य मशीन जेनरेटर

+7

आप [Boost.MSM] को देखा है (http://www.boost.org/libs/ MSM /)? इसमें यूएमएल की नकल करने के लिए एक ईडीएसएल है और इसमें शानदार रनटाइम प्रदर्शन है। – ildjarn

+5

लेक्स और वाईएसी निश्चित रूप से राज्य मशीनें उत्पन्न करते हैं, और जी ++:) – perreal

+0

मैं सुझाव दूंगा [एसएमसी] (http://smc.sourceforge.net/) लेकिन यह यूएमएल का समर्थन नहीं करता है। – tinman

उत्तर

4

Ragel की एक अच्छी अच्छी प्रतिष्ठा है।

(मुझे इसके साथ कोई विशिष्ट अनुभव नहीं है)।

+0

पर रागल पर +1 अच्छा लगता है - एक KISS कार्यान्वयन के साथ सभ्य रनटाइम प्रदर्शन। – JimR

0

मैंने देखा है कि सबसे नज़दीकी चीज जो आपके लिए काम कर सकती है वह राज्यप्रोटो है। लेकिन यह सी # कोड आउटपुट करता है।

आपको स्टेटप्रोटो और क्यूएचएसएम देखना चाहिए। ओपन सोर्स प्रोजेक्ट यहां है: http://code.google.com/p/gqhsm/

स्टेटप्रोटो ओपन सोर्स है और आउटपुट फ़ंक्शंस आपके लिए आउटपुट C++ कोड में संशोधित किया जा सकता है। लेकिन यह प्रतिनिधियों का उपयोग करता है।

मैं अनुशंसा करता हूं कि आप इसके बजाय डेटा संचालित डिज़ाइन का उपयोग करें। स्टेटप्रोटो एक्सएमएल स्टेट मशीनों का उत्पादन करेगा और एक्सएमएल लोड करने के लिए सी # कोड होगा और डेटा मशीन को डेटा से ड्राइव करेगा।

आप सी ++ में बहुत सारे क्यूएचएसएम कार्यान्वयन पा सकते हैं। मुझे नहीं पता कि किसी के पास एक्सएमएल लोडर उपलब्ध हैं या नहीं।

1

आपको मेरा एसटीटीसीएल ढांचा दिलचस्प लगेगा। यह जनरेटर नहीं है, लेकिन उपलब्ध (आधार) कक्षाएं यूएमएल स्टेटचार्ट परिभाषाओं के लिए बहुत अच्छी तरह से मानचित्र हैं।
http://makulik.github.com/sttcl/

0

खुला स्रोत QP/C++ राज्य मशीन ढांचे पर एक नज़र और QM मॉडलिंग उपकरण (http://www.state-machine.com देखें) ले लो। क्यूपी/सी ++ ढांचा पदानुक्रमित राज्य मशीनों (यूएमएल स्टेटचार्ट्स) का समर्थन करता है और आपको एक साथ कई ऐसी राज्य मशीनों को निष्पादित करने की अनुमति देता है। क्यूपी/सी ++ को लिनक्स पर पोर्ट किया गया है (http://www.state-machine.com/linux देखें)।

अब कोड जनरेटर के बारे में, मुफ्त क्यूएम मॉडलिंग टूल (http://www.state-machine.com/qm देखें) आपको राज्य मशीन आरेख तैयार करने और क्यूपी/सी ++ ढांचे के लिए सी ++ कोड उत्पन्न करने की अनुमति देता है। क्यूएम स्वयं क्रॉस-प्लेटफार्म है और लिनक्स पर चलता है, साथ ही विंडोज और मैक ओएस एक्स

0

Thingml पर एक नज़र डालें। यह यूएमएल जैसी राज्य मशीनों के लिए एक पाठ वाक्यविन्यास (सी से स्वतंत्र) प्रदान करता है। कुछ ऐसा:

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() 
     } 
    } 
} 

थिंगएमएल सी कोड उत्पन्न कर सकता है जिसे आसानी से सी ++ प्रोग्राम में एम्बेड किया जा सकता है। यह वास्तव में स्टब्स से अधिक उत्पन्न कर सकते हैं। हम वास्तव में पूरी तरह से ऑपरेशन कोड उत्पन्न कर सकते हैं। बेशक, जब निम्न स्तर के कार्यान्वयन के विवरण की बात आती है, तो हम सी कोड के साथ थिंगएमएल कोड को मिश्रण करने का मतलब प्रदान करते हैं।

ध्यान दें कि हम भी लक्षित करते जावा और जावास्क्रिप्ट

संबंधित मुद्दे