automata theory , language and computation