私はC#初心者です。C#で電卓アプリを書きたいです。C# 式ツリーは、根性を求めるのに適した方法でしょうか? (つまり、一連のキー押下を受け取り、電卓が評価して画面に表示できる式に変換する部分. . . またはグラフ.)
三角関数、ログ、指数などの標準的な数学関数を含めたいと思います。
私はC#初心者です。C#で電卓アプリを書きたいです。C# 式ツリーは、根性を求めるのに適した方法でしょうか? (つまり、一連のキー押下を受け取り、電卓が評価して画面に表示できる式に変換する部分. . . またはグラフ.)
三角関数、ログ、指数などの標準的な数学関数を含めたいと思います。
数式用の言語は間違いなく C# よりもはるかに単純なので、AST を表すためにフレームワークの式ツリー クラスを再利用しようとするのはやり過ぎであり、おそらくフラストレーションのレシピになると思います。これらのクラスを見ると、小さな言語にはまったく関係のない多くのプロパティと機能が表示されます。私があなただったら、私はあなた自身を転がします。
あなたはこのプロジェクトから学ぶことができるかもしれません.それがどのように作られたかについての良いチュートリアルがあります.
http://ncalc.codeplex.comを見たことがありますか?
拡張可能で高速 (独自のキャッシュがあるなど) であるため、EvaluateFunction/EvaluateParameter イベントを処理することにより、実行時にカスタム関数と変数を提供できます。解析できる式の例: Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi"); e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args) { if (name == "Pi") args.Result = 3.14; };
Debug.Assert(117.07 == e.Evaluate());
また、Unicode と多くのデータ型をネイティブに処理します。グラマーを変更したい場合は、antler ファイルが付属しています。新しい機能をロードするために MEF をサポートするフォークもあります。
また、論理演算子、日付/時刻の文字列、および if ステートメントもサポートしています。