我正在尝试在 scala 中构建一个解析器,它可以解析简单的类似 SQL 的字符串。我已经掌握了基础知识,可以解析如下内容:
select id from users where name = "peter" and age = 30 order by lastname
但现在我想知道如何解析嵌套和类,即
select name from users where name = "peter" and (age = 29 or age = 30)
我的“combinedPredicate”的当前生产如下所示:
def combinedPredicate = predicate ~ ("and"|"or") ~ predicate ^^ {
case l ~ "and" ~ r => And(l,r)
case l ~ "or" ~ r => Or(l,r)
}
我尝试在其内部递归地引用 combinePredicate 产生式,但这会导致 stackoverflow。
顺便说一句,我只是在这里试验......没有实现整个 ansi-99 规范;)