you can of course match the equivalent of an a.*b regex by hand. and this is in practice e.g. how my SIMD zip parsing works. but it would be super neat to generalize this and formalisms can light the path. this is why i (as usual) reject placing all faith in a compiler/language implementation of coroutines, because it's quite often that application-specific constructs cannot feasibly be supported by the compiler.