在尝试寻找答案时-我发现ANTLR似乎是实现查询语言的一般任务的标准/参考实现。
似乎每个面临任务的人都在做同样的事情-学习ANTLR是什么,如何配置它,如何使用它,然后构建自己的QL实现。
没有免费/开放的示例或基本/通用查询语言的参考实现(例如Hibernate或Cassandra中使用的一种,实际上是在幕后使用ANTLR)或某个语言的“哪里”部分常规SQL?我确实相信这对许多项目来说是非常常见的任务,如果每个人都从头开始重新实现它(这意味着ANTLR学习曲线),那是一种耻辱。
例如此处:Implementing free form query language in Java 接受的答案说:
问题在于没有通用查询语言之类的东西。每个人都不一样,您也不例外
我不同意上面的说法,因为SQL,Cassandra的QL和HibernateQL具有90%以上的相似性,因此两者之间有一个共同的部分-我正在寻找的那个部分希望不要重新实现方向...
以下示例之间的全面程度都可以:
级别1:
查询/过滤器:“ x> 1”,预期结果:2和3
级别2:
查询/过滤器:“ x> 1和y <3”,预期结果:2
级别3:
查询/过滤器:“ x> 1和(y <2或y> 3)”,预期结果:2
...
N级:
查询/过滤器:“(x> 2或x in('z',1))和(y in(1,2)或(y如'%3%',y如'%5%') )” 预期结果:1和3
问题:是否存在一个现有的(是否基于ANTLR的)Java解决方案(是否可扩展),可以用作查询/过滤器引擎(作为框架或示例来构建/扩展)上面的例子?
P.S。在这里做了一些“功课”,但似乎没有一个人回答我的特定话题...也许在2019年太过期待了:)