Foreword
Preface
Introduction
- Formal Languages
- Finite State Machines
- Exercises
- Chapter Summary
- Regular Languages
Finite Automata
- Where Are We?
- Chapter Objectives
- Deterministic Finite Automata
- Exercises
- Non-Deterministic Finite Automata
- Equivalence of NFAs and DFAs
- NFAs and Complements
- Exercises
- Minimal Automata
- Exercises
- Machines with Output
- Computer Arithmetic
- Lexical Analysis
- Minimal Mealy Machines
- Exercises
- Chapter Summary
Regular Expressions and Grammars
- Where Are We?
- Chapter Objectives
- Regular Expressions
- Exercises
- Equivalence of Regular Expressions and Regular Languages
- From Regular Expression to NFA
- From NFA to Regular Expression
- Exercises
- Regular Grammars
- Left-Linear Grammars
- Exercises
- Chapter Summary
Properties of Regular Languages
- Where Are We?
- Chapter Objectives
- Closure Properties
- Computing Set Operations
- Exercises
- Decision Algorithms
- Exercises
- Infinite Regular Languages and a “Pumping Theorem”
- Exercises
- Chapter Summary
- Context-Free Languages
Pushdown Automata
- Where Are We?
- Chapter Objectives
- Adding a Stack to Finite Automata
- Exercises
- Pushdown Automata and Determinism
- Exercise
- Chapter Summary
Context-Free Grammars
- Where Are We?
- Chapter Objectives
- Context-Free Grammars and Derivations
- Simplifying Grammars
- Exercises
- Derivation Trees and Ambiguous Grammars
- Operator Precedence
- Operator Associativity
- Expression Trees
- Exercises
- Equivalence of PDAs and CFGs
- From CFG to PDA
- From PDA to CFG (Special Case)
- From PDA to CFG (General Case)
- Exercises
- Chapter Summary
Properties of Context-Free Languages
- Where Are We?
- Chapter Objectives
- Chomsky Normal Form
- Removing Lambda
- Removing Unit Productions
- Chomsky Normal Form Rules
- Exercises
- Closure Properties
- Closure Properties of DCFLs
- Exercises
- Decision Algorithms
- Is a CFL Empty or Infinite?
- Exercises
- Infinite CFLs and Another Pumping Theorem
- Exercises
- Chapter Summary
- Recursively Enumerable Languages
Turing Machines
- Where Are We?
- Chapter Objectives
- Prelude
- Queue Machines
- Exercise
- The Standard Turing Machine
- Subroutines
- Halting
- Exercises
- Programming Exercise
- Variations on Turing Machines
- The Universal Turing Machine
- Non-Deterministic TM = Deterministic TM
- Programming Exercise
- Chapter Summary
The Landscape of Formal Languages
- Where Are We?
- Chapter Objectives
- Recursively Enumerable Languages
- A Non-Recursive, RE Language
- Context-Sensitive Languages
- Properties of Recursively Enumerable Languages
- Exercises
- Unrestricted Grammars
- Context-Sensitive Grammars
- Equivalence of Unrestricted Grammars and Turing Machines
- Exercises
- The Chomsky Hierarchy
- Countable Sets
- Uncountable Sets
- Chapter Summary
Computability
- Chapter Objectives
- The Halting Problem
- Reductions and Undecidability
- Exercises
- Chapter Summary