Scanner
El análisis de un programa fuente durante la compilación es complejo. La construcción de un compilador puede hacerse más fácil si el análisis del programa fuente es separado en dos partes, con una parte identificando las construcciones de lenguaje de bajo nivel (tokens) tales como los nombres de variables, palabras reservadas, etiquetas, y operadores, y la segunda parte determinando la organización sintáctica del programa.
En esta sección se estudia la primera de estas partes, la cual es llevada a cabo por medio de un analizador léxico o scanner.
Nos conciernen dos aspectos de los scanners. Primero, lo que son los tokens (componentes léxicos) del lenguaje en estudio. Para describir los tokens pueden utilizarse gramáticas regulares.
Otro enfoque descriptivo involucra el uso de expresiones regulares. Ambos métodos descriptivos son equivalentes en el sentido de que ambos describen el conjunto de lenguajes regulares.
El segundo aspecto de los scanners trata con el reconocimiento de tokens. Los aceptores de estado finitos son dispositivos que encajan bien en esta tarea de reconocimiento, principalmente porque pueden especificarse pictóricamente utilizando diagramas de transición.