2012-12-08 97 views
0

我想利用用户输入的控制台,如“关键字和关键字2”或“关键字和(1关键字或KEYWORD3)”Java的布尔查询

然后我想解释的是,将其转换成布尔查询数组中的关键字。

它必须处理“和”,“或”和“()”括号。

我宁愿不使用第三方库,但如果没有简单的方法,我会采取。我开始研究Lucene,但它对我的需求来说似乎很复杂,我希望能够查询数组而不是文档。

编辑:注意我对编程相当陌生,所以更简单的解决方案是首选。

+0

你应该可能谷歌的“解析器生成器”,并选择一个你喜欢的。您使用的是Java,所以ANTLR可能是一个不错的选择。或者你可以自己写;递归下降解析器不太难构建。 – tmyklebu

回答

0

您需要一个解析器,但是如果您将输入封装在将生成有效类的代码中,则可以考虑使用java编译器本身。

+0

有没有一个在默认的类中,或者我应该使用一个像Lucene? 你是什么意思“用代码包装输入”?你有没有一个例子。我是一个noob :) – jigglylizard

0

您可以使用编译器的编译器,如JavaCC。它可以产生java代码,而不是用你自己的语法解析表达式并解释它。在这种情况下,你不应该使用外部库。

There is JavaCC上的算术计算器的示例。