将字符串解析为复杂布尔值的递归逻辑?

时间:2012-08-28 21:13:06

标签: ruby parsing filtering boolean-logic sequel

我确信之前已经完成了,我找不到它。

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

1 个答案:

答案 0 :(得分:2)

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

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

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