progs/scala/re-bit.scala
changeset 359 fedc16924b76
parent 294 c1de75d20aa4
equal deleted inserted replaced
358:06aa99b54423 359:fedc16924b76
   322 // Sulzmann's tests
   322 // Sulzmann's tests
   323 //==================
   323 //==================
   324 
   324 
   325 val sulzmann = ("a" | "b" | "ab").%
   325 val sulzmann = ("a" | "b" | "ab").%
   326 
   326 
       
   327 
       
   328 println(s"Sulzmann Test: ${alexing(sulzmann, "ab" * 1)}")
       
   329 
   327 println(alexing(sulzmann, "a" * 10))
   330 println(alexing(sulzmann, "a" * 10))
   328 println(alexing_simp(sulzmann, "a" * 10))
   331 println(alexing_simp(sulzmann, "a" * 10))
   329 
   332 
   330 for (i <- 1 to 4001 by 500) {
   333 for (i <- 1 to 4001 by 500) {
   331   println(i + ": " + "%.5f".format(time_needed(1, alexing_simp(sulzmann, "a" * i))))
   334   println(i + ": " + "%.5f".format(time_needed(1, alexing_simp(sulzmann, "a" * i))))
   390 
   393 
   391 //tests lexing and lexingB
   394 //tests lexing and lexingB
   392 def tests_inj(ss: Set[String])(r: Rexp) = {
   395 def tests_inj(ss: Set[String])(r: Rexp) = {
   393   clear()
   396   clear()
   394   println(s"Testing ${r}")
   397   println(s"Testing ${r}")
   395   for (s <- ss.par) yield {
   398   for (s <- ss) yield {
   396     val res1 = Try(Some(alexing(r, s))).getOrElse(None)
   399     val res1 = Try(Some(alexing(r, s))).getOrElse(None)
   397     val res2 = Try(Some(alexing_simp(r, s))).getOrElse(None)
   400     val res2 = Try(Some(alexing_simp(r, s))).getOrElse(None)
   398     if (res1 != res2) println(s"Disagree on ${r} and ${s}")
   401     if (res1 != res2) println(s"Disagree on ${r} and ${s}")
   399     if (res1 != res2) println(s"   ${res1} !=  ${res2}")
   402     if (res1 != res2) println(s"   ${res1} !=  ${res2}")
   400     if (res1 != res2) Some((r, s)) else None
   403     if (res1 != res2) Some((r, s)) else None
   410 
   413 
   411 
   414 
   412 def tests_alexer(ss: Set[String])(r: Rexp) = {
   415 def tests_alexer(ss: Set[String])(r: Rexp) = {
   413   clear()
   416   clear()
   414   println(s"Testing ${r}")
   417   println(s"Testing ${r}")
   415   for (s <- ss.par) yield {
   418   for (s <- ss) yield {
   416     val d = der('b', r)
   419     val d = der('b', r)
   417     val ad = ader('b', internalise(r))
   420     val ad = ader('b', internalise(r))
   418     val res1 = Try(Some(encode(inj(r, 'a', alexing(d, s))))).getOrElse(None)
   421     val res1 = Try(Some(encode(inj(r, 'a', alexing(d, s))))).getOrElse(None)
   419     val res2 = Try(Some(pre_alexing(ad, s))).getOrElse(None)
   422     val res2 = Try(Some(pre_alexing(ad, s))).getOrElse(None)
   420     if (res1 != res2) println(s"Disagree on ${r} and 'a'::${s}")
   423     if (res1 != res2) println(s"Disagree on ${r} and 'a'::${s}")