यह वास्तव में निर्भर करता है कि आप किस चीज से शुरू करते हैं और आप क्या करना चाहते हैं। एक आकार बिल्कुल फिट बैठता नहीं है।
यदि कोई एलआर व्याकरण है (उदाहरण के लिए आप एक Yacc व्याकरण से काम कर रहे हैं), तो यह पारसी या यू-पार्सिंगलिब के लिए उपयुक्त एलएल में बदलने के लिए काम का एक अच्छा सौदा है। हालांकि कई, sepBy आदि पार्सर्स यहां बहुत उपयोगी हैं, लेकिन आपको उम्मीद है कि पार्सर हैप्पी + एलेक्स से धीमे हो।
एलएल संयोजक पार्सिंग के लिए, यूयू-पार्सिंगलिब और यह पूर्ववर्ती यूयू-पार्सिंग अच्छा है लेकिन उनमें परसेक के टोकन और भाषा मॉड्यूल जैसे कुछ की कमी है, इसलिए शायद कम सुविधाजनक हैं। मैल्कम वालेस के परसेलिब जैसे कुछ लोग क्योंकि उनके पास बैकट्रैकिंग के लिए पारसेक के लिए एक अलग मॉडल है लेकिन मुझे उनका कोई अनुभव नहीं है।
यदि आप प्रोग्रामिंग भाषा की तरह कुछ स्वरूपित फ़ाइल को डीकोड कर रहे हैं, तो Attoparsec या इसी तरह Parsec या uu-parsinglib से बेहतर हो सकता है। इस संदर्भ में बेहतर तेज़ी से - बाइटस्ट्रिंग बनाम चार नहीं, लेकिन मुझे लगता है कि Attoparsec त्रुटि हैंडलिंग/स्रोत स्थान ट्रैकिंग के संबंध में कम काम करता है ताकि पार्सर्स को तेजी से चलाना चाहिए क्योंकि वे प्रति इनपुट तत्व कम काम कर रहे हैं।
इसके अलावा, ध्यान रखें कि पाठ फ़ाइल प्रारूपों में हमेशा व्याकरण नहीं हो सकते हैं, इसलिए आपको प्रत्येक कस्टम संयोजन के लिए "प्रत्येक पार्सर संयोजक" को परिभाषित करने के बजाय कुछ विशिष्ट संयोजन करने के लिए परिभाषित करना पड़ सकता है।
एलआर पार्सिंग के लिए, मुझे राल्फ हिनज़ का फ्राउन हैप्पी से बेहतर होने के लिए मिला - बेहतर त्रुटि समर्थन और व्याकरण फ़ाइलों के लिए एक अच्छा प्रारूप लेकिन फ्राउन सक्रिय रूप से बनाए रखा नहीं गया है और हैकेज पर नहीं है। मुझे लगता है कि यह एलआर (के) बल्कि एलआर (1) है जिसका अर्थ है कि यह अधिक शक्तिशाली w.r.t. है। भविष्य का ध्यान करना।
प्रदर्शन वास्तव में एक बड़ी चिंता नहीं है w.r.t. एक व्याकरण प्रोग्रामिंग भाषाओं में जटिल व्याकरण होते हैं, लेकिन आप काफी छोटी फ़ाइलों की अपेक्षा कर सकते हैं। डेटा फ़ाइल स्वरूपों के लिए यह प्रारूप के डिजाइनर को वास्तव में इस तरह डिजाइन करने के लिए व्यवहार करता है कि यह कुशल पार्सिंग की अनुमति देता है। संयोजक पार्सर्स के लिए आपको डेटा प्रारूप फ़ाइल के लिए कई उन्नत विशेषताओं की आवश्यकता नहीं होनी चाहिए - यदि आप करते हैं, तो प्रारूप खराब तरीके से डिज़ाइन किया गया है (यह कभी-कभी दुर्भाग्य से होता है) या आपका पार्सर होता है।
रिकॉर्ड के लिए मैंने फ्राउन के साथ एक सी पार्सर लिखा है, हैप्पी के साथ जीएल-छायांकन भाषा, यूयू_Parsing के साथ एक अधूरा सी पार्सर, और Parsec के साथ कई चीजें। मेरे लिए पसंद जो मैं शुरू करता था, एलआर व्याकरण - फ्राउन या हैप्पी (अब फ्राउन के रूप में हैप्पी नहीं रखा जाता है), अन्यथा आमतौर पर पारसेक (जैसा कि मैंने कहा था कि यूयू_परसे अच्छा है लेकिन भाषाडिफ की सुविधा की कमी है)। बाइनरी प्रारूपों के लिए मैं अपना खुद का रोल करता हूं, लेकिन मुझे आमतौर पर विशेष आवश्यकताएं होती हैं।
यह एक दिलचस्प जवाब है। क्या किसी के पास पैक्रेट पार्सिंग/पीईजी के बारे में बताने के लिए कोई राय या दिलचस्प कहानी है? http://pdos.csail.mit.edu/~baford/packrat/ – gawi
पीईजी पार्सर्स स्पष्ट रूप से एक बहुत ही रोचक तकनीक हैं और ब्रायन फोर्ड के काम के बाद वे अन्य भाषाओं में बहुत लोकप्रिय हैं। मेरी अपनी भावना यह है कि पापी पारसी की तुलना में बहुत कम "औद्योगिक ताकत" थी, इसलिए यह कभी भी हास्केल में नहीं निकला। अन्य भाषाओं के लिए पीईजी पार्सर्स एलआर पार्सर जनरेटर के साथ प्रतिस्पर्धा कर रहे थे जो बदले में लचीले हैं, इसलिए वे बहुत सफल रहे हैं। –
फ्रिसबी पेपर पर अच्छा दिखता है: http://repetae.net/computer/frisby/ – gawi