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

时间:2011-02-17 13:41:47

标签: c# parsing expression-trees

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

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

var b = "32 < 45 && 32 > 20"

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

7 个答案:

答案 0 :(得分:4)

在CodePlex上查看Flee(快速轻量级表达评估器)。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

如果它遵循所有C#表达式规则,则按照http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm

将其编译为动态代码

答案 3 :(得分:1)

如果你正在处理相对简单的数学表达式,那么shunting-yard algorithm的简单实现应该可以解决问题。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

看看我的图书馆Proviant。这是一个使用Shunting Yard algorithm评估布尔表达式的.NET标准库。您还可以实现自己的语法。