2012-10-18 26 views
5

मैं हास्केल के साथ ASN.1 इनपुट कैसे पार्स करूं?हास्केल के साथ ASN.1 को कैसे पार्स करें?

क्या कोई जनरेटर है जो किसी दिए गए ASN.1 विवरण फ़ाइल के लिए बीजगणितीय डेटाटाइप घोषणाएं और पार्सर कोड उत्पन्न करने में सक्षम है?

(सी कोड पैदा करने के लिए जैसे asn1c की तरह ...)

एक त्वरित सारांश क्या ASN.1 बारे में है:

ASN.1 Google प्रोटोकॉल बफ़र तरह है, लेकिन पहले जिस तरह से विकसित किया गया था और है यह एक वास्तविक मानक है। असल में, एएसएन.1 संरचनात्मक वर्णन किए गए व्याकरण को परिभाषित करने के लिए श्रेणीबद्ध रूप से संरचित डेटा और सिंटैक्स को क्रमबद्ध करने के लिए कई विधियों को परिभाषित करता है। इस तरह के व्याकरण का उपयोग सिंटैक्स पेड़ के निर्माण के लिए स्वचालित रूप से एक पार्सर और डेटा संरचनाओं को उत्पन्न करने के लिए किया जा सकता है।

उत्तर

2

Hackage का एक त्वरित खोज से पता चलता है

http://hackage.haskell.org/package/language-asn1-0.2.1

जो है जैसे कि यह प्रासंगिक हो सकता है लगता है। मुझे वास्तव में ASN.1 के बारे में बहुत कुछ पता नहीं है ...

3

आप asn1-encoding पैकेज का उपयोग कर बाइनरी एएसएन .1 को डीकोड कर सकते हैं, जिसे आप पैटर्न मिलान, या asn1-parse पैकेज का उपयोग करके हाथ से पार्स कर सकते हैं।

उदाहरण के लिए निम्नलिखित सहायक समारोह ASN1 की एक सूची में एक संख्या बाइनरी फ़ाइल को डिकोड देगा:

import Data.ASN1.Encoding 
import Data.ASN1.BinaryEncoding 
import Data.ASN1.Types 
import qualified Data.ByteString as B 

decodeASN1File file = decodeASN1' BER `fmap` B.readFile file 
संबंधित मुद्दे