実行ごとにASTを解釈するのではなく、式ツリーとして実行するようにスクリプトをサポートする既存のテンプレートソリューションを書き直しており、ロジックは既存のスクリプトで機能する必要があります。
私が今達成しようとしているのは、真をテストするためのソリューションを作成することです。
元。nullまたは空の文字列は、0および絶対値が0.0001未満の10進値と同様にfalseと見なされます。「true」と「false」は大文字と小文字を区別せず、文字列「null」はfalseです。
有効な入力タイプは、float、int、string、boolのみです。
コンパイルする式ツリーに組み込むことができるソリューションはすべて有効であり、オブジェクトをテストするための既存のメソッドがすでにありますが、外部メソッドを呼び出すための良い例を見つけることができません。
すべての例は、定数値で機能するか、引数を受け入れません。
アップデート
「Expression.ABC」メソッドを使用してツリーを構築していますが、式ツリーの結果のタイプ(string、int、float)を切り替える方法に資金を提供する際に問題が発生しています。
現在の構文はすべてを文字列として格納し、操作に応じてintとfloatに解析し、失敗した場合はデフォルト値を返します。
テンプレートに不正な構文が指定されている場合でも、フェイルセーフであり、常に結果の生成に成功するように構築されています。
アップデート
例(100%正確ではありませんが、現在のインタプリタを例示するため)
string Evaluate(Expr e) {
switch(Expr.Type) {
case "istrue":
ExprValue value = Evaluate(Expr.Child);
switch(value.Type) {
case "String":
if(String.IsNullOrWhiteSpace(value.ToString()) || value.ToString().ToLower() == "false" || value.ToString().ToLower() == "null" || value.ToInt() == 0) return false;
case "Int":
return value.ToInt() != 0;
case "Float":
}
}
}
*更新*タイトルを変更