2009-02-14 10 views
6

Est-ce que quelqu'un sait d'un analyseur qui peut prendre le texte au format Wiki en entrée et produire un arbre d'entités, de la même manière qu'un analyseur XML produit une arborescence d'entité? Pour clarifier, je suis à la recherche de quelque chose qui prendrait texte comme:Quel Wiki Parser?

-Intro- 
Textual stuff in ''italics'' 
--Subhead-- 
Yet more text 

et produire un arbre dont la racine Intro avec trois nœuds enfants dont l'un (Subhead) lui-même a un enfant. Je cherche quelque chose qui peut comprendre le format wiki "simple" décrit au http://meta.wikimedia.org/wiki/Help:Wikitext.

Je connais plusieurs lexers pour le texte Wiki, mais pas d'analyseurs d'arborescence. Je cherche quelque chose Open source et écrit en C ou C++.

Répondre

2

Vous ne pouvez pas le faire directement à partir d'une page au format wiki car le format wiki ne contient pas d'informations complètes. Au lieu de cela, le texte au format wiki est traduit essentiellement par un ensemble de règles d'expression régulière et inséré dans un cadre de page prédéfini en HTML ou XHTML. La manière la plus simple de faire ce que vous voulez est de trouver un formateur approprié pour un format de texte léger (comme le textile ou le créole), de le passer pour générer du XHTML, puis d'analyser le XHTML en utilisant n'importe quel analyseur normal.

2

Ce que je ferais est

  1. Ecrire une syntaxe BNF pour cette langue wiki. Comme c'est simple, la BNF sera aussi simple. Utilisez le The Spirit Framework pour créer un analyseur pour celui-ci. C'est très simple (pour des choses simples), et la syntaxe de BNF est traduite en C++ de façon si naturelle.
2

J'ai écrit un analyseur, ce qui crée à l'intérieur d'un tel arbre en Java: Java Wikipedia API

Peut-être que vous pouvez obtenir des idées pour votre C ou C++ mise en œuvre?

Le HTMLConverter class utilise l'arborescence des nœuds internes pour le convertir en balise HTML.

2

Vous pouvez jeter un oeil à Mylyn WikiText, qui est un analyseur qui utilise le modèle de conception Builder pour convertir le balisage wiki en divers formats XML. Il est fourni avec des générateurs HTML, Eclipse Help, DITA et DocBook. Vous pouvez utiliser votre propre générateur pour personnaliser la sortie.

L'analyseur peut gérer Textile, MediaWiki, TracWiki, TWiki et le balisage Confluence. Il est extensible de sorte que vous pouvez ajouter de nouvelles langues si vous le souhaitez.

Le libary est Java

0

Wiki Parser fait exactement ce dont vous avez besoin: il traduit la syntaxe wiki média XML régulier. Il préserve à peu près toute la structure de la page et gère les modèles, les galeries d'images, les redirections et plus encore.

Il est également de plusieurs ordres de grandeur plus rapide que les autres parseurs, en prenant environ 2-3 heures pour analyser tous les 55 Go du Wikipédia anglais courant.