c#将字符串表达式转换为布尔表达式

是否可以将字符串表达式转换为布尔条件?

例如,我得到以下字符串:

var b = "32  20" 

我想创建一个bool表达式并调用它。 字符串表示也很灵活(使其更有趣),因此它允许||, &&, ()

我会使用Irony ,.NET语言工具包。 您可以使用Irony构造一个简单的语法,然后将该字符串解析为可执行命令。 在本教程和Expression Grammar Sample中有一个很好的关节语法示例 ,这是一个非常常见的请求;)

我绝对建议使用正确的编译器而不是Regex或者滚动你自己的方法 – 如果你想添加更多规则,它将更具可扩展性。

看看CodePlex上的Flee (Fast Lightweight Expression Evaluator)。

如果它遵循所有C#表达式规则,则按照http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm将其编译为动态代码。

如果你正在处理相对简单的数学表达式,那么分流码算法的直接实现应该可以解决问题。

我认为为这个字符串创建一个解释器不会花费太长时间。

http://www.industriallogic.com/xp/refactoring/implicitLanguageWithInterpreter.html

在这里,您可以找到有关可用于创建它的设计的信息。

你可以看看JINT(Javascript Interpreter for .NET) http://jint.codeplex.com/