سؤال

أنا أفكر في فكرة تنفيذ مترجم XML باستخدام مولد برمجي ، استنادًا إلى W3C's XML 1.1 المواصفات ، والتي تتضمن قواعد EBNF كاملة.

بتعبير أدق ، أخطط للاستخدام تشي-ياك لأنني أريد أن أتعلم هذه الأداة. سيكون أول غزو لي في استخدام أي برنامج التحويل البرمجي.

النوع الأول من الترجمة التي أخطط لتنفيذها واضحة للغاية: XML TO S-EXPRS. بعد ذلك ، أخطط لتعميم المترجم الخاص بي ، لكن هذا ليس هو الهدف من سؤالي.

هل تتوقع أي مأزق كبير لهذا النوع من المشروع؟ لقد قرأت أن ترجمة XML باستخدام EBNF هو فكرة سيئة. أتساءل لماذا. وليس مثل لغة Qi التي لديها بالفعل محلل XML ، لذلك أنا بالتأكيد لا أتطلع إلى إعادة اختراع العجلة هنا.

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

المحلول

أنا لست الآن السبب وراء حاجة السياق لتحليل XML.

لكن Qiyacc يمكن أن يستفيد من السياق باستخدام المتغيرات العالمية. سيكون منظفًا إذا تمكنت من تمرير حالة ، أو في المحلل ، على سبيل المثال ، أو شيء من هذا القبيل. هذا ليس في Qi لكنني أخطط لتنفيذ مثل هذه الميزة لشين.

لذلك يمكن القيام بذلك.

/ستيفان

نصائح أخرى

لا أعرف شيئًا عن Qiyacc ، ولكن ترجمة EBNF من XML إلى محلل نسب متكرر (RD) هو أكثر أو أقل مباشرة. يحتاج المرء فقط إلى أن يضع في اعتبارك حقيقة أن هناك أماكن يمكن أن يكون لبعض التعديلات الصغيرة إلى قواعد اللغة تأثير كبير على المحلل. وذلك لأن القواعد النحوية مكتوبة بإيجاز ووضوح في الاعتبار ، بدلاً من محاولة تجنب مطاردة القواعد.

لقد فعلت شيئًا كهذا مرة واحدة في C ++ عن طريق كتابة قواعد XML خارج كمجموعة من الأنواع. يمكنك رؤية مقال كتبت عليه في مشروع الرمز. يمكن تطبيق نفس المبادئ الأساسية على أي لغة.

أود أن أقترح عليك أيضًا أن تنظر حوليًا إلى قواعد PEG. يمتد على EBNF من خلال السماح لك بتقديم تأكيدات ذات عرض صفري ، وهي وسيلة رائعة لزيادة قواعد EBNF لمحلل.

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