An Introduction To Formal Languages And Automata by Peter Linz