209 case ASEQ(bs1, r1, r2) => (bsimp(r1), bsimp(r2)) match { |
209 case ASEQ(bs1, r1, r2) => (bsimp(r1), bsimp(r2)) match { |
210 case (AZERO, _) => AZERO |
210 case (AZERO, _) => AZERO |
211 case (_, AZERO) => AZERO |
211 case (_, AZERO) => AZERO |
212 case (AONE(bs2), r2s) => fuse(bs1 ++ bs2, r2s) |
212 case (AONE(bs2), r2s) => fuse(bs1 ++ bs2, r2s) |
213 // needed in order to keep the size down |
213 // needed in order to keep the size down |
214 case (AALTS(bs, rs), r2) => AALTS(bs1 ++ bs, rs.map(ASEQ(Nil, _, r2))) |
214 //case (AALTS(bs, rs), r2) => AALTS(bs1 ++ bs, rs.map(ASEQ(Nil, _, r2))) |
215 case (r1s, r2s) => ASEQ(bs1, r1s, r2s) |
215 case (r1s, r2s) => ASEQ(bs1, r1s, r2s) |
216 } |
216 } |
217 // distinctBy deletes copies of the same "erased" regex |
217 // distinctBy deletes copies of the same "erased" regex |
218 case AALTS(bs1, rs) => (flts(rs.map(bsimp))).distinctBy(erase) match { |
218 case AALTS(bs1, rs) => (flts(rs.map(bsimp))).distinctBy(erase) match { |
219 case Nil => AZERO |
219 case Nil => AZERO |
383 println(bsize(bders_simp(internalise(reg2), ("a" * 0).toList))) |
383 println(bsize(bders_simp(internalise(reg2), ("a" * 0).toList))) |
384 println(bsize(bders_simp(internalise(reg2), ("a" * 1).toList))) |
384 println(bsize(bders_simp(internalise(reg2), ("a" * 1).toList))) |
385 println(bsize(bders_simp(internalise(reg2), ("a" * 2).toList))) |
385 println(bsize(bders_simp(internalise(reg2), ("a" * 2).toList))) |
386 println(bsize(bders_simp(internalise(reg2), ("a" * 3).toList))) |
386 println(bsize(bders_simp(internalise(reg2), ("a" * 3).toList))) |
387 println(bsize(bders_simp(internalise(reg2), ("a" * 4).toList))) |
387 println(bsize(bders_simp(internalise(reg2), ("a" * 4).toList))) |
388 println(bsize(bders_simp(internalise(reg2), ("a" * 5).toList))) |
388 println(bsize(bders_simp(internalise(reg2), ("a" * 50000).toList))) |