Domanda

Sono interessato ad analizzare selettivamente il markup XML di Mediawiki per generare una pagina HTML personalizzata che è un sottoinsieme dell'HTML prodotto dall'attuale motore di rendering PHP Mediawiki.

Lo voglio per BzReader, un lettore di dump compresso Mediawiki offline scritto in C #. Quindi un parser C # sarebbe l'ideale, ma qualsiasi buon codice sarebbe d'aiuto.

Ovviamente, se nessuno lo ha mai fatto prima, immagino sia giunto il momento di avviare un progetto mantenendo un parser Mediawiki gratuito e separato, basato sul parser di Mediawiki, ma meno strettamente integrato con Mediawiki stesso.

Quindi, qualcuno conosce qualche base con cui potrei iniziare, sarebbe meglio che hackerare dal codice PHP di Mediawiki?

È stato utile?

Soluzione

C'è un elenco di parser su http://www.mediawiki.org/wiki/Alternative_parsers, ma ac # parser non è incluso lì ...

Altri suggerimenti

Aggiorna
Da tenere in considerazione. Screwturn non si attacca alla sintassi di Mediawiki ma utilizza una propria variazione che varia leggermente.

La sintassi di Mediawiki non si presta al parser LALR (o anche a LL *) in quanto ha molte ambiguità nella sua definizione e consente anche l'HTML. C'è una discussione su questo in questa domanda , sei essenzialmente bloccato con la scrittura il tuo parser e tokenizer piuttosto che scrivere semplicemente un file BNF per esso e quindi utilizzare ANTLR / Gold / Irony.

Roadkill Wiki utilizza un Analizzatore creolo per l'analisi Mediawiki, ma con supporto limitato.


Screwturn è rilasciato sotto licenza GPL e ha un parser C #:

La classe che stai seguendo è Core.Formatter che ha molti regex per fare il suo lavoro:

public static class Formatter {

}

Non è il codice più bello " ma funziona " ;.

Ho avuto alcune parole da dire sui modelli di Mediawiki qui . Interessante che ora ci sia un elenco di parser alternativi, dovrò investigarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top