Código de analizador de código abierto para marcado de Mediawiki [cerrado]
-
11-07-2019 - |
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?
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 #:
- Licencia de atornillado
- Descarga de fuente de Screwturn (desafortunadamente no hay svn web)
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.