2008-11-27 64 views
6

我对选择性地解析Mediawiki XML标记以生成自定义HTML页面感兴趣,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分。Mediawiki标记的开放源代码解析器代码

我希望它为BzReader,一个用C#编写的脱机Mediawiki压缩转储阅读器。所以一个C#解析器将是理想的,但任何好的代码都会有所帮助。当然,如果以前没有人做过它,我想是时候开始一个项目了,该项目基于Mediawiki自己的解析器维护一个自由独立的Mediawiki解析器,但与Mediawiki本身的集成度较低。

那么,有没有人知道我可以开始的任何基地,这会比从Mediawiki PHP代码黑客更好?

回答

7

有解析器上http://www.mediawiki.org/wiki/Alternative_parsers列表,但不包括有一个C#编译器...

+0

对于.NET的集成,他虽然用铁蟒蛇。 – 2008-11-28 02:44:26

+0

几个小时后,我放弃了与那些python库一起使用铁python。太复杂... – jjxtra 2011-08-28 20:41:21

4

我有一些话想说来自维基模板here。有趣的是,现在有一个替代解析器的列表,我将不得不调查。

6

更新
裸记住使用ScrewTurn不沾MediaWiki的语法,但使用它自己的变化,这确实会略有不同。

Mediawiki语法不适用于LALR解析器(甚至LL *),因为它的定义有很多含糊之处,并且还允许使用HTML。有对in this question的讨论,你基本上坚持写自己的解析器和分词器,而不是简单地写为它BNF文件,然后使用ANTLR /金/反讽。

Roadkill Wiki对其Mediawiki解析使用Creole parser,但支持有限。


使用ScrewTurn是在GPL许可下发布的,并具有一个C#编译器:

你是后级是Core.Formatter其中有很多regexs做的工作:

public static class Formatter { 

} 

这不是最好看的代码“但它的工作原理”。