Automata, Languages and Programming by M. Nielsen, Jiri Wiedermann & Peter van Emde Boas