dfa construction