@lizzie the simple backtrack strategy makes the most reasonable code (but it might test stuff repeatedly.) i tend to use that in parsing because PEGs were the only things that made sense for so long (and i don't use the packrat memoize table, i just backtrack, which is fine as long as your grammar is reasonable.)
DFA is like. okay, you avoided potentially testing twice. you just have this O(NY^2) mini compiler that generates a 126 state monstrocity instead