C# Mediawiki标记的开源解析器代码

C# Mediawiki标记的开源解析器代码,c#,php,open-source,parsing,mediawiki,C#,Php,Open Source,Parsing,Mediawiki,我感兴趣的是有选择地解析Mediawiki XML标记以生成定制的HTML页面,该页面是实际PHP Mediawiki呈现引擎生成的HTML的子集 我想要它给BzReader,一个用C#编写的离线Mediawiki压缩转储阅读器。因此,C#解析器是理想的,但任何好的代码都会有所帮助 当然,如果以前没有人这样做过,我想现在是时候开始一个项目,在Mediawiki自己的解析器的基础上维护一个免费的、独立的Mediawiki解析器了,但与Mediawiki本身的集成程度较低 那么,有人知道我可以从哪个

我感兴趣的是有选择地解析Mediawiki XML标记以生成定制的HTML页面,该页面是实际PHP Mediawiki呈现引擎生成的HTML的子集

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

当然,如果以前没有人这样做过,我想现在是时候开始一个项目,在Mediawiki自己的解析器的基础上维护一个免费的、独立的Mediawiki解析器了,但与Mediawiki本身的集成程度较低


那么,有人知道我可以从哪个基础开始,这比从Mediawiki PHP代码中黑客攻击要好吗?

上面有一个解析器列表,但是没有包含c#解析器…

关于Mediawiki模板,我有一些话要说。有趣的是,现在有一个替代解析器的列表,我必须对此进行调查。

更新
Bare-in-mind Screwturn并不坚持Mediawiki语法,而是使用了它自己的变体,这种变体确实有些不同

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

使用a进行Mediawiki解析,但支持有限


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

  • (遗憾的是,没有web svn)
您要查找的类是Core.Formatter,它有许多正则表达式要执行其工作:

public static class Formatter {

}

这不是最漂亮的代码,“但它很管用”。

对于.net集成,他可以使用iron python。我在几个小时后放弃了在这些python库中使用iron python。太复杂了……这个列表很旧,没有更新。@Francis,看看历史,它似乎在不到一个月前更新过(添加了PHP5 WP)。但你可能是对的,它还没有完成,不再存在的项目仍然在列表中。与所有维基媒体项目一样,任何人都可以编辑该页面以改进它。这并不意味着有人觉得有责任让它完全更新。@Chris S:换句话说,这不是mediawiki解析器。。。