我正在編寫一個允許用戶輸入布爾表達式的應用程序。我需要能夠在運行時評估輸入的布爾表達式,並且正在尋找一個解析器和一個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#中工作,但是如果您知道使用另一種語言編寫的內容可能會有幫助。
感謝您提供的任何幫助。 Tom
ANTLR +1。如果你看到這個並解僱它,認爲這太麻煩了,請重新考慮。我建議您使用ANTLRworks作爲語法開發工具,並將其輸出到您的Visual Studio項目樹中的詞法分析器和分析器類。它相對無縫,並且很容易迭代地調整語法,並很快在.NET世界中看到它的效果。 – 2010-02-18 21:40:48
上面的「你」,我的意思是托馬斯OP。 – 2010-02-18 21:41:27
@Chris Farmer:這是針對C#Compact Framework的...可能會有點沉重... – t0mm13b 2010-02-18 21:58:11