さまざまなファイル形式を処理する必要があります。少なくとも50、場合によっては100以上。
過去にAntlrで遊んだことがあります。ただし、いくつかの理由から、Antlr がこのプロジェクトに適しているかどうかはわかりません。
- 文法や文法の断片を組み合わせて再利用するのは難しい
- Antlr はコード生成を行います。既存のパーサーに変更を加えるには、Antlr に戻って変更を加え、コードを再生成し、コードをコードベースに統合し、単体テストを実行する必要があります。
- ツリーの構築/処理を行うには、Antlr 内で別の言語を処理する必要があります -- 将来の開発者にとって潜在的な問題です
基本的に、私は Antlr が好きですが、やや単純な言語/形式用の 100 個のパーサーよりも、複雑な言語用の 1 つまたは 2 つのパーサーを作成するのに適していると思います。
Antlr のようなパーサー ジェネレーターに代わるものは、パーサー コンビネーターです。利点は、パーサーがコードに直接統合されているため、再利用、テスト、およびさらなる抽象化が非常に簡単になることです。また、将来の開発者は新しいツールの使い方を学ぶ必要がなくなります。パーサー・コンビネーターの欠点は、Java で使用するための強力なライブラリーを私が知らないことです。
質問は次のとおりです。
- Antlr は、このような大規模な解析プロジェクトに適していますか?
- Java で大規模な解析を行うための他のオプションは何ですか?
注: 一部のファイル形式は CSV またはタブ区切りで、一部はやや複雑で、一部は Java と同じくらい複雑です。セマンティクス的には、非常に複雑になることもあります (ただし、すべてがそうであるわけではありません)。