Tôi đã viết một số trình phân tích cú pháp từ thư viện kết hợp. Tôi muốn một hàm tổng quát biến đổi bất kỳ kích cỡ tổ nào thành một danh sách. Làm như thế nào ?Scala: Làm phẳng phân tích cú pháp (~) từ trình kết hợp bộ phân tích cú pháp thành Danh sách?
Dưới đây là ví dụ về trình phân tích cú pháp tôi sử dụng (trình phân tích cú pháp thực của tôi có chuỗi rất dài ~ vì vậy tôi muốn tránh giải pháp hiện tại của tôi có nhận xét dưới đây).
object CombinatorParser extends RegexParsers {
lazy val a = "a"
lazy val b = "b"
lazy val c = "c"
lazy val content = a ~ b ~ c // ^^ {case a~b => a::b::c::Nil work but I want something more general that work for any ~ length.
}
object CombinatorTesting {
def main(args:Array[String]) {
val testChar = "abc"
val output = CombinatorParser.parseAll(CombinatorParser.content, testChar)
println(output) // ((a~b)~c) but I want List(a,b,c)
}
}
Tôi không nghĩ đó là có thể. Bạn không thể tách dây chuyền thành những miếng nhỏ hơn? Chính xác những gì bạn đang cố gắng để làm? Có lẽ nếu bạn cho thêm một chút ngữ cảnh, ai đó có một giải pháp tốt hơn cho việc này. – drexin