progs/matcher/re2.sc
changeset 919 53f08d873e09
parent 879 ad9d4a01e072
child 929 9541e073f2ed
--- a/progs/matcher/re2.sc	Fri Sep 15 10:49:33 2023 +0100
+++ b/progs/matcher/re2.sc	Sun Sep 17 19:12:57 2023 +0100
@@ -1,6 +1,8 @@
-// A Version with an explicit n-times regular expression;
+// A Version of the matcher with an explicit 
+// n-times regular expression
+//
 // this keeps the size of the regular expression in the
-// EVIL1 test-case quite small
+// EVIL1 testcase small
 //
 // call the test cases with X = {1,2}
 //
@@ -31,7 +33,6 @@
   case NTIMES(r, n) => if (n == 0) true else nullable(r)
 }
 
-
 def der(c: Char, r: Rexp) : Rexp = r match {
   case ZERO => ZERO
   case ONE => ZERO
@@ -54,13 +55,13 @@
   nullable(ders(s.toList, r))
 
 
+// Test Cases
+
 // the optional regular expression: one or zero times
 // this regular expression is still defined in terms of ALT
 def OPT(r: Rexp) = ALT(r, ONE)
 
 
-// Test Cases
-
 // evil regular expressions
 def EVIL1(n: Int) = SEQ(NTIMES(OPT(CHAR('a')), n), NTIMES(CHAR('a'), n))
 val EVIL2 = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))
@@ -90,7 +91,7 @@
 def test2() = {
   println("Test (a*)* b")
 
-  for (i <- 0 to 30 by 2) {
+  for (i <- 0 to 22 by 2) {
     println(f"$i: ${time_needed(1, matcher(EVIL2, "a" * i))}%.5f")
   }
 }