6

XMLパーサーがエンティティツリーを生成するのと同じように、Wiki形式のテキストを入力として受け取り、エンティティのツリーを生成できるパーサーを知っている人はいますか?明確にするために、私は次のようなテキストをとる何かを探しています:

 -Intro-
 Textual stuff in ''italics''
 --Subhead--
 Yet more text

イントロをルートとするツリーを作成し、3つの子ノードを作成します。そのうちの1つ(小見出し)自体に子があります。http://meta.wikimedia.org/wiki/Help:Wikitextで説明されている「単純な」ウィキ形式を理解できるものを探しています。

Wikiテキストのレクサーはいくつか知っていますが、ツリーパーサーはありません。オープンソースでCまたはC++で書かれたものを探しています。

4

5 に答える 5

2

Mylyn WikiTextを参照してください。これは Builder デザイン パターンを使用して wiki マークアップをさまざまな XML 形式に変換するパーサーです。HTML、Eclipse ヘルプ、DITA、および DocBook のビルダーが同梱されています。独自のビルダーを使用して、出力をカスタマイズできます。

パーサーは、Textile、MediaWiki、TracWiki、TWiki、および Confluence マークアップを処理できます。必要に応じて新しい言語を追加できるように拡張可能です。

ライブラリはJavaです

于 2009-02-22T03:13:45.020 に答える
2

私がすることは

  1. そのウィキ言語の BNF 構文を記述します。シンプルなのでBNFもシンプルになります。
  2. The Spirit Frameworkを使用してパーサーを作成します。これは非常に単純で (その単純なことに対して)、BNF 構文は非常に自然に C++ に変換されます。
于 2009-02-15T08:28:52.620 に答える
2

Java でこのようなツリーを内部的に作成するパーサーを作成しました: Java Wikipedia API

C または C++ の実装についてアイデアを得ることができるかもしれません。

HTMLConverterクラスは、内部ノード ツリーを取得して HTML マークアップに変換します。

于 2009-02-15T08:45:59.117 に答える
2

wiki 形式には完全な情報がないため、wiki 形式のページから直接行うことはできません。代わりに、Wiki 形式のテキストは基本的に一連の正規表現ルールによって変換され、HTML または XHTML で定義済みのページ フレームワークに挿入されます。

必要なことを行う最も簡単な方法は、軽量のテキスト形式 (テキスタイルやクレオールなど) に適したフォーマッターを見つけ、それを通過させて XHTML を生成し、通常のパーサーを使用して XHTML を解析することです。

于 2009-02-15T03:44:33.813 に答える
1

この Perl モジュールからいくつかのアイデアが得られるかもしれません:

http://search.cpan.org/dist/HTML-WikiConverter-MediaWiki/

あなたが C/C++ を探していることは理解しています。

于 2009-02-15T04:59:20.840 に答える