2009-02-05 13 views
10

मुझे स्मार्ट इलेक्ट्रिक मीटर के साथ संवाद करने के लिए विभिन्न नेटवर्क भेजने के लिए ऑक्टेट स्ट्रीम पढ़ने और लिखने की आवश्यकता है। एक एएनएसआई मानक, एएनएसआई सी 12.1 9 है, जो बाइनरी डेटा प्रारूप का वर्णन करता है। जबकि डेटा प्रारूप अत्यधिक जटिल नहीं है, मानक बहुत बड़ा (500+ पृष्ठ) है जिसमें यह कई अलग-अलग प्रकारों का वर्णन करता है। मानक को ईबीएनएफ व्याकरण द्वारा पूरी तरह से वर्णित किया गया है। मैं ईएनटीएफ व्याकरण या इसके संशोधित संस्करण को पढ़ने के लिए एएनटीएलआर का उपयोग करने पर विचार कर रहा हूं और सी # कक्षाएं बना सकता हूं जो ऑक्टेट स्ट्रीम को पढ़ और लिख सकते हैं।क्या एएनटीएलआर एक बाइनरी डेटा प्रारूप को क्रमबद्ध/deserialize करने के लिए एक उपयुक्त उपकरण है?

क्या यह एएनटीएलआर का अच्छा उपयोग है?

यदि हां, तो मुझे एएनटीएलआर 3.1 का उपयोग करने में सक्षम होने के लिए क्या करने की आवश्यकता है? समाचार समूह अभिलेखागार खोजने से ऐसा लगता है कि मुझे एक नई धारा को लागू करने की आवश्यकता है जो वर्णों के बजाय बाइट्स को पढ़ सके। क्या यह सब मुझे या लेक्सर व्युत्पन्न को भी लागू करना होगा?

यदि एएनटीएलआर मुझे स्ट्रीम को पढ़ने/विश्लेषण करने में मदद कर सकता है तो क्या यह मुझे स्ट्रीम लिखने में भी मदद कर सकता है?

धन्यवाद।

दान finucane

उत्तर

10

यह विषय समय-समय पर एएनटीएलआर मेलिंग सूची पर आता है। जवाब आमतौर पर नहीं होता है, क्योंकि बाइनरी फ़ाइल स्वरूप बहुत नियमित होते हैं और यह ओवरहेड के लायक नहीं है।

+2

500 पृष्ठों (?!) के साथ मानकों का विषय अक्सर एएनटीएलआर मेलिंग सूची पर आता है? मानक ओवरबैड को सही ढंग से कार्यान्वित करने के लिए मशीन ओवरहेड को एक महान पार्सर जनरेटर का उपयोग करने के लाभ से अधिक होना चाहिए। –

4

मुझे ऐसा लगता है कि एक व्याकरण होने आप एक जबरदस्त पैर देता है।

एएनटीएलआर 3.1 में स्ट्रिंग टेम्पलेट और कोड जनरेशन फीचर्स हैं जो पार्सिंग/लेक्सिंग से अलग हैं, इसलिए आप इस तरह की समस्या को विघटित कर सकते हैं।

कोशिश करने लायक मेरे लिए एक विजेता की तरह लगता है।

16

आप Ragel पर एक नज़र डाल सकते हैं। यह एक राज्य मशीन कंपाइलर/लेक्सर है जो ऑन-द-वायर प्रोटोकॉल को लागू करने के लिए उपयोगी है। मैंने रिपोर्ट पढ़ी है कि यह बहुत तेज़ कोड उत्पन्न करती है। यदि आपको पार्सर और टेम्पलेट इंजन की आवश्यकता नहीं है, तो एएनटीएलआर की तुलना में रैगेल में कम ओवरहेड है। यदि आपको एक पूर्ण उड़ा पार्सर, एएसटी, और अच्छा टेम्पलेट इंजन समर्थन की आवश्यकता है, तो एएनटीएलआर बेहतर विकल्प हो सकता है।

+0

मैंने पहले रैगेल के बारे में नहीं सुना था। यह दिलचस्प लगता है और मेरी समस्या के लिए काम कर सकता है। धन्यवाद। –

+1

यदि आपको रिकर्सिव नियमों की आवश्यकता है, तो आप रागल के साथ कुछ दर्द में भाग सकते हैं। यदि नहीं, तो यह आपके काम के लिए एक अच्छा उपकरण हो सकता है। –

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