Introduction to language and the theory of computation - Martin, John (TMH, 2003)