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

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

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

那么,有谁知道我可以从什么基础开始,这比从 Mediawiki PHP 代码中进行黑客攻击更好吗?

其他提示

更新
请记住,Screwturn 并不遵循 Mediawiki 语法,而是使用它自己的变体,该变体确实略有不同。

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

路杀维基 使用一个 克里奥尔语解析器 其 Mediawiki 解析,但支持有限。


Screwturn 在 GPL 许可证下发布,并具有 C# 解析器:

您所在的类是 Core.Formatter,它有很多正则表达式来完成其工作:

public static class Formatter {

}

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

我有一些话想说来自维基模板这里。有趣的是,现在有替代解析器名单,我会以调查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top