ometa SExp <: Parser { term = letter+:x -> x.join(''), term = exp, exp = "(" listOf('term',''):xs ")" -> xs } SExp.matchAll("(asdf (one two three) (four))", "exp")