ウィキペディアで見つかったウィキメディア マークアップを (Java で) 解析しようとしています。このタスク用の既存のパッケージが多数ありますが、私のニーズに特に適したものは見つかりませんでした。私が使った中で最高のパッケージはMathclipse Bliki パーサーで、ほとんどのページでまともな仕事をします。
ただし、このパーサーは不完全で、特定のページの解析に失敗したり、他のページを正しく解析しません。悲しいことに、コードはややこしいので、この解析エンジンの問題を修正するには非常に時間がかかり、エラーが発生しやすくなります。
より優れた解析エンジンを見つけようとして、このタスクに EBNF ベースのパーサー (特に ANTLR) を使用して調査しました。しかし、いくつかの試行の後、ウィキメディアのマークアップは比較的緩和されており、構造化された文法に簡単に適合できないため、このアプローチはこのタスクにはあまり適していないようです。
ただし、ANTLR および同様のパーサーに関する私の経験は非常に限られているため、そのようなパーサーが本質的にこのタスクにあまり適していないというよりも、問題を引き起こしているのは私の経験不足である可能性があります。これらのトピックについてより多くの経験をお持ちの方は、ここで検討していただけますか?
@Stobor: Google クエリによって返されるものを含め、さまざまな解析エンジンを見てきました。私がこれまでに見つけた最高のものは、Bliki エンジンです。問題は、そのようなパーサーの問題を修正するのが信じられないほど面倒になることです。これらのパーサーはすべて、本質的に条件文と正規表現の長いチェーンであり、結果としてスパゲッティ コードになるからです。EBNF 解析法に似たものを探しています。その方法はより明確で簡潔であり、理解しやすく進化しやすいからです。あなたが投稿した mediawiki のリンクを見てきましたが、箱から出してすぐに使える EBNF はこのタスクにはあまり適していないという私の疑いを裏付けているようです。したがって、私は、EBNF のように明確で理解しやすいだけでなく、wiki マークアップの乱雑な構文を処理できる構文解析エンジンを探しています。