4 ms·
I am not convinced that what is shown as an NFA corresponds to what is normally understood as an NFA. I don't think that makes it bad (in fact, it can do more t
by glangdale 9y ago
I am not convinced that what is shown as an NFA corresponds to what is normally understood as an NFA. I don't think that makes it bad (in fact, it can do more things than a strict NFA, like capturing and back-references), but it is remarkably different to a Thompson NFA or a Glushkov NFA.
Something that can backtrack has a stack. I suspect this removes you from 'finite' territory; the 'F' in '*FA'.
I think Friedl has a lot to answer for in his muddying of the waters here. It's created a lot of headaches for us over the years, as we implement both DFA and NFA (strict) matching in Hyperscan, and people do ask us why our NFAs can't do backreferences. :-)
- warkdarrior 9y agoSomething that has a finite stack is still in 'finite' territory. Is there an upper bound on the number of backtracking steps?
- glangdale 9y agoAnything that can grow proportionally with the input (regardless of which O() it is) takes us out of finite territory.