Mediawiki 标记的开源解析器代码 [关闭]
-
11-07-2019 - |
题
我感兴趣的是有选择地解析 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 {
}
这不是最好看的代码“但它有效”。
我有一些话想说来自维基模板这里。有趣的是,现在有替代解析器名单,我会以调查。
不隶属于 StackOverflow