An introduction to formal languages and automata (1996)

by Peter Linz