我正在尝试解析(在 Java 中)在 Wikipedia 上找到的 Wikimedia 标记。有许多现有的包可以完成这项任务,但我还没有找到特别适合我需要的包。我用过的最好的包是Mathclipse Bliki 解析器,它在大多数页面上都做得不错。
但是,此解析器不完整,无法解析某些页面或在其他页面上解析不正确。遗憾的是,代码相当混乱,因此修复这个解析引擎中的问题非常耗时且容易出错。
在尝试找到更好的解析引擎时,我研究了使用基于 EBNF 的解析器来完成此任务(特别是 ANTLR)。然而,经过一些尝试,这种方法似乎并不特别适合这项任务,因为 Wikimedia 标记相对宽松,因此不容易适应结构化语法。
然而,我对 ANTLR 和类似解析器的经验非常有限,因此可能是我的经验不足导致了问题,而不是此类解析器天生就不适合这项任务。在这些主题上有更多经验的人可以在这里权衡吗?
@Stobor:我提到过我查看了各种解析引擎,包括谷歌查询返回的解析引擎。到目前为止,我发现最好的是 Bliki 引擎。问题是用这些解析器解决问题变得非常乏味,因为它们本质上都是长链的条件和正则表达式,导致意大利面条代码。我正在寻找更类似于 EBNF 解析方法的方法,因为该方法更清晰、更简洁,因此更易于理解和发展。我看过你发布的 mediawiki 链接,这似乎证实了我的怀疑,即开箱即用的 EBNF 不适合这项任务。因此,我正在寻找一个像 EBNF 一样清晰易懂的解析引擎,但也能够处理 wiki 标记的混乱语法。