This book invites the reader to explore abstractions that are crucial to computer science. The authors bring a sense of excitement to logics, formal languages and automata—motivating topics by linking them to computing and to computational applications, sometime with whole chapters. They achieve exceptional clarity through a plethora of examples and figures, yet without-losing sight of, and indeed celebrating, the precision that is the hallmark of this subject matter. Features of the book application of logic to program verification programming in the logic language, Prolog discussion of "why" and "how" to prove things relationships between English and programming languages diagrams-first approach to automata lex as a tool and an extension of formal language pushdown automata as parsing strategies Turing machines as models of computation
I read this for a class taught by one of the two authors (who I heard commenting quite shyly and uncomfortably on NPR about his friend Martin Gardner's death about a year later). It is quite easy to read and understand. The lower community rating comes from the fact that this is a book about logic and rather difficult, despite what I just said. Don't be tricked by numbers! :) You could do much, much worse with a textbook to learn about grammars and languages and automata theory.