progs/re1.scala
changeset 261 24531cfaa36a
parent 258 1e4da6d2490c
child 343 539b2e88f5b9
equal deleted inserted replaced
260:65d1ea0e989f 261:24531cfaa36a
    34   case Nil => r
    34   case Nil => r
    35   case c::s => ders(s, der(c, r))
    35   case c::s => ders(s, der(c, r))
    36 }
    36 }
    37 
    37 
    38 // main matcher function
    38 // main matcher function
    39 def matcher(r: Rexp, s: String) : Boolean = nullable(ders(s.toList, r))
    39 def matches(r: Rexp, s: String) : Boolean = nullable(ders(s.toList, r))
    40 
    40 
    41 //example from the homework
    41 //example from the homework
    42 //val r = STAR(ALT(SEQ(CHAR('a'), CHAR('b')), CHAR('b')))
    42 //val r = STAR(ALT(SEQ(CHAR('a'), CHAR('b')), CHAR('b')))
    43 //der('a', r)
    43 //der('a', r)
    44 //der('b', r)
    44 //der('b', r)
    64   val end = System.nanoTime()
    64   val end = System.nanoTime()
    65   (end - start)/(i * 1.0e9)
    65   (end - start)/(i * 1.0e9)
    66 }
    66 }
    67 
    67 
    68 for (i <- 1 to 29) {
    68 for (i <- 1 to 29) {
    69   println(i + ": " + "%.5f".format(time_needed(1, matcher(EVIL(i), "a" * i))))
    69   println(i + ": " + "%.5f".format(time_needed(1, matches(EVIL(i), "a" * i))))
    70 }
    70 }