progs/comb1.scala
changeset 178 d36363d648e3
parent 177 53def1fbf472
child 183 b17eff695c7f
equal deleted inserted replaced
177:53def1fbf472 178:d36363d648e3
     2 import scala.language.reflectiveCalls
     2 import scala.language.reflectiveCalls
     3 
     3 
     4 abstract class Parser[I <% Seq[_], T] {
     4 abstract class Parser[I <% Seq[_], T] {
     5   def parse(ts: I): Set[(T, I)]
     5   def parse(ts: I): Set[(T, I)]
     6 
     6 
     7   def parse_all(ts: I) : Set[T] =
     7     aaa dcjefoivhwefihvefhiv def parse_all(ts: I) : Set[T] =
     8     for ((head, tail) <- parse(ts); if (tail.isEmpty)) yield head
     8     for ((head, tail) <- parse(ts); if (tail.isEmpty)) yield head
     9 }
     9 }
    10 
    10 
    11 class SeqParser[I <% Seq[_], T, S](p: => Parser[I, T], q: => Parser[I, S]) extends Parser[I, (T, S)] {
    11 class SeqParser[I <% Seq[_], T, S](p: => Parser[I, T], q: => Parser[I, S]) extends Parser[I, (T, S)] {
    12   def parse(sb: I) = 
    12   def parse(sb: I) =