मैंने हाल ही में एक मौजूदा उपकरण में स्रोत फ़ाइल पार्सिंग जोड़ा है जो जटिल कमांड लाइन तर्कों से आउटपुट फ़ाइलों को उत्पन्न करता है।क्या सी ++ के लिए टोकननाइज़र उत्पन्न करने के लिए लेक्स/फ्लेक्स की तुलना में बेहतर (अधिक आधुनिक) उपकरण है?
कमांड लाइन तर्क इतने जटिल हो गए कि हमने उन्हें एक फ़ाइल के रूप में आपूर्ति करने की अनुमति देना शुरू कर दिया था, जैसे कि यह बहुत बड़ी कमांड लाइन थी, लेकिन वाक्यविन्यास अभी भी अजीब था। इसलिए मैंने एक अधिक उचित वाक्यविन्यास का उपयोग करके एक स्रोत फ़ाइल को पार्स करने की क्षमता को जोड़ा।
मैंने इस कस्टम स्रोत फ़ाइल प्रारूप के लिए टोकनेज़र उत्पन्न करने के लिए विंडोज़ के लिए फ्लेक्स 2.5.4 का उपयोग किया, और यह काम किया। लेकिन मुझे कोड से नफरत है। वैश्विक चर, व्यापक नामकरण सम्मेलन, और उत्पन्न सी ++ कोड भयानक था। मौजूदा कोड पीढ़ी बैकएंड फ्लेक्स के आउटपुट पर चिपकाया गया था - मैं yacc या bison का उपयोग नहीं करता हूं।
मैं उस कोड में वापस जा रहा हूं, और मैं एक बेहतर/अधिक आधुनिक उपकरण का उपयोग करना चाहता हूं। क्या किसी को कुछ पता है।
- Windows में रन कमांड प्रॉम्प्ट (विजुअल स्टूडियो एकीकरण ठीक है, लेकिन मैं का निर्माण करने की फ़ाइलों का उपयोग करें)
- उत्पन्न करता है एक उचित समझाया सी ++ tokenizer। (कोई वैश्विक चर)
- tokenizing नियम
- मुझे सी क्रम का उपयोग करने के लिए मजबूर नहीं करता है (या इसे नकली) फ़ाइल पढ़ने के लिए (लेक्स वाक्य रचना एक प्लस के साथ संगत) वर्णन करने के लिए नियमित अभिव्यक्ति का उपयोग करता है। (स्मृति से पार्स)
- मुझे चेतावनी जब मेरे नियमों को पीछे tokenizer मजबूर (या यह स्वचालित रूप से ठीक करता है)
- मुझे चर और विधि के नाम पर पूरा नियंत्रण देता है (इसलिए मैं अपने मौजूदा नामकरण सम्मेलन के अनुरूप कर सकते हैं)
- मुझे नाम टकराव के बिना एक .exe में कई पारसर्स से जोड़ने के लिए
- एक यूनिकोड (16 बिट यूसीएस -2) पार्सर उत्पन्न कर सकता हूँ अगर मैं चाहता हूँ यह करने के लिए
- एक एकीकृत tokenizer + पार्सर जनरेटर नहीं है (मैं एक लेक्स चाहते अनुमति देता है प्रतिस्थापन, एक lex + yacc प्रतिस्थापन नहीं)
मैं शायद ऐसे टूल के साथ रह सकता हूं जो टोकनिंग टेबल उत्पन्न करता है अगर वह केवल एकमात्र चीज उपलब्ध हो।
बूस्ट। पाइरेट, बूस्ट.प्रोटो और बूस्ट.एक्सप्रेसिव विकल्प नहीं हैं? –
@ कोनराड: वे हो सकते हैं, मैं उनसे परिचित नहीं हूं। सी ++ वर्ग की बजाय टेम्पलेट जेनरेट करने वाला कुछ स्वीकार्य होगा। –