Kapittel 3, «Endelige tilstandsmaskiner og leksikalsk analyse» (), omhandler leksikalsk analyse av et programmeringsspråk. Kapittelet innleder med å drøfte rollen til den leksikalske analysator innenfor kompilatoren. Deretter følger en enkel tilnærmelse for konstruksjon av leksikalske analysatorer, etterfulgt av beskrivelse av regulære uttrykk. Kapittelet fortsetter med beskrivelsen av en Finite Automata eller en endelig tilstandsmaskin, og beskriver deretter hvordan regulære uttrykk kan omdannes til en endelig tilstandsmaskin. Deretter beskrives det hvordan man minimaliserer antall tilstander i en deterministisk endelig tilstandsmaskin (DFA), som er konstruert ut fra en ikke-deterministisk endelig tilstandsmaskin (NFA). Kapittelet fortsetter med å drøfte et språk for spesifikasjon av leksikalske analysatorer, og forklarer implementasjonen av leksikalske analysatorer. Deretter forklares det hvordan en scannergenerator kan fungere som det som metaforisk kalles en «sveitsisk lommekniv» ().