2008-11-27 94 views
6

我對選擇性地解析Mediawiki XML標記以生成自定義HTML頁面感興趣,該頁面是實際PHP Mediawiki渲染引擎生成的HTML的一部分。Mediawiki標記的開放源代碼解析器代碼

我希望它爲BzReader,一個用C#編寫的脫機Mediawiki壓縮轉儲閱讀器。所以一個C#解析器將是理想的,但任何好的代碼都會有所幫助。當然,如果以前沒有人做過它,我想是時候開始一個項目了,該項目基於Mediawiki自己的解析器維護一個自由獨立的Mediawiki解析器,但與Mediawiki本身的集成度較低。

那麼,有沒有人知道我可以開始的任何基地,這會比從Mediawiki PHP代碼黑客更好?

回答

7

有解析器上http://www.mediawiki.org/wiki/Alternative_parsers列表,但不包括有一個C#編譯器...

+0

對於.NET的集成,他雖然用鐵蟒蛇。 – 2008-11-28 02:44:26

+0

幾個小時後,我放棄了與那些python庫一起使用鐵python。太複雜... – jjxtra 2011-08-28 20:41:21

4

我有一些話想說來自維基模板here。有趣的是,現在有一個替代解析器的列表,我將不得不調查。

6

更新
裸記住使用ScrewTurn不沾MediaWiki的語法,但使用它自己的變化,這確實會略有不同。

Mediawiki語法不適用於LALR解析器(甚至LL *),因爲它的定義有很多含糊之處,並且還允許使用HTML。有對in this question的討論,你基本上堅持寫自己的解析器和分詞器,而不是簡單地寫爲它BNF文件,然後使用ANTLR /金/反諷。

Roadkill Wiki對其Mediawiki解析使用Creole parser,但支持有限。


使用ScrewTurn是在GPL許可下發布的,並具有一個C#編譯器:

你是後級是Core.Formatter其中有很多regexs做的工作:

public static class Formatter { 

} 

這不是最好看的代碼「但它的工作原理」。