2008-11-27 11 views
6

Me interesa analizar sintácticamente 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.Código analizador de código abierto para el marcado Mediawiki

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

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 integrado con Mediawiki.

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

Respuesta

7

Hay una lista de programas de análisis de http://www.mediawiki.org/wiki/Alternative_parsers, sino un C# analizador no está incluido allí ...

+0

Para la integración de .net, podría usar iron python. –

+0

Me di por vencido después de unas horas tratando de usar iron python con esas bibliotecas de Python. Demasiado complicado ... – jjxtra

+0

Esta lista es antigua y no está actualizada. – ALOToverflow

4

que tenía algunas palabras que decir acerca de las plantillas Mediawiki here. Es interesante que haya una lista de analizadores alternativos ahora, tendré que investigar eso.

6

actualización
Desnudo en cuenta Screwturn no se pega a la sintaxis de MediaWiki, pero utiliza su propia variación, que hace variar un poco.

La sintaxis de Mediawiki no se presta para el analizador LALR (o incluso para LL *), ya que tiene muchas ambigüedades en su definición, y también permite HTML. Hay una discusión sobre ese in this question, básicamente estás atrapado en escribir tu propio analizador y tokenizador en lugar de simplemente escribir un archivo BNF para él y luego usar ANTLR/Gold/Irony.

Roadkill Wiki usa un Creole parser para su análisis Mediawiki, pero con soporte limitado.


Screwturn está liberado bajo la licencia GPL, y tiene un C# analizador:

La clase que está después 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".

+0

Gracias! Excelente recurso. –

+0

@Chris S: En otras palabras: esto NO es un analizador de mediawiki ... –

Cuestiones relacionadas