Dot-Net

布爾和數學表達式解析器

  • January 8, 2018

我正在編寫一個允許使用者輸入布爾表達式的應用程序。我需要能夠在執行時評估輸入的布爾表達式,並且正在尋找解析器和 expressoin 驗證器。

解析器

解析器需要將布爾表達式作為字元串並返回真/假。

例子:

字元串表達式 = "(1 == 1) && (1 > 0)";
解析器 parser = new Parser();
布爾結果 = parser.parse(表達式); // 結果應該為真。

除了處理布爾表達式,我還需要它來處理數學。

表達式 = "((1 + 1 * 2) == 1)";
結果 = parser.parse(表達式); // 結果應該是假的。

驗證

為了告訴使用者輸入的表達式是否有問題,我還需要一種方法來驗證語法。

我正在使用 .NET Compact Framework 在 C# 中工作,但如果您知道用另一種語言編寫的內容可能會有所幫助。

感謝您的任何幫助,您可以提供。湯姆

http://www.antlr.org

Antlr 語法可以設計為允許解析和評估。

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

我們的項目正在使用NCalc(在下面使用ANTLR進行詞法分析/解析),我們對此非常滿意。

NCalc 是 .NET 中的數學表達式求值器。NCalc 可以解析任何表達式並評估結果,包括靜態或動態參數和自定義函式。

我們的應用程序要求它針對完整框架和緊湊框架進行交叉編譯。通過相對簡單的調整,我們能夠使 NCalc 和 ANTLR 都適用於兩種框架風格。

引用自:https://stackoverflow.com/questions/2292003