Mediawiki标记的开源解析器代码

我有兴趣有选择地解析Mediawiki XML标记,以生成一个自定义HTML页面,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分。

我想要它用于BzReader,一个用C#编写的离线Mediawiki压缩转储读取器。 所以C#解析器是理想的,但任何好的代码都会有所帮助。

当然,如果以前没有人这样做过,我想是时候开始一个项目维护一个免费的,独立的Mediawiki解析器,基于Mediawiki自己的解析器,但与Mediawiki本身不太紧密集成。

那么,有没有人知道我可以开始的任何基础,这比从Mediawiki PHP代码入侵更好?

在http://www.mediawiki.org/wiki/Alternative_parsers上有一个解析器列表,但是那里不包含ac#parser …

更新
请记住,Screwturn不会坚持使用Mediawiki语法,而是使用自己的变体,这种变化确实有所不同。

Mediawiki语法不适用于LALR解析器(甚至LL *),因为它在定义中有很多含糊之处,并且还允许使用HTML。 在这个问题上有一个讨论,你基本上坚持编写自己的解析器和标记器,而不是简单地为它编写BNF文件,然后使用ANTLR / Gold / Irony。

Roadkill Wiki使用Creole解析器进行Mediawiki解析,但支持有限。


Screwturn是在GPL许可下发布的,并且有一个C#解析器:

  • Screwturn许可证
  • Screwturn源代码下载 (遗憾的是没有web svn)

你所使用的类是Core.Formatter,它有很多正则表达式来完成它的工作:

public static class Formatter { } 

这不是最好看的代码“但它有效”。

我在这里有一些关于Mediawiki模板的话。 有趣的是,现在有一个替代解析器列表,我将不得不调查。