2012-09-20 78 views
0

我想分析一個類似SQL的輸入,例如:基於「SQL」輸入然後我通過項目我的C#陣列搜索如何解析和/或在C#輸入?

SEX = 'MALE' AND AGE > 20 

因此,對於上面的例子,我會搜索我的數據有他們Item.Sex屬性設置爲「男性」和他們的財產Item.Age大於20

這是一個簡單的例子所有項目,您可以輕鬆開始想象更復雜的場景。例如:

(SEX = 'MALE' AND AGE > 20) OR (SEX = 'FEMALE' AND AGE < 30) 

我需要能支持以下運算符:

= 
> 
< 
<> 
() - for precedence 
AND 
OR 

我有一種感覺,我會最終不得不此我自己從頭開始編寫代碼,但不希望重新發明車輪。在仔細研究之後,我確實遇到了解析器/語法等參考,但我不太確定這些解決方案是否適合該法案。

+1

您可以使用像ANTLR(或C#等價物)或Parser-Combinator庫(如果有一個用於C#)的工具來簡化生活。 – 2012-09-20 19:21:27

+0

查看使用表達式樹http://msdn.microsoft.com/en-us/library/bb397951.aspx –

+1

有關ANTLR&C#演示,請參閱:http://stackoverflow.com/questions/4396080/antlr -3-3-c-sharp-tutorials –

回答

1

您可能需要自己解析輸入,但使用解析器生成器(如ANTLR),它不是太多工作。