cw2_marking/c5.sc
changeset 1039 86d59b074abe
parent 977 7a02c5b9e0df
equal deleted inserted replaced
1038:34d2cfb7761a 1039:86d59b074abe
     3 import cw02._
     3 import cw02._
     4 
     4 
     5 def sz(r: Rexp): Int = r match {
     5 def sz(r: Rexp): Int = r match {
     6   case ZERO => 1
     6   case ZERO => 1
     7   case ONE => 1
     7   case ONE => 1
     8   case CHAR(_) => 1
     8   //case CHAR(_) => 1
     9   case ALT(r1, r2) => 1 + sz(r1) + sz (r2)
     9   case ALT(r1, r2) => 1 + sz(r1) + sz (r2)
    10   case SEQ(r1, r2) => 1 + sz(r1) + sz (r2)
    10   case SEQ(r1, r2) => 1 + sz(r1) + sz (r2)
    11   case STAR(r1) => 1 + sz(r1)
    11   case STAR(r1) => 1 + sz(r1)
    12   case PLUS(r1) => 1 + sz(r1)
    12   case PLUS(r1) => 1 + sz(r1)
    13   case NTIMES(r1, n) => 1 + sz(r1)
    13   case NTIMES(r1, n) => 1 + sz(r1)
    14   case OPTIONAL(r1) => 1 + sz(r1)
    14   case OPTIONAL(r1) => 1 + sz(r1)
    15   case RECD(_, r1) => 1 + sz(r1)
    15   case RECD(_, r1) => 1 + sz(r1)
    16   case RANGE(_) => 1
    16   //case RANGE(_) => 1
    17 }
    17 }
    18 
    18 
    19 assert(sz(RANGE("abc")) != 1)
    19 //assert(sz(RANGE("abc")) != 1)
    20 
    20 
    21 
    21 
    22 
    22 
    23 
    23