0

我确定这已经完成了,我只是找不到它。

我需要将“((A OR B)AND C)OR D”之类的内容转换为属性的数据库查询。具体来说,我正在使用 Ruby Sequel。任何人都可以指出一个例子或实用程序或一些可以阻止我重新发明轮子的东西吗?

4

1 回答 1

2

您可以使用ANTLR定义语法并为这些类型的字符串自动生成 Ruby 解析器。ANTLR 是一个解析器生成器,它允许您为一种语言(例如您描述的布尔语言)定义语法。

解析后,您可以指定需要采取哪些操作来构建所需的数据结构(在您的情况下是捕获查询结构的树数据结构)。

这并不是一个特别的 Ruby 问题,因为 ANTLR 也可以为其他语言生成解析器。在您的情况下,它将生成一个 Ruby 解析器,您可以将其集成到您的应用程序中以解析字符串并生成您需要的数据结构。

于 2012-08-28T21:16:25.300 回答