progs/comb1a.scala
changeset 683 c6c79d21f8a8
parent 673 715b46eee102
child 686 05cfce0fdef7
equal deleted inserted replaced
682:553b4d4e3719 683:c6c79d21f8a8
    14 abstract class Parser[I : IsSeq, T] {
    14 abstract class Parser[I : IsSeq, T] {
    15   def parse(ts: I): Set[(T, I)]
    15   def parse(ts: I): Set[(T, I)]
    16 
    16 
    17   def parse_all(ts: I) : Set[T] =
    17   def parse_all(ts: I) : Set[T] =
    18     for ((head, tail) <- parse(ts); 
    18     for ((head, tail) <- parse(ts); 
    19         if (tail.isEmpty)) yield head
    19         if tail.isEmpty) yield head
    20 }
    20 }
    21 
    21 
    22 
    22 
    23 class SeqParser[I : IsSeq, T, S](p: => Parser[I, T], 
    23 class SeqParser[I : IsSeq, T, S](p: => Parser[I, T], 
    24                                  q: => Parser[I, S]) extends Parser[I, ~[T, S]] {
    24                                  q: => Parser[I, S]) extends Parser[I, ~[T, S]] {