This computer science book gives an introduction to formal language theory and its applications in computer science. It is meant as the basis of a one-term course on this subject at the undergraduate level. The text maintains a balance between a theoretical and practical approach to this subject. From a theoretical viewpoint, it covers all rudimental topics concerning formal language and their models, especially grammars and automata. Based on these models, it demonstrates basic properties of languages defined by them. It also sketches the basic ideas underlying the theory of computation, including computability, decidability, and computational complexity. From a practical viewpoint, it explains how these models underlie computer-science engineering techniques for language processing, such as lexical and syntax analysis.
After studying this book, the student should be able to