Alternative parsers/cs

Tato stránka je kompilací odkazů, popisů a stavových zpráv různých alternativních analyzátorů MediaWiki – tedy programů a projektů jiných než samotná MediaWiki, které jsou schopné nebo určené k překladu syntaxe textových značek MediaWiki do něčeho jiného. Some of these have quite narrow purposes, while others are possible contenders for replacing the somewhat labyrinthine code that currently drives MediaWiki itself.

Many of the things linked here are likely to be out of date and under-maintained, or even abandoned. But in the interest of not duplicating the same work over and over, it seemed sensible to collect together what was "out there". In addition, although so many alternative parsers exist, almost no unofficial parser powers any wiki site, except for Parsoid which powers some Wikimedia Foundation wikis, and wikitextparser which powers the OpenTTD wiki through TrueWiki.

Parsers that build an abstract syntax tree (AST) and provide access to it are listed under #Parsers providing an AST; parsers that don't build an AST but extract some information are listed under #Parsers extracting some information; the rest of the parsers are listed under #Other parsers.

Parsers providing an AST

Free software

Name and link Principal author(s) Language Input Output Complete implementation Can convert output back to markup Comments / other info License
Parsoid Started by Gabriel Wicke; maintained by the Content Transform Team at the Wikimedia FoundationWikiPEG / PHP (formerly Node.js)markup, XML dumps, test casestokens, HTML5 DOM with RDFa and round-trip data AnoAnoFully-featured round-tripping parser/runtime that powers the Visual editor on Wikipedia. Default parser for some WMF wikis. Will become the default parser for MediaWiki. See Parser Unification.GPLv2+
DizzyLogic Wiki Parser Dizzy LogicC++XML dumpsSyntax tree in XML, plain text NeNeFast datamining-oriented parser for English Wikipedia. Capable of processing all of English Wikipedia into plain text and XML in 2-3 hours on a modern processor. Convenient graphical interface. Windows installer available (64-bit).MIT license
mwparserfromhell The EarwigPythonmarkupAST almostAnoA Python library to convert Wiki markup to a navigable string, which can be used to examine and manipulate templates. Compatible with Python 3.8+, and no runtime dependencies.MIT License
wikiapi kanashimi JavaScriptmarkupJavaScript native object almostAnoParses sections, templates with parameters, links, images and categories, wiki-table to JS array or JS array to wiki-table, and many more. You may modify parts of the wikitext, then regenerate the page just using parsed.toString(). Runs on node.js and browser.MIT
Sweble Wikitext Parser Hannes DohrnJavamarkupAST, XML, HTML almost?Claims to be very thorough. There are three papers surrounding the Sweble Wikitext Parser.Apache License 2.0
wikitextparser 5j9PythonmarkupAST almostAnoProvides several accessor methods in an object tree to navigate to structural elements like sections, tables, links etc. Supports extracting table data as list of lists. Available via pip, supports Python 3.GPLv3
mwlib PediaPress.comPython with C librarymarkup and otherparse tree, HTML, PDF, XML, OpenDocument Ne?Used by MediaWiki's "Print/export" feature, see Reading/Web/PDF Functionality.BSD
wb2pdf Dirk HünnigerHaskellonline articleLaTeX, PDF, Parse Tree, HTML, OpenDocument, EPUB Ne?Recursive Descent based on Monadic Parser Combinators. Allows for non context-free input, especially non well formatted HTML as often found on Wikipedia.GPL
XWiki Rendering Framework XWiki dev teamJavavarious WikiMarkupsWell formed sequence of events, HTML/XHTML, other WikiMarkups NeNeXWiki can be used a full-fledged wiki supporting several WikiMarkups (including MediaWiki's markup). It also offers a standalone Rendering Engine that can be used as a Java library for parsing/rendering WikiMarkups. Cant output to mediawiki format as of 2016/03 though.LGPL
mediawiki-parser Peter Potrowl, Erik RosePythonmarkupXHTML, raw text, AST NeNeGSoC-2011 project; the use of a PEG parser makes it easy to improve. Parser functions are not supported yet.GPLv3
smc.mw Marcus BrinkmannPythonmarkupAST, HTML NeNeStateful PEG parser based on Grako (Archived 2014-03-09 at the Wayback MachineCategory:Webarchive template wayback links), with a very clean separation of parsing stages, grammars and semantic transformations.BSD
Pandoc John MacFarlaneHaskellmarkupmany & AST Nenot identicalCan convert subset of mediawiki markup to ~35 different formats (5 of which are flavors of markdown).GPLv2
MwParserFromScratch CXuesong C# markup AST NeAno A portable .NET library that parses wikitext into Abstract Syntax Tree. For now it supports most of the common markup expressions except file links, double-underscored magic words, and tables. Apache License
mediawiki-parser Ben Gamari Haskell markup or MediaWiki XML AST almostNe mediawiki-parser served as the basis of the extraction pipeline of the NIST TREC Complex Answer Retrieval information retrieval track. It is a PEG parser capable of producing abstract syntax tree representing most of the Mediawiki syntax. BSD-3-Clause
parse_wiki_text Fredrik Portström Rust markup AST NeNe Parse Wiki Text attempts to take all uncertainty out of parsing wiki text by converting it to another format that is easy to work with. The target format is Rust objects that can ergonomically be processed using iterators and match expressions. modified MIT
wikitextprocessor Tatu Ylonen Python XML dumps AST ?? Can expand templates and Lua macros. MIT unless otherwise noted in individual files (see LICENSE)
wikiparser-node Bhsd TypeScriptmarkupAST, HTML almostAnoParsing, modifying, and linting wikitext. Runs in Node.js and browser (online playground).GPLv3


Proprietary

Name and link Principal author(s) Language Input Output Complete implementation Can convert output back to markup Comments / other info License
WikiTaxi Ralf JunkerDelphi / PascalMediaWiki markup, page or fragmentNode-tree, HTML, potentially others almostHand-crafted parser with template expansion, parser functions (core and extended), tag extensions (<ref>, <source>), wiki text parsing. Used for the WikiTaxi offline reader.No sources available

Abandoned

Name and link Principal author(s) Language Input Output Complete implementation Can convert output back to markup Comments / other info License
DKPro JWPL parser Torsten Zesch, Richard Eckart de Castilho, Oliver Ferschke, Elisabeth NiemannJavaXML dumpAPI to access pages, outlinks, inlinks and more Ne"JWPL (Java Wikipedia Library) is a free, Java-based application programming interface that allows to access all information contained in Wikipedia." "JWPL is for you: If you need structured access to Wikipedia in Java." Older parser not maintained any more - JWPL uses Sweble now.LGPL
FlexBisonParse Timwiflex, bison and Cmarkup fragmentCustom XML NeIntended as an eventual replacement to the parsing code inside MediaWiki itself.
sanskrit-coders/wiki-tools Vishvas VasukiScalaMediawiki textMediawiki text and Section tree NeOnly parses mediawiki sections - that's it. One can parse a wiki page with multiple sections, get a section tree, add, access and delete sections.Creative commons
Perl Wikipedia Toolkit Michal JuroszPerlXML dump, SQL dumpOwn parse tree, WikiMedia markup NePerl Wikipedia Toolkit developed for Computer-assisted Wikipedia translation. (Little functional)
WikiOnCD (Archived 2006-01-15 at the Wayback MachineCategory:Webarchive template wayback links) Andrew RodlandPerlSQL dump or markupHTML, Parse tree (eventually?) NeStarted out as an offline wiki browser, but grew a parser when Wiki2static turned out to be too limiting. No web presence yet; code is in the SVN.GPL
WikiPress Publisher[mrtvý odkaz] Erwin JurschitzaDelphi 7XML dumpDocBook XML, Digibib XML, HTML NeUsed for the German DVD, generates lists of bad markup.No sources available
Saya.Parser.Wiki[mrtvý odkaz] Nana SakisakaC++markupAST NePure C++11 parser implemented with Boost.Spirit.Qi.Boost Software License 1.0

Parsers extracting some information

Name and link Principal author(s) Language Input Output Complete implementation Can convert output back to markup Comments / other info License
PHP-Wikipedia-Syntax-Parser Don Wilson PHP markup Associative array Ne Parses top-level sections, w:Wikipedia:Persondata, infoboxes, external links, categories, and interlanguage links. GPL
Wiki-infobox-parser Zhipeng JiangJavaScriptmarkupJSON Ne A light Wikipedia Infobox Parser written in JavaScript. MIT
wiktextract Tatu YlonenPythonXML dumpsJSON  ? Parses most of the English Wiktionary into a JSON. Can expand templates and Lua macros. You can run it locally, or directly grab the JSON output hosted at . MIT
ParseWiki Gerges PHP wikitext Associative array Yes A library that helps parse wikitext data GPL-3.0
wtf_wikipedia Spencer Kelly JavaScriptmarkupJSON almostNeSupports recursive links & templates, parses infoboxes and links, resolves special templates, parses images and categories. runs server-side & browser.MIT
gensim.segment_wiki RaRe Technologies Python MediaWiki XML JSON NeNe Gensim is a robust open-source vector space modeling and topic modeling toolkit implemented in Python, segment_wiki - script for wikipedia parsing & extraction. LGPLv2.1

Other parsers

Name and link Principal author(s) Language Input Output Complete implementation Comments / other info License
Mylyn WikiText David GreenJavaLocal filesHTML, DocBook, Eclipse Help, DITA, extensible NeIntegration with Ant and Eclipse runtime.EPL
wikipedia-js kenshiro_oNode.jsmarkupHTML NeA simple client that enables you to query Wikipedia articles in english. The results are formatted in basic HTML. You can retrieve either a summary of an article (i.e. before the table of contents) or a full article.MIT
WikiExtractor Giuseppe Attardi, Antonio FuschettoPythonXML dumpstext NeSimple and fast tool for extracting plain text from Wikipedia dumps. It performs template expansion and handles parser functions (core and extended).GPL
Mediawiki2HTML Machine Johannes BuchnerPHPmarkupHTML NeProject for parsing without the Mediawiki engine.AGPL3 + any later version
Java API (Bliki engine) Axel KramerJavamarkup fragmentHTML, PDF almostJava Wikipedia API - (supports ParserFunctions, Lua/Scribunto...).EPLv1.0 or GPLv2.1+
WikiCloth nricciarRubymarkupHTML NeRuby implementation of the MediaWiki markup language, including a fair amount of the parser functions.MIT
YaCy YaCy dev teamJavaXML dumpXML with Dublin Core Metadata NeYaCy is a search engine and a MediaWiki parser is included as one of the import modules. MediaWiki xml dumps are first converted to Dublin Core XML as intermediate format and then inserted into the search index using the built-in Dublin Core importer.GPL
WiktionaryParser dev teampythonmarkupJSON NeWiktionary parser. As of October 2019, downloads the article on-the-fly and parses "etymologies, definitions, pronunciations, examples, audio links and related words".MIT
LuaWiki Alexander MiselLua, PEGmarkupHTML NeLuaWiki has a parser which supports most common syntaxes used in article namespace, however it defined a different grammar for templates.GPLv3
wiktionary-dumps excarnateSojournerPythonXML dumpvarious NeA collection of scripts for extracting various information specifically from database dumps of the English Wiktionary. Only one or two may be more broadly useful. Active as of 2023.CC0
wikiparser-java javalc6 Java XML dump various NeThe library has been developed to parse and render English Wiktionary. In addition to English, several other languages are supported. Apache License
other wiktionary parsers variousvariousmarkupvarious NeSee list at <stackoverflow.com/q/3364279>various

Abandoned

Name and link Principal author(s) Language Input Output Complete implementation Comments / other info License
libmwparser SaitmohCXML dumps, markupXML, XHTML, Expanded WikiText almostPrimary an wikimedias offline reader with interwiki support. Libmwparser is a source independent library which supports most of MediaWiki syntax and some extensions like math or gallery.GPL
Wiky.php Toni LähdekorpiPHP, Regular ExpressionsmarkupHTML NeA tiny PHP library that uses only regular expressions to convert Wiki markup to HTML.Apache License/GPL/LGPL/MPL/CC
Wiky Tanin Na NakornRubymarkupHTML NeA simple Ruby library to convert Wiki markup to HTML.Apache License
Wiky.js Tanin Na NakornJavaScriptmarkupHTML NeA simple JavaScript library to convert Wiki markup to HTML (limited subset).Apache License
txtwiki.js Joao SaJavaScriptmarkupText NeA JavaScript library to convert MediaWiki markup to plaintext.MIT License
mw2html Connelly BarnesPythonWiki urlHTML NeMinimal setup - gets the basic job of creating a static copy of the wiki done.Public Domain
PHP5 WP Dan GoldsmithPHPmarkupHTML NeParser With Plugin Framework To Add Additional Syntax. Configurable for alternative markup i.e. PMWIKI.MPL 2.0
JAMWiki RyanJavaJAMWiki front-endHTML NeJava Wiki engine that supports MediaWiki syntax. The roadmap also calls for XML import and export that will be compatible with Mediawiki.LGPLv2
InstaView PilafJavaScriptmarkup fragmentHTML NeProvides instant preview while editing a page (without reloading).BSD
InstaView C. Scott AnanianJavaScriptmarkup fragmentHTML NePort of Pilaf's code to node.js, volo, and the browser.BSD
Tero-dump Tero Karvinen ?Local wiki installation, including MySQL, PHP, web serverHTML NeScripts for grabbing the whole wiki; does not include images.
Text_Wiki_Mediawiki MultiplePHPmarkupHTML, LaTeX, Plain text NePart of the Text_Wiki library.LGPL
TomeRaider export Erik ZachtePerlXML dumpTomeRaider database NeSee en:Wikipedia:TomeRaider database for more details.
Waikiki Magnus ManskeC++SQL dump (via SQLite)HTML NeAbandoned in favour of "flexbisonparse", but has been used inside some experimental "front ends".
Wikiwyg (Archived 2008-12-16 at the Wayback MachineCategory:Webarchive template wayback links) Jim HigsonJavaScriptA live installation of MediaWikiHTML (via XML) NeMore than just a parser; attempts to create a fully functional client-side interface.
wik2dict GuakaPythonSQL dumpDICT Ne
wiki2pdf Stephan WalterPython (and PHP)markup fragment or set of online articlesLaTeX, PDF NeProject is incomplete and dormant.
WikiPDF Felipe SanchesPython (and PHP)One selected articleLaTeX based on templates, PDF NeMediawiki extension that uses Stephan Walter's wiki2pdf as backend.
Wikifilter  ?C++ (VS)XML dumpsHTML NeA Windows program that uses Apache/IIS to serve the pages. Abandoned in 2006, before ParserFunctions were available.
Wikipedia Dump Reader Benjamin ThyreauPythonXML dumpsOn screen NeCross platform viewer.GPLv2/~BSD license
Marker Ryan BlueRubymarkup (subset)HTML or formatted text NeMarker is a Ruby implementation of a subset of the MediaWiki markup language, intended bring MediaWiki's markup language to non-wiki applications with multiple output formats.GPL
Kiwi Thomas Luce, Karl Matthias, AboutUs.orgC, Ruby, PEGmarkupHTML almostKiwi is a PEG-based C implementation with Ruby bindings and a command line parser. It is very fast and supports most of the MediaWiki syntax.BSD


A non-parser dumper

One of the common uses of alternative parsers is to dump wiki content into static form, such as HTML or PDF. Tim Starling has written a script which isn't a parser, but uses the MediaWiki internal code to dump an entire wiki to HTML, from the command-line. See Extension:DumpHTML. This has been used (years ago) to create the static dumps at https://dumps.wikimedia.org

There are also similar dumpers as part of the Kiwix project, for example mwoffliner, and you can query the RESTBase API to obtain HTML-format output with semantic information (such as tranclusions) included.

Category:Parser/cs
Category:Parser/cs Category:Webarchive template wayback links