我试图解析(在Java中)维基媒体标记为在维基百科上找到。这项任务有很多现有的软件包,但我没有找到任何适合我需求的特别好的软件包。我与之合作的最好的软件包是Mathclipse Bliki parser,它在大多数页面上都做得不错。解析wikimedia标记 - 是基于EBNF的解析器不太合适吗?
但是,此解析器不完整,无法解析某些页面或在其他页面上错误解析。可悲的是,代码相当混乱,因此修复这个解析引擎中的问题非常耗时且容易出错。
在试图找到一个更好的解析引擎时,我调查了使用基于EBNF的解析器来完成此任务(特别是ANTLR)。但经过一番尝试,似乎这种方法并不是特别适合这项任务,因为维基媒体标记相对宽松,因此不容易适应结构化语法。
但是,我对ANTLR和类似解析器的使用经验非常有限,所以可能是我的经验不足而导致问题,而不是解析器本身不适合执行此任务。任何有这些主题经验的人都可以在这里权衡吗?
@Stobor:我提到过我已经看过各种解析引擎,包括google查询返回的引擎。迄今为止发现的最好的是Bliki发动机。问题在于解决这些解析器的问题变得令人难以置信的乏味,因为它们都基本上是条件和正则表达式的长链,导致了意大利面代码。我在寻找更类似于EBNF解析方法的东西,因为该方法更清晰,更简洁,因而更易于理解和发展。我已经看到了您发布的mediawiki链接,似乎证实了我的怀疑,即EBNF开箱即用并不适合执行此任务。因此,我正在寻找一种解析引擎,它像EBNF一样清晰易懂,但也能够处理维基标记的混乱语法。
这可能是好的,如果你能指出一对夫妇的需求未被满足由http://google.com/search?q=wikipedia+java+parser上的热门搜索结果,因此我们可以提供更好的答案... – Stobor 2009-07-15 05:59:33
另请参见:http://www.mediawiki.org/wiki/Markup_spec/BNF – Stobor 2009-07-15 06:00:45