Text this: An Introduction to Formal Languages and Automata