cw2_marking/c5.sc
changeset 977 7a02c5b9e0df
equal deleted inserted replaced
976:4be299d9b41b 977:7a02c5b9e0df
       
     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