cw2_marking/c5.sc
changeset 978 8778d23fef92
equal deleted inserted replaced
977:1e6eca42d90b 978:8778d23fef92
       
     1 // for primitive definitions
       
     2 import $file.cw02
       
     3 import cw02._
       
     4 
       
     5 def sz(r: Rexp): Int = r match {
       
     6   case ZERO => 1
       
     7   case ONE => 1
       
     8   case CHAR(_) => 1
       
     9   case ALT(r1, r2) => 1 + sz(r1) + sz (r2)
       
    10   case SEQ(r1, r2) => 1 + sz(r1) + sz (r2)
       
    11   case STAR(r1) => 1 + sz(r1)
       
    12   case PLUS(r1) => 1 + sz(r1)
       
    13   case NTIMES(r1, n) => 1 + sz(r1)
       
    14   case OPTIONAL(r1) => 1 + sz(r1)
       
    15   case RECD(_, r1) => 1 + sz(r1)
       
    16   case RANGE(_) => 1
       
    17 }
       
    18 
       
    19 assert(sz(RANGE("abc")) != 1)
       
    20 
       
    21 
       
    22 
       
    23