RegexExplosionPlot/injToSimp.sc
changeset 667 660cf698eb26
parent 666 6da4516ea87d
child 668 3831621d7b14
equal deleted inserted replaced
666:6da4516ea87d 667:660cf698eb26
   391 
   391 
   392 
   392 
   393 def simp_lexer(r: Rexp, s: List[Char]): Val = s match{
   393 def simp_lexer(r: Rexp, s: List[Char]): Val = s match{
   394   case Nil => {//println("mkeps!"); println(r); 
   394   case Nil => {//println("mkeps!"); println(r); 
   395     val v = mkeps(r); 
   395     val v = mkeps(r); 
   396     //println(v); 
   396     println(v); 
   397     v}
   397     v}
   398   case c::cs => { 
   398   case c::cs => { 
   399     val derc1 = der(c, r);
   399     val derc1 = der(c, r);
   400     val derc = light_simp(derc1);
   400     val derc = light_simp(derc1);
   401     println("derivative size: "+ size(derc));
   401     println("derivative size: "+ size(derc));
   402     val v = simp_lexer(derc, cs); 
   402     val v = simp_lexer(derc, cs); 
   403     //println("Injection!");println("r: "+r); println("c: "+c); println("v:"+v); 
   403     println("Injection!");println("r: "+r); println("c: "+c); println("v:"+v); 
   404     inj(r, c, v ) }
   404     inj(r, c, v ) }
   405 }
   405 }
   406 
   406 
   407 
   407 
   408 def print_lexer(r: Rexp, s: List[Char]): Val = s match{
   408 def print_lexer(r: Rexp, s: List[Char]): Val = s match{
   413   case c::cs => { 
   413   case c::cs => { 
   414     val derc = der(c, r);
   414     val derc = der(c, r);
   415     //val derc = light_simp(derc1);
   415     //val derc = light_simp(derc1);
   416     println("derivative size: "+ size(derc));
   416     println("derivative size: "+ size(derc));
   417     val v = print_lexer(derc, cs); 
   417     val v = print_lexer(derc, cs); 
   418     //println("Injection!");println("r: "+r); println("c: "+c); println("v:"+v); 
   418     println("Injection!");println("r: "+r); println("c: "+c); println("v:"+v); 
   419     inj(r, c, v ) }
   419     inj(r, c, v ) }
   420 }
   420 }
   421 val r = STAR("a"|"aa") ~ ("c")
   421 val r = STAR("a"|"aa") ~ ("c")
   422 println("unsimplified lexer's intermediate derivative sizes:")
   422 println("unsimplified lexer's intermediate derivative sizes:")
   423 val v = print_lexer(r, "aac".toList)
   423 val v = print_lexer(r, "aac".toList)
  1227 //    val result = block    // call-by-name
  1227 //    val result = block    // call-by-name
  1228 //    val t1 = System.nanoTime()
  1228 //    val t1 = System.nanoTime()
  1229 //    println(" " + (t1 - t0)/1e9 + "")
  1229 //    println(" " + (t1 - t0)/1e9 + "")
  1230 //    result
  1230 //    result
  1231 //}
  1231 //}
  1232 //val astarstarB  = STAR(STAR("a"))~("b")
  1232 val astarstarB  = STAR(STAR("a"))~("b")
  1233 //val data_points_x_axis = List.range(0, 60000, 3000)
  1233 val data_points_x_axis = List.range(0, 60000, 3000)
  1234 //for (i <- data_points_x_axis) {print(i); time { blexing(astarstarB, ("a"*i)) } }
  1234 //for (i <- data_points_x_axis) {print(i); time { blexing(astarstarB, ("a"*i)) } }
  1235 ////println(data_points_x_axis.zip( List(0,1,3,4)))
  1235 ////println(data_points_x_axis.zip( List(0,1,3,4)))
  1236 //for(i <- List.range(0, 40000, 3000)) print(i + " ")
  1236 //for(i <- List.range(0, 40000, 3000)) print(i + " ")
  1237 
  1237 
       
  1238 //for (i <- data_points_x_axis) {print(i); time { simp_lexer(astarstarB, ("a"*i).toList) } }