5

MediaWiki のコードを少しハッキングしてみましたが、独立したパーサーを入手できれば不要であることがわかりました。

誰でもこれで私を助けることができますか?

ありがとう。

4

2 に答える 2

6

ベン・ヒューズは正しい。特に、ウィキペディア自体のような大きなウィキの実際の記事を 100% の精度で解析したい場合は、正しく理解するのは非常に困難です。これは wikitech メーリング リストで頻繁に議論されており、多くの試行にもかかわらず、代替のパーサーはありません。

まず、AST (抽象構文木) のような概念がないという点で、実際にはパーサーではありません。HTMLに特化して変換するコンバーターです。

第二に、ウィキテキストを、まれに HTML で拡張できるマークアップ言語と考えるという罠に陥らないでください。これは HTML の拡張と考える必要があります。HTML サポートをウィキテキスト パーサーに追加するよりも、ウィキテキスト サポートを HTML パーサーに追加する方がはるかに簡単です。

要するに、他の形式が必要な場合は、HTML からその形式に変換する必要があるということです。

基本的に、ウィキテキストを解析できるのは MediaWiki のみであると述べられています。しかし、パーサーは残りのコードと緊密に統合されています。経験豊富な MediaWiki ハッカーは、パーサーの分離に関する質問にうまく反応しません - 私は試しました (-:

しかし、私はとにかくそれを隔離しました。まだ完成していないか、誰かと共有する準備ができていません。しかし基本的には、MediaWiki ソースがインストールされていないか、データベースや Web サーバーに接続されていない状態から始めたいと考えています。パーサーを含む PHP スタブ プログラムを作成し、エントリ ポイントを呼び出します。実行に失敗した場合のエラーを確認し、アクセスされたクラス、関数、またはグローバルに対して偽のスタブを作成します。パーサーが MediaWiki の残りの部分と対話する場所のほとんどをスタブ化するまで繰り返します。

問題は、ハッキングされたスタブ化されたバリアントを同期して維持することです。これは、ソース ツリーが急速に変更され、ライブ Wiki がパーサーの変更を非常に迅速に受け入れるため、バリアントが将来的に機能する場合は、バリアントを維持する必要があるためです。

私の機能リクエストを確認してください:バグ 25984 - データベースの依存関係からパーサーを分離する

于 2010-12-15T18:04:56.247 に答える
3

実際には、解析が非常に難しい形式です。メディア ウィキからパーサー コンポーネントを分離しようとすることもできますが (これも php であるため)、これは複雑な混乱です。私は、マークアップの非常に限られたサブセットに対してほぼ妥当な仕事をする部分的なスタンドアロンのものをいくつか見てきました。

たまたま実装したり、現在のウィキペディアをリファクタリングしたりする場合は、非常に役立つ可能性があるのでお知らせください。

于 2009-06-22T19:38:58.527 に答える