About this book
Whereas many textbooks on formal languages and compilation focus on technological aspects, it is the elegance and simplicity of the underlying *theory* that allows students to acquire the fundamental paradigms of language structures, to avoid pitfalls such as ambiguity, and to adequately map structure to meaning.
Formal Languages and Compilation covers the fundamental concepts of formal languages and compilation, which are central to computer science and based on well-consolidated principles. It presents a comprehensive selection of topics and is based on rigorous definitions and algorithms, illustrated by many motivating examples, with a focus on the importance of combining theoretical concepts with practical applications.
In a clear, reader-friendly and simple minimalist way, this uniquely versatile textbook provides the essential principles and methods used for defining the syntax of artificial languages and implementing simple translators, as well as for designing syntax-directed translators. Readers require some background in programming, although detailed knowledge of a specific programming language is not necessary; they should also be somewhat familiar with basic set theory, algebra and logic.
Features and topics:
• Provides many pedagogical tools, such as slides and solutions for lecturers via the author’s website
• Unifies the concepts and notations used in the various approaches of parsing algorithms
• Concepts are illustrated with many realistic examples, to ease the understanding of the theory and the transfer to applications
• Theoretical models of automata, transducers and formal grammars are used extensively
• Algorithms are described in a pseudocode to avoid the disturbing details of a programming language, yet they are straightforward to convert to executable procedures
• Coverage of the algorithms for processing regular expressions and finite automata is concise and complete
• Systematically discusses ambiguous forms, allowing readers to avoid pitfalls when designing grammars
• Unifies the concepts and notations used in different approaches, thus extending methods coverage with a reduced definitional apparatus
• Introduces static program analysis, moving from the baseline reached with finite automata and local languages
This comprehensive and clearly written text, based on many years of course instruction, will be welcomed as the ideal guide to the fundamentals of this field by advanced undergraduate and graduate students in computer science and computer engineering.
Stefano Crespi Reghizzi is a full professor of computer science at the Politecnico di Milano, Milan, Italy, where he has numerous years of experience teaching formal languages and compiler technology. In addition, he leads the department’s compiler research group.
[Barcode] ISBN 978-1-84882-049-4