app6.scala
changeset 7 73cf4406b773
equal deleted inserted replaced
6:0da19c346e24 7:73cf4406b773
       
     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