سؤال

أنا مهتم بتحليل ترميز Mediawiki XML بشكل انتقائي لإنشاء صفحة HTML مخصصة تمثل مجموعة فرعية من HTML التي ينتجها محرك عرض PHP Mediawiki الفعلي.

أريده من أجل BzReader، وهو قارئ تفريغ مضغوط Mediawiki غير متصل بالإنترنت ومكتوب بلغة C#.لذلك سيكون المحلل اللغوي C# مثاليًا، ولكن أي كود جيد سيساعد.

بالطبع، إذا لم يقم أحد بذلك من قبل، أعتقد أن الوقت قد حان لبدء مشروع يحافظ على محلل Mediawiki مجاني ومنفصل، استنادًا إلى محلل Mediawiki الخاص، ولكن بشكل أقل تكاملاً مع Mediawiki نفسه.

لذا، هل يعرف أي شخص أي قاعدة يمكن أن أبدأ بها، والتي ستكون أفضل من اختراق كود Mediawiki PHP؟

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

المحلول

هناك قائمة من الموزعين على http://www.mediawiki.org/wiki/Alternative_parsers, ، ولكن لم يتم تضمين محلل C# هناك ...

نصائح أخرى

تحديث
مع الأخذ في الاعتبار أن سكريتورن لا يلتزم بصيغة Mediawiki ولكنه يستخدم نسخته الخاصة التي تختلف قليلاً.

لا يتناسب بناء جملة Mediawiki مع محلل LALR (أو حتى LL*) لأنه يحتوي على الكثير من الغموض في تعريفه، كما أنه يسمح بـ HTML.هناك نقاش حول ذلك في هذا السؤال, ، أنت عالق بشكل أساسي في كتابة المحلل اللغوي والرمز المميز الخاص بك بدلاً من مجرد كتابة ملف BNF له ثم استخدام ANTLR/Gold/Irony.

رودكيل ويكي يستخدم أ محلل الكريول لتحليل Mediawiki الخاص به، ولكن بدعم محدود.


تم إصدار برنامج Screwturn بموجب ترخيص GPL، ويحتوي على محلل C#:

الفصل الذي تبحث عنه هو Core.Formatter الذي يحتوي على الكثير من التعابير المنطقية للقيام بعمله:

public static class Formatter {

}

إنه ليس الكود الأجمل "لكنه يعمل".

كان لدي بعض الكلمات لأقولها عن قوالب Mediawiki هنا.ومن المثير للاهتمام أن هناك قائمة من المحللين البديلين الآن، وسوف يتعين علي التحقيق في ذلك.

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