我需要将关键字和运算符的布尔搜索字符串解析为要从 C# 代码执行的 SQL 查询。我认为我需要像 ANTLR 这样的东西来完成这项任务,但我不知道该怎么做。
有没有关于如何做到这一点的好教程?或者也许我需要一个不同的工具?
我的意思的一个例子如下。我需要的唯一运算符是 AND 和 OR。我也希望能够使用括号。
输入表达式:(蓝色和绿色)或黄色
输出:
SELECT * FROM table WHERE (CONTAINS(Description, "blue") AND CONTAINS(Description, "green")) OR >CONTAINS(Description, "yellow"
如果可能的话,我还想支持隐式 AND 插入。因此,如果未指定任何运算符,则默认运算符为 AND。
输入:绿色(蓝色或黄色)
输出: SELECT * FROM table WHERE CONTAINS(Description, "green") AND (CONTAINS(Description, "blue") OR >CONTAINS(Description, "yellow"))