java - 用 Java 实现自由格式查询语言

标签 java antlr

我正在开发一个 api,它将接受像“(A < 5) & (B = xyz*)”这样的搜索字符串,并以正确的结果响应。此自定义查询语言是预定义的,我无法更改它。我知道我可以为这个表达式指定CFG,然后使用ANTRL构建解析树并实现这个功能。在 Java 中是否有更简单有效的方法来做到这一点?有没有可以处理这种通用查询语言的库?

最佳答案

Antlr 生成的解析器非常高效。它们写起来并不简单,但我想不出任何更容易的替代方案。

Is there any library that can handle this kind of generic query language?

问题是不存在通用查询语言这样的东西。每一个都是不同的,你的也不异常(exception)......从外观上看。

如果这只是一种表达式语言,而您只想“解析和评估”它们,我建议您使用Antlr,但不要构造解析树。相反,将评估代码嵌入到语法本身中,并让每个产生式传递评估其匹配的子表达式的结果。 (我打赌教程中有一个例子可以做到这一点......)

关于java - 用 Java 实现自由格式查询语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16459115/

相关文章:

java - Jetty 可以在热部署时获取对 WEB-INF/lib 的更改吗?如何?

java - hibernate 和 jpa 怪异;意外的懒惰获取

c# - 为什么 input.TokenStream 解析为 null?

ANTLRv3 不读取选项

c# - Antlr4 C# 构建错误

error-handling - ANTLR语法-如何添加成员覆盖错误处理

java - 我似乎无法让 RadioButtons 在 JavaFX 中工作

java - 静态文件上传(文本或 HTML)会导致 Google App Engine 中完全部署吗?

java - java中从字符串中查找字符串

c# - ANTLR - 为 AST 编写树语法