Basit SQL benzeri dizeleri ayrıştırabilen bir scalada ayrıştırmaya çalışıyorum. Çalıştığım temellerini var ve böyle bir şey ayrıştırabilir:scala'daki özyinelemeli yapıları ayrıştırma
select id from users where name = "peter" and age = 30 order by lastname
Ama şimdi yani
benim 'combinedPredicate' mevcut üretim şöyleselect name from users where name = "peter" and (age = 29 or age = 30)
, iç içe ve sınıfları ayrıştırmak merak :
def combinedPredicate = predicate ~ ("and"|"or") ~ predicate ^^ {
case l ~ "and" ~ r => And(l,r)
case l ~ "or" ~ r => Or(l,r)
}
ben yinelemeli kendi içinde combinedPredicate üretimini başvuran çalıştı ama bu bir stackoverflow sonuçlanır.
"tembel val" ile ilgili olarak, yeni paket kabiliyetlerini kullanmak için ": Parser [Any]" 'dan ": PackratParser [Any]"' a kadar açık tipteki bildirimleri değiştirmek için de lütfen farz edin. (Http://stackoverflow.com/questions/3343697/scala-parser-combinators-tricks-for-recursive-bnf adresinde belirttiğiniz gibi) – svrist