我有一个要求,但我不太了解实现细节。 我有一个查询字符串 -->
(title:java or author:john) and date:[20110303 TO 20110308]
基本上,查询字符串是由 lucene 语法组成的。 我真正需要做的是将查询字符串解析为 AST 并将 AST 转换为 lucene 查询。
我不熟悉编译器或解析器技术,但遇到了 Irony 项目。 有人可以指出我如何以及从哪里开始吗?使用 Irony 或手工制作都可以。
非常感谢。
最佳答案
抱歉回复晚了:
一般来说,要创建解析器,最好先抽象地描述语法,然后使用解析器生成器生成解析器。
我创建了 lucene-query-parser.js使用 PEG 的图书馆语法,在 Github 仓库中 here .该语法特定于 PEG.js并使用 JavaScript 为解析的查询实现 AST 样式的结果。
不必返回 AST 样式结构,但我发现这对于我为其编写语法的项目最有用。您可以重新实现语法以返回您想要的任何类型的解析器结果。
关于parsing - 如何构建解析器以将 Lucene 语法解析为 AST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269545/