0

我想解析一个类似 SQL 的输入,例如:

SEX = 'MALE' AND AGE > 20

然后根据“sql”输入搜索我的 c# 项目数组。

例如上面的例子,我会在我的数据中搜索所有 Item.Sex 属性设置为“MALE”且 Item.Age 属性大于 20 的项目。

这是一个简单的示例,您可以轻松地开始想象更复杂的场景。例如:

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

我需要能够支持以下运营商:

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

我有一种感觉,我最终不得不自己从头开始编写代码,但不想重新发明轮子。在研究了一会儿之后,我确实遇到了对解析器/语法等的引用,但不太确定这些是否符合要求。

4

1 回答 1

1

您可能需要自己解析输入,但使用解析器生成器(如ANTLR),工作量并不大。

于 2012-09-20T19:22:26.370 回答