c#将字符串表达式转换为布尔表达式[关闭]

问题描述 投票:9回答:7

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

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

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

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

c# parsing expression-trees
7个回答
4
投票

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

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


4
投票

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


2
投票

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


1
投票

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


0
投票

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

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

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.