2010-03-13 9 views
7

जटिल बाइनरी फ़ाइल प्रारूपों को पार्स करने के लिए पहले मुझे अटॉपरसेक का सुझाव दिया गया था। जबकि मैं attoparsec पार्सिंग HTTP के उदाहरण पा सकते हैं, जो अनिवार्य रूप से पाठ आधारित है, मुझे वास्तविक बाइनरी को पार्स करने का एक उदाहरण नहीं मिल रहा है, उदाहरण के लिए, एक टीसीपी पैकेट, या छवि फ़ाइल, या एमपी 3। क्या कोई कुछ कोड या पॉइंटर को कुछ कोड पर पोस्ट कर सकता है जो इसे अटोपर्ससेक का उपयोग करता है?बार्सरी फ़ाइल प्रारूपों को पार्स करने में अटोपारसेक के उदाहरण?

उत्तर

9

बाइनरी प्रारूपों को पार्स करने के लिए एटोपारसेक के कुछ या कोई उदाहरण नहीं हैं, क्योंकि पारसी-शैली संयोजनकर्ता पार्सिंग ज्यादातर टेक्स्ट प्रारूपों के लिए है, बाइनरी प्रारूप नहीं है (हालांकि इसके लिए कोई अच्छा कारण नहीं है)।

सीधे द्विआधारी पार्स के लिए, Data.Binary देखते हैं, उदाहरणों में शामिल हैं:

और रियल वर्ल्ड हास्केल में उदाहरण।

फिलहाल अटॉपरसेक का मुख्य उदाहरण एक आरएफसी 2616 पार्सर (HTTP) है।

+0

"कोई अच्छा कारण" टिप्पणी की सराहना क्योंकि मैं नहीं दिख रहा है यही कारण है कि एक पार्सर द्विआधारी के लिए कम और अधिक पाठ के लिए उपयुक्त और है। मुझे लगता है कि एक बाइनरी फ़ाइल में कई पथ हो सकते हैं और बैकट्रैकिंग आदि की आवश्यकता हो सकती है। – me2

+0

निश्चित रूप से, यह सिर्फ इतना है कि अटोपर्सेक इतना नया है, आप अपने आप को बाहर निकाल देंगे। बस डेटा का उपयोग करें। बाइनरी हर किसी की तरह, और अब आप कर लेंगे :) –

+0

यह लिंक पारसी संस्करण के लिए है, Attoparsec संस्करण यहां है: http://bitbucket.org/bos/attoparsec/src/tip/ http://github.com/jlouis/combinatorrent/blob/master/src/Protocol/Wire.hs#L171 और अनाज-पार्सर सही करने के लिए अगले: उदाहरण/RFC2616.hs –

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