As this is a DFA, I wonder if it is possible to create a NFA via macros. One way would obviously be to turn the NFA into the DFA at compile-time, and then apply the DFA-macro, but that may possibly kill efficiency. Is it possible to do without creating infinite loops because of ϵ-transitions, and with tail calls? I have my doubts, but that would be amazing.