diff -r 9580bae0500d -r 9f984ff20020 progs/scala/re-annotated2.sc --- a/progs/scala/re-annotated2.sc Mon Feb 20 23:40:30 2023 +0000 +++ b/progs/scala/re-annotated2.sc Thu Feb 23 12:37:34 2023 +0000 @@ -223,6 +223,11 @@ case r => r } +def bders_simp(r: ARexp, s: List[Char]) : ARexp = s match { + case Nil => r + case c::cs => bders_simp(bsimp(bder(c, r)), cs) +} + def blex_simp(r: ARexp, s: List[Char]) : Bits = s match { case Nil => if (bnullable(r)) bmkeps(r) else throw new Exception("Not matched") @@ -368,3 +373,16 @@ val n = 200 println(s"lexing fib program ($n times, size ${prog2.length * n})") println(time_needed(1, blexing_simp(WHILE_REGS, prog2 * n))) + + + + + +val reg2 = STAR("a" | "aa") + +println(bsize(bders_simp(internalise(reg2), ("a" * 0).toList))) +println(bsize(bders_simp(internalise(reg2), ("a" * 1).toList))) +println(bsize(bders_simp(internalise(reg2), ("a" * 2).toList))) +println(bsize(bders_simp(internalise(reg2), ("a" * 3).toList))) +println(bsize(bders_simp(internalise(reg2), ("a" * 4).toList))) +println(bsize(bders_simp(internalise(reg2), ("a" * 5).toList)))