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

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

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

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

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

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

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

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

बाहरी संबंध

 * Parsec on the Haskell wiki
 * Parsec on Hackage