finite automata in lexical analysis