Introduction to languages and the theory of computation - John Martin (McGraw-Hill, 2003)