布尔和数学表达式解析器

Tho*_*mas 9 .net parsing expression boolean compact-framework

我正在编写一个允许用户输入布尔表达式的应用程序.我需要能够在运行时评估输入的布尔表达式,并且正在寻找解析器和expressoin验证器.

解析器
解析器需要将布尔表达式作为字符串并返回true/false.

例:

string expression = "(1 == 1) && (1 > 0)";
Parser parser = new Parser();
boolean result = parser.parse(expression);  // Result should be True.

除了处理布尔表达式之外,我还需要它来处理数学.

expression = "((1 + 1 * 2) == 1)";
result = parser.parse(expression);  // Result should be False.

验证
这样我就可以告诉用户输入的表达式是否有问题我还需要一种方法来验证语法.

我使用.NET Compact Framework在C#中工作,但如果您知道用其他语言编写的内容可能会有所帮助.

感谢您的任何帮助,您可以提供.汤姆

Jas*_*rse 6

我们的项目正在使用NCalc(下面有ANTLR用于lexing /解析),我们对此非常满意.

NCalc是.NET中的数学表达式求值器.NCalc可以解析任何表达式并评估结果,包括静态或动态参数和自定义函数.

我们的应用程序要求对完整框架和紧凑框架进行交叉编译.通过相对简单的调整,我们能够使NCalc和ANTLR都适用于两种框架风格.


Ste*_*ell 3

http://www.antlr.org

Antlr 语法可以设计为允许解析和评估。

这是一个例子:http ://www.antlr.org/wiki/display/ANTLR3/Expression+evaluator