当前位置:  开发笔记 > 编程语言 > 正文

Mediawiki标记的开源解析器代码

如何解决《Mediawiki标记的开源解析器代码》经验,为你挑选了2个好方法。

我有兴趣有选择地解析Mediawiki XML标记,以生成一个自定义HTML页面,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分.

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

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

那么,有没有人知道我可以开始的任何基础,这比通过Mediawiki PHP代码的黑客攻击更好?



1> wimh support..:

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


@Francis,查看不到一个月前它似乎更新的历史(PHP5 WP已被添加).但你可能是对的,它不完整,而且不再存在的项目仍在列表中.与所有维基媒体项目一样,任何人都可以编辑该页面以改进它.这并不意味着有人有责任让它完全保持最新状态.

2> Chris S..:

更新
Bare记住Screwturn不会坚持Mediawiki语法,但使用自己的变体,它确实有所不同.

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

Roadkill Wiki使用Creole解析器进行Mediawiki解析,但支持有限.


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

Screwturn许可证

Screwturn源代码下载(遗憾的是没有web svn)

你所经历的类是Core.Formatter,它有很多正则表达式来完成它的工作:

public static class Formatter {

}

这不是最好看的代码"但它有效".

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有