equal
  deleted
  inserted
  replaced
  
    
    
         | 
     1   | 
     1 abstract class Rexp  | 
     2 abstract class Rexp  | 
     2 case object ZERO extends Rexp  | 
     3 case object ZERO extends Rexp  | 
     3 case object ONE extends Rexp  | 
     4 case object ONE extends Rexp  | 
     4 case class CHAR(c: Char) extends Rexp  | 
     5 case class CHAR(c: Char) extends Rexp  | 
     5 case class ALT(r1: Rexp, r2: Rexp) extends Rexp   | 
     6 case class ALT(r1: Rexp, r2: Rexp) extends Rexp   | 
    60   | 
    61   | 
    61 // the evil regular expression (a*)*b  | 
    62 // the evil regular expression (a*)*b  | 
    62 val EVIL2 = SEQ(STAR(STAR(CHAR('a'))), CHAR('b')) | 
    63 val EVIL2 = SEQ(STAR(STAR(CHAR('a'))), CHAR('b')) | 
    63   | 
    64   | 
    64 //for measuring time  | 
    65 //for measuring time  | 
    65 def time_needed[T](i: Int, code => T) = { | 
    66 def time_needed[T](i: Int, code: => T) = { | 
    66   val start = System.nanoTime()  | 
    67   val start = System.nanoTime()  | 
    67   for (j <- 1 to i) code()  | 
    68   for (j <- 1 to i) code  | 
    68   val end = System.nanoTime()  | 
    69   val end = System.nanoTime()  | 
    69   (end - start)/(i * 1.0e9)  | 
    70   (end - start)/(i * 1.0e9)  | 
    70 }  | 
    71 }  | 
    71   | 
    72   | 
    72 //test: (a?{n}) (a{n}) | 
    73 //test: (a?{n}) (a{n}) |