Pregunta

Estoy interesado en analizar selectivamente el marcado XML de Mediawiki para generar una página HTML personalizada que sea un subconjunto del HTML producido por el motor de renderizado PHP Mediawiki real.

Lo quiero para BzReader, un lector de volcado comprimido sin conexión Mediawiki escrito en C #. Por lo tanto, un analizador C # sería ideal, pero cualquier código bueno ayudaría.

Por supuesto, si nadie lo ha hecho antes, supongo que es hora de comenzar un proyecto manteniendo un analizador de Mediawiki gratuito y separado, basado en el propio analizador de Mediawiki, pero menos estrechamente integrado con el propio Mediawiki.

Entonces, ¿alguien sabe de alguna base con la que pueda comenzar, que sería mejor que piratear desde el código PHP de Mediawiki?

¿Fue útil?

Solución

Hay una lista de analizadores en http://www.mediawiki.org/wiki/Alternative_parsers, pero ac # parser no está incluido allí ...

Otros consejos

Actualizar
Ten en cuenta que Screwturn no se adhiere a la sintaxis de Mediawiki, sino que utiliza su propia variación, que varía un poco.

La sintaxis de Mediawiki no se presta para el analizador LALR (o incluso LL *) ya que tiene muchas ambigüedades en su definición, y también permite HTML. Hay una discusión sobre eso en esta pregunta , está esencialmente atascado en la escritura su propio analizador y tokenizador en lugar de simplemente escribir un archivo BNF para él y luego usar ANTLR / Gold / Irony.

Roadkill Wiki utiliza un analizador criollo para su análisis Mediawiki, pero con soporte limitado.


Screwturn se publica bajo la licencia GPL y tiene un analizador C #:

La clase que busca es Core.Formatter que tiene muchas expresiones regulares para hacer su trabajo:

public static class Formatter {

}

No es el código más bonito '' pero funciona ''.

Tenía algunas palabras que decir sobre las plantillas de Mediawiki aquí . Interesante que haya una lista de analizadores alternativos ahora, tendré que investigar eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top