如何构建一个解析器将lucene语法解析为AST

jm2pwxwz  于 2022-11-07  发布在  Lucene
关注(0)|答案(3)|浏览(151)

我有一个需求,但我不太了解实现细节。我有一个查询字符串,如--〉

(title:java or author:john) and date:[20110303 TO 20110308]

基本上,查询字符串是用lucene语法组成的。2我真正需要做的是把查询字符串解析成AST,然后把AST转换成lucene查询。
我不熟悉编译器或解析器技术,我遇到了Irony项目。有人能告诉我如何和从哪里开始吗?使用Irony或手工制作都可以。
谢谢你,谢谢你

6jjcrrmo

6jjcrrmo1#

很抱歉回复晚了:
一般来说,要创建解析器,最好抽象地描述语法,然后使用解析器生成器生成解析器。
我使用PEG语法创建了lucene-query-parser.js库,该语法位于Github存储库here中,该语法特定于PEG.js,并使用JavaScript为解析后的查询实现AST样式的结果。
没有必要返回AST风格的结构,但是我发现这对于我编写语法的项目来说是最有用的。您可以重新实现语法以返回任何类型的解析器结果。

w1e3prcc

w1e3prcc2#

您还可以查看Myna parser,它是一个JavaScript解析库,其中包含一个Lucene grammar示例。Myna解析器自动生成一个AST,您可以轻松地将其转换为所需的任何形式。

相关问题