6

基本的にスクリプト可能なメールマージ機能の一部として、C# プロジェクトで使用するためにCoco /Rと ANTLRを使用して評価しています。(単純な) スクリプトを解析するには、パーサーが必要です。

私は Coco/R と ANTLR に焦点を当てました。どちらもかなり成熟しており、適切に管理されており、適切な C# パーサーを生成できるように思われるからです。

ただし、どちらも簡単に使用できるようには見えませんが、シンプルさは私が高く評価するものです。特に、他の人にとっての保守性は高く評価されます。

誰かに推奨事項はありますか?小さな言語を解析することの長所/短所は何ですか?または私は完全に間違ったことを調べていますか? これらは、典型的な継続的インテグレーションのセットアップにどの程度うまく統合されていますか? 落とし穴は何ですか?

関連: 12345など、多くの質問があります。

4

4 に答える 4

3

ANTLR は LL(*) であり、PEG と同じくらい強力ですが、通常ははるかに効率的で柔軟です。LL(*) は、k>1 の場合に LL(k) に退化します。1 つの任意の先読みは必要ありません。

于 2010-04-28T19:05:44.397 に答える
2

基本的に、coco/r は再帰降下パーサーを生成し、LL(1) 文法のみをサポートしますが、ANTLR は (他の手法の中でも) バックトラッキングを使用するため、より複雑な文法を処理できます。coco/r パーサーははるかに軽量で、理解しやすく展開しやすいですが、多くの一般的なプログラミング言語の文法 (例: C++、 SQL)、それはまったく不可能です。

于 2010-04-27T16:45:13.903 に答える
2

単純にデータを複雑なテンプレートにマージする場合は、Terence Parr のStringTemplate エンジンを検討してください。彼はANTLRの背後にいる男です。StringTemplate は、完全なパーサー ジェネレーターよりも適していて、使いやすい場合があります。非常に機能豊富なテンプレート エンジンです。

ダウンロードで利用可能な C# ポートがあります。

于 2010-04-27T15:12:09.603 に答える