8

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

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

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

那么,有没有人知道我可以从任何基础开始,这会比从 Mediawiki PHP 代码中破解更好?

4

3 回答 3

7

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

于 2008-11-27T22:42:11.050 回答
7

更新
记住,Screwturn 并不坚持使用 Mediawiki 语法,而是使用自己的变体,这确实有点不同。

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

Roadkill Wiki使用克里奥尔语解析器进行 Mediawiki 解析,但支持有限。


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

你所学的课程是 Core.Formatter ,它有很多正则表达式来完成它的工作:

public static class Formatter {

}

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

于 2009-02-10T13:31:00.500 回答
4

我在这里对 Mediawiki 模板有一些话要说。有趣的是,现在有一个替代解析器列表,我将不得不对此进行调查。

于 2008-11-27T23:02:53.007 回答