2008-10-05 28 views
11

मैं सी #/.NET के लिए एक सभ्य लेक्सिकल स्कैनर जेनरेटर ढूंढ रहा हूं - कुछ ऐसा जो यूनिकोड चरित्र श्रेणियों का समर्थन करता है, और कुछ पठनीय & कुशल कोड उत्पन्न करता है। किसी को भी पता है?सी #/.NET लेक्सर जेनरेटर


संपादित करें: मैं जरूरत यूनिकोड श्रेणियों, न सिर्फ यूनिकोड वर्ण के लिए समर्थन करते हैं। वर्तमान में केवल Lu (पत्र, अपरकेस) श्रेणी में 1421 वर्ण हैं, और मुझे विशेष रूप से कई अलग-अलग श्रेणियों से मेल खाना पड़ेगा, और इसके लिए आवश्यक चरित्र सेटों को हाथ से लिखना नहीं होगा। ANTLR का समर्थन नहीं करता: यह चीजें हैं जो एक बाइनरी फ़ाइल है कि फिर एक ड्राइवर के साथ प्रयोग किया जाता है (यानी स्वर्ण) उत्पन्न बाहर नियम


संपादित करें -

इसके अलावा, वास्तविक कोड एक चाहिए है यूनिकोड श्रेणियां अभी तक। इसके लिए open issue है, हालांकि, यह किसी दिन मेरी आवश्यकताओं को फिट कर सकता है।

उत्तर

8

GPLEX आपकी आवश्यकताओं का समर्थन करता प्रतीत होता है।

+0

मैंने कभी भी कैसे किया जीपीपीजी के बारे में जानें? –

+0

मैं इसे कई वर्षों से उपयोग कर रहा हूं :) हाल ही में (पिछले साल) GPLEX। – leppie

1

दिमाग में आने वाले दो समाधान ANTLR और Gold हैं। एएनटीएलआर में एक जीयूआई आधारित व्याकरण डिजाइनर है, और सी # can be found here में एक उत्कृष्ट नमूना प्रोजेक्ट है।

+0

गोल्ड उत्पन्न करता है नहीं/कोड/lexer के लिए - यह एक विशेष बाइनरी फ़ाइल है कि एक चालक तो कार्यावधि में पढ़ता है बनाता है। Antlr के लिए, मुझे कुछ भी नहीं मिल रहा है जो यह भी दर्शाता है कि यह यूनिकोड/कक्षाओं का समर्थन करता है/(ऐसा लगता है कि यह निर्दिष्ट यूनिकोड वर्णों की अनुमति देता है, लेकिन पूरे वर्ग नहीं) –

+0

एएनटीएलआर यूनिकोड चरित्र वर्गों का समर्थन नहीं करता – artur02

1

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

एक तरफ नोट: एएनटीएलआर बहुत अच्छा है ... मैंने 10+ या सी # कोड उत्पन्न करने के लिए एक 400+ लाइन व्याकरण लिखा है ताकि एक भाषा को कुशलतापूर्वक पार्स किया जा सके। इसमें प्रत्येक संभावित चीज़ के लिए त्रुटि जांच में बनाया गया था जो भाषा के विश्लेषण में गलत हो सकता है। हाथ से ऐसा करने की कोशिश करें, और आप कभी भी बग के साथ नहीं रहेंगे।

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