我需要找到一个快速,轻量级的表达式解析器.
理想情况下,我想传递一个名称/值对列表(例如变量)和一个包含要评估的表达式的字符串.我需要的只是一个真/假值.
表达式的类型应该是:
varA == "xyz" and varB==123
Run Code Online (Sandbox Code Playgroud)
基本上,只是一个简单的逻辑引擎,其表达式在运行时提供.
更新
至少需要支持==,!=,>,> =,<,<=
关于速度,我希望每个请求大约执行5个表达式.我们会看到附近的某个地方/请求一秒钟.我们当前的页面往往在50ms以内执行.通常,任何表达式中只涉及2或3个变量.但是,我需要在执行之前将大约30加载到解析器中.
更新2012/11/5
有关性能的更新.我们近2年前实施了nCalc.从那以后,我们扩大了它的使用范围,使得我们在帖子背面平均覆盖300多个变量的40多个表达式.现在每秒发生数千次回发,性能严重下降.
我们还扩展了它,包括一些额外的功能,同样没有性能损失.简而言之,nCalc满足了我们的所有需求并超出了我们的预期.
我需要评估一个在C#中作为字符串呈现给我的数学表达式.示例noddy但是得到了字符串作为表达式的点.
我需要求值然后填充一个int.
C#中没有Eval(),就像其他langugaes一样......
String myString = "3*4";
Run Code Online (Sandbox Code Playgroud)
编辑:
我在VS2008上
试过Microsoft.JScript.=已弃用的方法(但仍然符合 - 警告)
但是,我已经使用的Microsoft.JScript DLL工作了
public object InvokeMember(string name,BindingFlags invokeAttr,Binder binder,object target,object [] args);
抱怨缺少";" 去搞清楚...
编辑2
解决方案 - 是codeDom之一 - 因为没有安全问题,所以它工作 - 只有我才能运行代码.非常感谢回复......
和新龙书的链接真棒
编辑3
Matt dataTable.Compute()也有效 - 对于安全意识更好.(注明参数检查)