thys2/blexer2.sc
changeset 573 454ced557605
parent 564 3cbcd7cda0a9
child 591 b2d0de6aee18
equal deleted inserted replaced
568:7a579f5533f8 573:454ced557605
  1464     println(asize(bders_simp(prog.toList, internalise(r))))
  1464     println(asize(bders_simp(prog.toList, internalise(r))))
  1465     //println(size(ders_simp(prog.toList, r)))
  1465     //println(size(ders_simp(prog.toList, r)))
  1466   }
  1466   }
  1467 }
  1467 }
  1468 // aaa_star()
  1468 // aaa_star()
       
  1469 
       
  1470 def matching_ways_counting(n: Int): Int = 
       
  1471   {
       
  1472     if(n == 0) 1
       
  1473     else if(n == 1) 2
       
  1474     else (for(i <- 1 to n - 1) 
       
  1475       yield matching_ways_counting(i) * matching_ways_counting(n - i) ).sum + (n + 1)
       
  1476   }
  1469 def naive_matcher() {
  1477 def naive_matcher() {
  1470   val r = STAR(STAR("a") ~ STAR("a"))
  1478   val r = STAR(STAR("a") ~ STAR("a"))
  1471 
  1479 
  1472   for(i <- 0 to 20) {
  1480   // for(i <- 0 to 10) {
  1473     val s = "a" * i 
  1481   //   val s = "a" * i 
  1474     val t1 = System.nanoTime
       
  1475     matcher(s, r)
       
  1476     val duration = (System.nanoTime - t1) / 1e9d
       
  1477     print(i)
       
  1478     print(" ")
       
  1479     // print(duration)
       
  1480     // print(" ")
       
  1481     print(asize(bders_simp(s.toList, internalise(r))))
       
  1482     //print(size(ders_simp(s.toList, r)))
       
  1483     println()
       
  1484   }
       
  1485   // for(i <- 1 to 40000000 by 500000) {
       
  1486   //   val s = "a" * i
       
  1487   //   val t1 = System.nanoTime
  1482   //   val t1 = System.nanoTime
  1488   //   val derssimp_result = ders_simp(s.toList, r)
  1483   //   matcher(s, r)
  1489   //   val duration = (System.nanoTime - t1) / 1e9d
  1484   //   val duration = (System.nanoTime - t1) / 1e9d
  1490   //   print(i)
  1485   //   print(i)
  1491   //   print(" ")
  1486   //   print(" ")
  1492   //   print(duration)
  1487   //   // print(duration)
       
  1488   //   // print(" ")
       
  1489   //   (aprint(bders_simp(s.toList, internalise(r))))
       
  1490   //   //print(size(ders_simp(s.toList, r)))
  1493   //   println()
  1491   //   println()
  1494   // }
  1492   // }
       
  1493   for(i <- 1 to 3) {
       
  1494     val s = "a" * i
       
  1495     val t1 = System.nanoTime
       
  1496     val derssimp_result = ders_simp(s.toList, r)
       
  1497     println(i)
       
  1498     println(matching_ways_counting(i))
       
  1499     println(size(derssimp_result))
       
  1500     rprint(derssimp_result)
       
  1501   }
  1495   
  1502   
  1496 }
  1503 }
  1497 // naive_matcher()
  1504 naive_matcher()
  1498 //single(SEQ(SEQ(STAR(CHAR('b')),STAR(STAR(SEQ(CHAR('a'),CHAR('b'))))),
  1505 //single(SEQ(SEQ(STAR(CHAR('b')),STAR(STAR(SEQ(CHAR('a'),CHAR('b'))))),
  1499 //  SEQ(SEQ(CHAR('b'),STAR(ALTS(CHAR('a'),ONE))),ONE)))
  1506 //  SEQ(SEQ(CHAR('b'),STAR(ALTS(CHAR('a'),ONE))),ONE)))
  1500 
  1507 
  1501 
  1508 
  1502 //STAR(SEQ(ALTS(CHAR(b),STAR(CHAR(b))),ALTS(ALTS(ONE,CHAR(b)),SEQ(CHAR(c),ONE))))
  1509 //STAR(SEQ(ALTS(CHAR(b),STAR(CHAR(b))),ALTS(ALTS(ONE,CHAR(b)),SEQ(CHAR(c),ONE))))