2009-09-01 17 views
5

मैं दो भाषाओं के बीच एक अनुवादक लिखने के लिए, और इंटरनेट पर कुछ पढ़ने के बाद मैं ANTLR के साथ जाने का फैसला किया है चाहता हूँ खुश। मुझे इसे खरोंच से सीखना पड़ा, लेकिन बाएं रिकर्सन को खत्म करने के साथ कुछ परेशानी के अलावा सब कुछ ठीक हो गया।ANTLR बनाम बनाम अन्य पार्सर जनरेटर

बहरहाल, आज कुछ पुरुष मुबारक हो, एक Haskell आधारित पार्सर जेनरेटर की जाँच करने के लिए मुझे बताया था। मेरे पास कोई हास्केल ज्ञान नहीं है, इसलिए मैं कुछ सलाह का उपयोग कर सकता हूं, अगर हैप्पी वास्तव में एएनटीएलआर से बेहतर है और यदि यह सीखने लायक है।

विशेष रूप से क्या मुझे चिंतित है कि मेरी अनुवादक मैक्रो प्रतिस्थापन है, जो मैं विचार अभी तक कैसे ANTLR में करने के लिए कोई राशि का समर्थन की जरूरत है। शायद मुबारक हो यह करना आसान है?

या अगर लगता है कि अन्य पार्सर जनरेटर भी बेहतर कर रहे हैं, मैं उनके बारे में सुनने के लिए खुशी होगी।

+0

आप कहने के लिए सक्षम हैं, तो जानकारी के सबसे उपयोगी टुकड़ा आप अभी प्रदान कर सकता है एक है "स्रोत और लक्ष्य भाषाएं क्या हैं?" का उत्तर –

+0

@ 280Z28 वे घर में बनाई गई भाषाएं हैं। वे कुछ हद तक जावा के समान हैं, इस अंतर के साथ कि कक्षा में मैक्रो परिभाषाएं हो सकती हैं और फिर विधियों के अंदर मैक्रोज़ को विस्तारित करने की आवश्यकता होती है। – Gabriel

+1

इस बीच मुझे पता चला कि मेरी समस्या शुरुआती सोच से सरल है। मैं लेफ्टर में एएनटीएलआर के साथ ऐसा करने में कामयाब रहा, इसलिए अब हैप्पी या अन्य जनरेटर को तत्काल सीखने की जरूरत नहीं है। – Gabriel

उत्तर

5

लोग विश्वास करता है, तो वे सिर्फ एक पार्सर मिलता है, वे मिल गया है कि यह जब भाषा टूल बनाने रखने के लिए। बस गलत है। पार्सर्स आपको हिमालय के की तलहटी पर ले जाते हैं, तो आपको गंभीरता से चढ़ना शुरू करना होगा।

यदि आप भाषा अनुवादकों के निर्माण के लिए औद्योगिक-शक्ति समर्थन चाहते हैं, तो हमारे DMS Software Reengineering Toolkit देखें। डीएमएस,

  • यूनिकोड आधारित lexers
  • पूर्ण विषय से मुक्त पारसर्स प्रदान करता है (बाएं प्रत्यावर्तन? कोई समस्या नहीं! मनमानी अग्रदर्शी? कोई बात नहीं। अस्पष्ट व्याकरण? कोई बात)
  • पूर्ण सामने के लिए सी, सी # समाप्त होता है कोबोल, जावा, सी ++, जावा स्क्रिप्ट, ...
  • ASTs का स्वत: निर्माण (सी और सी के लिए पूर्ण preprocessors ++ सहित) मनमाना scoping नियमों के साथ प्रतीक तालिकाओं के निर्माण
  • attrib के लिए
  • समर्थन पेड़ संरचना का लाभ उठाने वाले विश्लेषकों का निर्माण करने के लिए व्याकरण मूल्यांकन
  • नियंत्रण और डेटा प्रवाह विश्लेषण (साथ ही पूर्ण सी, जावा और कोबोल के लिए इसका अहसास) के लिए समर्थन,
  • सिंटैक्स का उपयोग करके स्रोत-से-स्रोत परिवर्तन स्रोत और लक्ष्य भाषा
  • एएसटी स्रोत कोड prettyprinting करने, लक्ष्य भाषा पाठ

पुन: पेश करने मैक्रो को संभालने के लिए ओ पी के अनुरोध के बारे में: हमारे सी, कोबोल और सी ++ सामने समाप्त होता है एक से उनके संबंधित भाषा preprocessing संभाल) पूर्ण विस्तार की पारंपरिक विधि या बी) गैर-विस्तार (जहां व्यावहारिक) पोस्ट-पार्सिंग ट्रांसफॉर्म को सक्षम करने के लिए खुद मैक्रोज़ का mation। जबकि नींव के रूप में डीएमएस विशेष रूप से मैक्रो प्रोसेसिंग को लागू नहीं करता है, यह इसके निर्माण और परिवर्तन का समर्थन कर सकता है।

डीएमएस के साथ बनाए गए अनुवादक के उदाहरण के रूप में, converting JOVIAL to C for the B-2 bomber की चर्चा देखें। यह हार्डरीयल टाइम कोड के 1 एमएसएलओसी के लिए 100% अनुवाद है। [यह आपको यह जानकर आश्चर्यचकित कर सकता है कि हमें कभी भी वास्तविक कार्यक्रम का अनुवाद करने की अनुमति नहीं दी गई थी (शीर्ष रहस्य)।]। और हाँ, जॉवल के पास प्रीप्रोसेसर है, और हां हमने समकक्ष सी संस्करणों में अधिकांश जॉवल मैक्रोज़ का अनुवाद किया है।

[हास्केल एक अच्छी प्रोग्रामिंग भाषा है लेकिन यह ऐसा कुछ भी नहीं करता है। यह भाषा में व्यक्त करने योग्य नहीं है।पता लगाना क्या मशीनरी से छेड़छाड़ कार्यक्रमों के कार्य का समर्थन करने के लिए आवश्यक है, और खर्च 100 मानव-वर्ष यह निर्माण के बारे में इसकी।]

+1

@ इरा बैक्सटर - यह छोटी दुनिया है, आप मुझसे दूरी चल रहे हैं। : ओ –

+0

ओह, "यह एक महान टिप्पणी है" पर "ऊपर" बटन दबाएं। आपको मेरे हिचकी से फायदा होता है। मेरे उपयोगकर्ता पंजीकरण पृष्ठ से मेरा ईमेल पता ढूंढें और मुझे एक प्रारंभिक नोट भेजें; यहां कुछ मजेदार बातचीत हो सकती है। –

+1

यह कमाल है। हालांकि मुझे लगता है कि आप ओपन सोर्स समुदाय में ऐसा कुछ नहीं ढूंढ सकते हैं। – Gabriel

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