Scala:Свести результат разбора (~)из анализатора комбинаторов в список?

Я написал парсер из комбинаторной библиотеки. Мне нужна универсальная функция, которая преобразует любой размер гнезда ~в список. Как это сделать?

Вот мой пример парсера, который я использую (мой настоящий парсер имеет очень длинную цепочку ~, поэтому я хочу избежать моего текущего решения, которое находится в комментарии ниже).

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)
  }
}
11
задан Tg. 7 March 2012 в 01:07
поделиться