This document discusses lexical analysis using finite automata. It begins by defining regular expressions, finite automata, and their components. It then covers non-deterministic finite automata (NFAs) and deterministic finite automata (DFAs), and how NFAs can recognize the same regular languages as DFAs. The document outlines the process of converting a regular expression to an NFA using Thompson's construction, then converting the NFA to a DFA using subset construction. It also discusses minimizing DFAs using Hopcroft's algorithm. Examples are provided to illustrate each concept.