Formal Languages and Automata Theory by Nagpal