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
我有一種感覺,我會最終不得不此我自己從頭開始編寫代碼,但不希望重新發明車輪。在仔細研究之後,我確實遇到了解析器/語法等參考,但我不太確定這些解決方案是否適合該法案。
您可以使用像ANTLR(或C#等價物)或Parser-Combinator庫(如果有一個用於C#)的工具來簡化生活。 – 2012-09-20 19:21:27
查看使用表達式樹http://msdn.microsoft.com/en-us/library/bb397951.aspx –
有關ANTLR&C#演示,請參閱:http://stackoverflow.com/questions/4396080/antlr -3-3-c-sharp-tutorials –