Subject: | optimise (?:a(?:...)|a+) as (?:a(?:a*|...)) |
Here's a short description:
16:15 <@BooK> assemble a ab acd abd a+ ab+c
16:15 < assemble> BooK: (?:a(?:b+c|bd?|cd)?|a+)
16:16 <@BooK> tiens, ça peut s'optimiser en (?:a(?:b+c|bd?|cd|a*) non ?
Actually if you make this kind of optimisation, b+c|bd? becomes
b(?:b*c|d?) or b(?:b*c|d)?, so that should probably produce
(?:a(?:a*|b(?:b*c|d?)|cd)) or (?:a(?:a*|b(?:b*c|d)?|cd))
Does that make any sense?