parsing - 如何构建解析器以将 Lucene 语法解析为 AST

标签 parsing lucene abstract-syntax-tree

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

(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/

相关文章:

typescript - 在 typescript AST 中获取变量声明类型的正确方法?

javascript - 将 request.body 解析为字符串然后创建 JSON

ios - 获取每个 "OtherUser"解析核心数据库的最新记录

java - 如何从 netbeans Web 应用程序启动 solr?

solr - Lucene大文档集平均查询时间

c++ - 将 R 函数作为 C 函数传递给 C

c# - Roslyn - 如何将多个节点分别替换为多个节点?

php - 使用php从google maps html调用解析json数据到mysql数据库

mysql - 如何在 SQL 中将列复制到逗号分隔项列表

search - 使用 Solr 实现搜索所有内容