use set to hold current and next states
re-organized nfa constructions into a dictionary of functions in parse.py
separate samples; regex.py is not interface-only