2009-06-22 65 views

回答

3

這實際上是一種難以置信的難以解析的格式。您可以嘗試從媒體wiki中分離出解析器組件(因爲它也是php),但它是一團糟。我已經看到了幾個部分獨立的,爲標記的一個非常有限的子集做了幾乎合理的工作。

如果您碰巧實現了一個,或者重構了當前的維基百科,讓我知道它可能相當有用。

6

本·休斯是正確的。如果你想以百分之百的精度從維基百科這樣的大維基解析真實的文章,這很難得到正確的結果。它在wikitech郵件列表中經常被討論,儘管嘗試過很多次,但沒有其他解析器能夠提供商品。

首先,它不是真正的解析器,它沒有AST(抽象語法樹)這樣的概念。它是專門轉換爲HTML的轉換器。

其次,不要陷入將wikitext視爲一種標記語言的陷阱,這種標記語言可以在極少數情況下使用HTML進行擴展。您必須將其視爲HTML的擴展。爲HTML解析器添加Wikitext支持比向Wikitext解析器添加HTML支持要容易得多。

這是歸結爲如果你想要任何其他格式,你將需要從HTML轉換爲該格式。

基本上聲明只有MediaWiki可以解析wikitext。但是,解析器與代碼的其餘部分緊密集成。經驗豐富的MediaWiki黑客對隔離解析器的問題反應不佳 - 我試過( - :

但是我也已經提前將它隔離開來了,但它還沒有完成或者尚未與任何人共享。你想從沒有安裝或連接到數據庫或Web服務器的MediaWiki源開始,創建一個包含解析器並調用入口點的PHP存根程序,當它運行失敗時檢查錯誤併爲該類創建一個虛假存根,功能或全局,重複,直到你解析瞭解析器與MediaWiki其餘部分交互的大部分地方

然後,問題就出現在保持被黑客入侵的變體同步中,因爲源樹快速變化,現場維基擁抱變化在解析器中非常快速,如果要在將來工作,則變體將不得不跟上。

看看我的功能要求:Bug 25984 - Isolate parser from database dependencies

+1

至少似乎有一些[現在的文檔...](https://doc.wikimedia.org/mediawiki-core/master/php/classParser.html#details) – mb21 2016-08-04 18:11:05

相關問題