我在哪里可以找到一个好的MediaWiki Markup解析器?

Ale*_*rak 5 php markup parsing mediawiki

我会试着稍微破解MediaWiki的代码,但我发现如果我能得到一个独立的解析器就没有必要了.

谁能帮我这个?

谢谢.

hip*_*ail 6

本休斯是对的.这很难做到正确,特别是如果你想以100%的准确率解析维基百科等大维基的真实文章.它经常在wikitech邮件列表中进行讨论,尽管经过多次尝试,但没有其他解析器能够提供商品.

首先,它不是真正的解析器,因为它没有AST(抽象语法树)这样的概念.它是一个专门转换为HTML的转换器.

其次,不要陷入将wikitext视为标记语言的陷阱,这种语言可以在极少数情况下使用HTML进行扩展.您必须将其视为HTML的扩展.向HTML解析器添加wiki文本支持要比向wiki文本解析器添加HTML支持要容易得多.

这归结为如果你想要任何其他格式,你需要从HTML转换为该格式.

基本上说,只有MediaWiki可以解析wiki文本.但是,解析器与其余代码紧密集成.有经验的MediaWiki黑客对隔离解析器的问题反应不好 - 我试过( - :

但无论如何我还是继续前进并将其隔离开来.它还没有完整或准备好与任何人分享.但基本上你想从未安装或连接到数据库或Web服务器的MediaWiki源开始.创建一个包含解析器并调用入口点的PHP存根程序.无法运行时检查错误,并为访问的类,函数或全局创建虚假存根.重复,直到您将解析器与MediaWiki的其余部分交互的大多数位置存根.

然后问题在于保持被黑客入侵的变体同步,因为源树变化很快,而实时wiki很快就会接受解析器中的变化,如果要在未来工作,你的变体必须跟上.

查看我的功能请求:错误25984 - 从数据库依赖项中隔离解析器


Ben*_*hes 3

它实际上是一种非常难以解析的格式。您可以尝试将解析器组件从媒体 wiki 中分离出来(因为它也是 php),但它是一团混乱。我见过一些部分独立的,它们对于非常有限的标记子集做了几乎合理的工作。

如果您碰巧实现了一个,或者重构了当前的维基百科,请告诉我,因为它可能非常有用。