我有兴趣有选择地解析Mediawiki XML标记,以生成一个自定义HTML页面,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分。
我想要它用于BzReader,一个用C#编写的离线Mediawiki压缩转储读取器。所以C#解析器是理想的,但任何好的代码都会有所帮助。
当然,如果以前没有人这样做过,我想是时候开始一个项目维护一个免费的,独立的Mediawiki解析器,基于Mediawiki自己的解析器,但与Mediawiki本身不太紧密集成。
那么,有没有人知道我可以开始使用的任何基础,那比使用Mediawiki PHP代码进行攻击更好?
答案 0 :(得分:7)
http://www.mediawiki.org/wiki/Alternative_parsers上有一个解析器列表,但是那里没有包含c#解析器......
答案 1 :(得分:6)
<强>更新强>
请记住,Screwturn不会坚持使用Mediawiki语法,而是使用自己的变体,这种变化确实有所不同。
Mediawiki语法不适用于LALR解析器(甚至LL *),因为它在定义中有很多含糊之处,并且还允许使用HTML。有关于in this question的讨论,你基本上坚持编写自己的解析器和标记器,而不是简单地为它编写BNF文件,然后使用ANTLR / Gold / Irony。
Roadkill Wiki使用Creole parser进行Mediawiki解析,但支持率有限。
Screwturn在GPL许可下发布,并有一个C#解析器:
你所经历的课程是Core.Formatter,它有很多正则表达式来完成它的工作:
public static class Formatter {
}
这不是最好看的代码“但它有效”。
答案 2 :(得分:4)
我对Mediawiki模板here说了几句话。有趣的是,现在有一个替代解析器列表,我将不得不对此进行调查。