0

私がこれをやろうとしているのは、.NET で次のケースの単純なパーサーを作成することです

( [PART3]function1() AND [PART4]function7() ) OR [PART2]function90() 
  • [PART]は評価場所を示します (これが巨大なテキスト ファイルであると仮定すると、PART はテキスト ファイルを大きなチャンクに分割します)。
  • function()s は、このクエリを介して呼び出すことができる文書化された関数です。返品trueまたはfalse
  • thisTrue/Falseとその他の演算子に基づいて、結果を結合し、入力全体から最終的な True または False を返したいと思います。

.NET でそのようなことを実装する最良の方法は何ですか?これを統合できる簡単なライブラリはありますか?それとも単純なパーサーを作成して自分で実行する必要がありますか?

PS 質問の適切なタイトルが見つかりませんでした。

4

2 に答える 2

1

アイロニーを試してみてください。プライムタイムの準備はまだできていませんが、ある程度の見込みがあります。

Ironyは、.NETプラットフォームに言語を実装するための開発キットです。これは、c#言語と.NET Framework 3.5の柔軟性と能力を使用して、コンパイラー構築のまったく新しい合理化されたテクノロジーを実装します。ほとんどの既存のyacc/lexスタイルのソリューションとは異なり、Ironyは、特殊なメタ言語で記述された文法仕様からのスキャナーまたはパーサーコード生成を採用していません。Ironyでは、ターゲット言語の文法は、演算子のオーバーロードを使用してc#で直接コーディングされ、文法構造を表現します。Ironyのスキャナーおよびパーサーモジュールは、c#クラスとしてエンコードされた文法を使用して、解析プロセスを制御します。

于 2009-06-28T09:18:05.377 に答える
1

単純な条件のように見えるので、私の意見では、フル機能のコンパイラ プロデューサーは必要ありません。逆ポーランド記法を調べ、それを使用して条件をスタックにアンラップし、単純な解釈を使用して結果のスタックを評価することをお勧めします。

于 2009-06-28T10:10:25.753 に答える