पारसेक (पार्सर)

पारसेक, हास्केल प्रोग्रामिंग भाषा में पार्सर लिखने के लिए एक लाइब्रेरी है। यह उच्च-क्रम पार्सर कॉम्बिनेटर पर आधारित है, इसलिए एक कॉम्प्लेक्स पार्सर कई छोटे पार्सरों से निर्मित किया जा सकता है।

पारसेक को कई अन्य प्रोग्रामिंग लैंग्वेज, जैसे एरलांग, अलिक्सर, ओकैमल, और एफ शार्प (एफ#), सी शार्प (सी#), और जावा में कार्यान्वित किया गया है।

चूंकि पार्सर कॉम्बिनेटर-आधारित प्रोग्राम सामान्यतः पार्सर जनरेटर प्रोग्राम की तुलना में धीमा होता है, पारसेक का उपयोग सामान्यतः छोटी डोमेन-स्पेसिफिक लैंग्वेज के लिए किया जाता है, जबकि हैप्पी का उपयोग ग्लासगो हास्केल कंपाइलर जैसे कंपाइलरों के लिए किया जाता है।

पारसेक से प्राप्त अन्य हास्केल पार्सर कॉम्बिनेटर लाइब्रेरी में, मेगापारसेक और एटोपार्सेक सम्मिलित है ।

पारसेक बीएसडी-3-क्लॉज लाइसेंस के अंतर्गत जारी किया गया ओपन सॉफ्टवेयर है।

उदाहरण
पारसेक में लिखे गए पार्सर सरल पार्सर से शुरू होते हैं, जैसे कि वे जो कुछ स्ट्रिंग्स को पहचानते हैं, और उन्हें अधिक जटिल व्यवहार के साथ एक पार्सर बनाने के लिए जोड़ते हैं। उदाहरण के लिए,  एक अंक को पार्स करता है, और   एक विशिष्ट स्ट्रिंग को पार्स करता है (जैसे  ).

पार्सेक जैसे पार्सर कॉम्बिनेटर लाइब्रेरी पार्सर्स को वास्तविक मूल्यों पर चलाने के लिए उपयोगिता कार्य प्रदान करते हैं। एक स्ट्रिंग से एकल अंक को पहचानने के लिए एक पार्सर को दो कार्यों में विभाजित किया जा सकता है: एक पार्सर बनाने के लिए, और एक  वह फ़ंक्शन जो इन उपयोगिता फ़ंक्शंस में से किसी एक को कॉल करता है (  इस मामले में) पार्सर चलाने के लिए: हम परिभाषित करते हैं ए   प्रकार का हस्ताक्षर बनाने के लिए टाइप करें   पढ़ने में आसान. यदि हम इस प्रोग्राम को बदलना चाहते हैं, तो किसी एक स्ट्रिंग को पढ़ने के लिए कहें  या स्ट्रिंग , हम ऑपरेटर का उपयोग कर सकते हैं  , द्वारा प्रदान किया गया   टाइपक्लास, दो पार्सर्स को एक एकल पार्सर में संयोजित करने के लिए जो या तो कोशिश करता है:

बाहरी संबंध

 * Parsec on the Haskell wiki
 * Parsec on Hackage