غير ANTLR أداة مناسبة لتسلسل / إلغاء تسلسل تنسيق البيانات الثنائية؟

StackOverflow https://stackoverflow.com/questions/517004

سؤال

ولست بحاجة لقراءة وكتابة تيارات الثماني لإرسال عبر الشبكات المختلفة على التواصل مع العدادات الكهربائية الذكية. وهناك معيار ANSI، ANSI C12.19، التي تصف تنسيق البيانات الثنائية. في حين أن تنسيق البيانات ليست معقدة أكثر من اللازم والمعيار هو كبير جدا (500+ صفحة) لأنه يصف العديد من أنواع مختلفة. يوصف المعيار بالكامل عبارة عن قواعد EBNF. أنا أفكر في استخدام ANTLR لقراءة قواعد اللغة EBNF أو نسخة معدلة منه، وإنشاء C # الفئات التي يمكن أن القراءة والكتابة تيار الثماني.

وهذا هو الاستخدام الجيد للANTLR؟

وإذا كان الأمر كذلك، ما يمكنني القيام به لتكون قادرة على الاستفادة ANTLR 3.1؟ من البحث في أرشيف الأخبار يبدو أن أحتاج لتنفيذ تيار الجديد الذي يمكن قراءة بايت بدلا من الأحرف. غير أن كل أو أن لدي لتنفيذ مشتق Lexer كذلك؟

إذا ANTLR يمكن أن تساعدني في قراءة / تحليل تيار يمكن أن يساعد أيضا لي كتابة تيار؟

وشكرا.

ودان فينوكين

هل كانت مفيدة؟

المحلول

وهذا الموضوع يأتي من وقت لآخر على لائحة ANTLR البريدية. الجواب عادة لا، لأن تنسيقات الملفات الثنائية منتظمة جدا وانها مجرد لا يستحق سماء المنطقة.

نصائح أخرى

وقد نلقي نظرة على راجل . بل هو آلة الدولة مترجم / lexer يمكن أن يكون مفيدا لتنفيذ البروتوكولات على رأس السلك. لقد قرأت التقارير أنه يولد شفرة سريع جدا. إذا كنت لا تحتاج إلى محلل وقالب المحرك، راجل ديه النفقات العامة أقل من ANTLR. إذا كنت في حاجة الى محلل كاملة، AST، ولطيفة الدعم قالب المحرك، قد يكون ANTLR خيارا أفضل.

ويبدو لي أن وجود قواعد يعطيك الساق هائلة تصل.

وANTLR 3.1 لديها StringTemplate ورمز جيل الميزات التي تكون منفصلة عن إعراب / lexing، حتى تتمكن من تتحلل المشكلة بهذه الطريقة.

ويبدو وكأنه الفائز بالنسبة لي، يستحق المحاولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top