progs/matcher/re1.sc
changeset 1007 fe2edf2cbd74
parent 1006 f6dec8af3d80
equal deleted inserted replaced
1006:f6dec8af3d80 1007:fe2edf2cbd74
    82 val r2 = SEQ(SEQ(CHAR('x'), CHAR('y')), CHAR('z'))
    82 val r2 = SEQ(SEQ(CHAR('x'), CHAR('y')), CHAR('z'))
    83 der('x', r2)
    83 der('x', r2)
    84 der('y', der('x', r2))
    84 der('y', der('x', r2))
    85 der('z', der('y', der('x', r2)))
    85 der('z', der('y', der('x', r2)))
    86 
    86 
       
    87 // (a*)* b
       
    88 // (a?){10}a{10} 
       
    89 //a + ONE
    87 
    90 
    88 // Test Cases
    91 // Test Cases
    89 //============
    92 //============
    90 
    93 
    91 // the optional regular expression (one or zero times)
    94 // the optional regular expression (one or zero times)
   117 // test: (a?{n}) (a{n})
   120 // test: (a?{n}) (a{n})
   118 @main
   121 @main
   119 def test1() = {
   122 def test1() = {
   120   println("Test (a?{n}) (a{n})")
   123   println("Test (a?{n}) (a{n})")
   121 
   124 
   122   for (i <- 0 to 20 by 2) {
   125   for (i <- 0 to 22 by 2) {
   123     println(f"$i: ${time_needed(2, matcher(EVIL1(i), "a" * i))}%.5f")
   126     println(f"$i: ${time_needed(2, matcher(EVIL1(i), "a" * i))}%.5f")
   124   }
   127   }
   125 }
   128 }
   126 
   129 
   127 // test: (a*)* b
   130 // test: (a*)* b
   128 @main
   131 @main
   129 def test2() = {
   132 def test2() = {
   130   println("Test (a*)* b")
   133   println("Test (a*)* b")
   131 
   134 
   132   for (i <- 0 to 20 by 2) {
   135   for (i <- 0 to 22 by 2) {
   133     println(f"$i: ${time_needed(2, matcher(EVIL2, "a" * i))}%.5f")
   136     println(f"$i: ${time_needed(2, matcher(EVIL2, "a" * i))}%.5f")
   134   }
   137   }
   135 }
   138 }
   136 
   139 
   137 
   140