progs/comb1a.scala
changeset 683 9acbe46df3fd
parent 673 4e254e201ce9
child 686 5fe95ea0bad0
equal deleted inserted replaced
682:612976492d25 683:9acbe46df3fd
    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]] {