progs/app52.scala
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Tue, 20 Sep 2016 12:17:01 +0100
changeset 421 7a04f2c532c1
parent 415 4ae59fd3b174
child 436 9213b8298ca9
permissions -rw-r--r--
updated

def ders2(s: List[Char], r: Rexp) : Rexp = (s, r) match {
  case (Nil, r) => r
  case (s, ZERO) => ZERO
  case (s, ONE) => if (s == Nil) ONE else ZERO
  case (s, CHAR(c)) => if (s == List(c)) ONE else 
                       if (s == Nil) CHAR(c) else ZERO
  case (s, ALT(r1, r2)) => ALT(ders2(s, r2), ders2(s, r2))
  case (c::s, r) => ders2(s, der(c, r).simp)
}