gpt4 book ai didi

c# - 断言保存在字符串中的 bool 条件

转载 作者:行者123 更新时间:2023-11-30 23:29:31 24 4
gpt4 key购买 nike

我有一个条件如下的字符串:

string conditions = "true && true || false || true ";

如何断言整个字符串为真或假?

例如,像这样:

if( Assert(conditions) == true ){
// passed
}

我需要一些可以在 C# 中轻松获得的东西,而无需求助于第 3 方库。

最佳答案

这是一个静态方法,可以做你想做的事,但它太慢了!!

public static object Eval(string booleanExpression) {

var c = new Microsoft.CSharp.CSharpCodeProvider();
var icc = c.CreateCompiler();
var cp = new System.CodeDom.Compiler.CompilerParameters();

cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;

StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n" );

sb.Append("namespace BooleanEvaluator{ \n");
sb.Append("public class BooleanEvaluator{ \n");
sb.Append("public bool Evaluate(){\n");
sb.Append("return "+booleanExpression+"; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");

var cr = icc.CompileAssemblyFromSource(cp, sb.ToString());

System.Reflection.Assembly a = cr.CompiledAssembly;
object o = a.CreateInstance("BooleanEvaluator.BooleanEvaluator");

Type t = o.GetType();
MethodInfo mi = t.GetMethod("Evaluate");

return (bool) mi.Invoke(o, null);
}

然而,Dai 建议的分词器和解析器可以很容易地用 ANTLR 生成和一个 bool 表达式语法。那会快很多!请参阅:ANTLR v3 grammar for boolean/conditional expression

关于c# - 断言保存在字符串中的 bool 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com