我試圖解析(在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