4

次のようなC#言語で数式を解析しようとしています

"5*3 + 2" 
"(3*4 - 2)/5"

C#またはVBScript、JavaScript(C#プログラムで呼び出される)などのスクリプトで行うことは可能ですか?

4

3 に答える 3

4

あなたが説明したような式を評価する C# ライブラリであるFleeで素晴らしい経験をしました。式を厳密に型指定されたステートメントとして評価できるため、たとえば整数が必要な場合は、「(1 + 2) * 5」は問題ありませんが、「hello world」はそうではありません。

特定の変数や関数をフックすることもできます。Fleeの例のページは、出発点として最適です。

于 2010-04-15T02:02:24.757 に答える
2

この種のことを C# で行うために以前に使用したトリックがあります。それは、JScript.NET のeval関数を使用することです。完全なコードは、この質問に対する私の回答にあります。VBScript や JavaScript などのスクリプト言語に依存するのではなく、純粋な .NET であり、私が使用する実装は C# コードからオンザフライで JScript.NET アセンブリを生成するため、ソリューションに言語を混在させる必要はありません。

于 2010-04-15T02:06:13.063 に答える
1

Microsoft のDynamic Linqサンプルを使用して、 System.Linq.Expressions 名前空間の型を使用する式を動的に作成することに成功しました。これは私にとって非常にうまく機能し、ActiveReportsのデフォルト式の代わりにより自然な C# 構文を使用できるようになりました。

于 2010-04-15T02:17:05.087 に答える