Formal Language and Automata Theory