progs/app6.scala
changeset 93 4794759139ea
parent 92 e85600529ca5
child 117 25999de692b2
equal deleted inserted replaced
92:e85600529ca5 93:4794759139ea
       
     1 def deriv (r: Rexp, c: Char) : Rexp = r match {
       
     2   case NULL => NULL
       
     3   case EMPTY => NULL
       
     4   case CHAR(d) => if (c == d) EMPTY else NULL
       
     5   case ALT(r1, r2) => ALT(deriv(r1, c), deriv(r2, c))
       
     6   case SEQ(r1, r2) => 
       
     7     if (nullable(r1)) ALT(SEQ(deriv(r1, c), r2), deriv(r2, c))
       
     8     else SEQ(deriv(r1, c), r2)
       
     9   case STAR(r) => SEQ(deriv(r, c), STAR(r))
       
    10 }
       
    11