Lenguajes y Autómatas L Unidad V
Lenguajes y Autómatas L Unidad V
Lenguajes y Autómatas L Unidad V
LENGUAJES Y AUTÓMATAS I
DESARROLLO UNIDAD V
ROBERTO PEDROZA
ÍNDICE
Contents
5.1 Función del analizador léxico.................................3
5.2 Componentes léxicos, patrones y lexemas............3
5.3 Creación de Tabla de tokens..................................4
5.4 Errores léxicos........................................................5
5.5 Generadores de analizadores léxicos....................6
5.6 Aplicaciones............................................................7
Referencias...................................................................8
5.1 Función del analizador léxico
Un analizador léxico aísla al analizador sintáctico de la representación en lexemas
de los componentes léxicos.
Tiene como funciones:
–Eliminación de espacios en blanco y comentarios. Si el analizador léxico elimina
los espacios en blanco, el analizador sintáctico nunca tendrá que considerarlos. La
alternativa de modificar la gramática para incorporar los espacios en blanco dentro
de la situación no es tan fácil de implantar.
–Reconocimiento de identificadores y palabras clave. Es el encargado de construir
los lexemas que constituyen los identificadores de los lenguajes de programación.
–Reconocimiento de constantes. La tarea de agrupar dígitos para formar enteros
se le asigna, por lo general, a un analizador léxico, porque los números se pueden
tratar como unidades simples durante la traducción
Es habitual que el analizador léxico y el sintáctico formen un par productor-
consumidor. El analizador léxico produce componentes léxicos y el analizador
sintáctico los consume.
Hay varias razones para dividir la fase de análisis de la compilación en análisis
léxico y análisis sintáctico.
1. Separar el análisis léxico del análisis sintáctico a menudo permite simplificar
una u otra de dichas fases.
2. Se mejora la eficiencia del compilador.
3. Se mejora la transportabilidad del compilador
5.6 Aplicaciones
Algunas aplicaciones de los analizadores léxicos son:
El analizador léxico divide la entrada en componentes léxicos.
Los componentes se agrupan en categorías léxicas.
Asociamos atributos a las categorías léxicas.
Especificamos las categorías mediante expresiones regulares.
Para reconocer los lenguajes asociados a las expresiones regulares empleamos
autómatas de estados finitos(AFD).
Se pueden crear los AFD directamente a partir de la expresión regular.
El analizador léxico utiliza la maquina discriminadora determinista.
El tratamiento de errores en nivel léxico es muy simple.
Se pueden emplear las ideas de los analizadores léxicos para facilitar el
tratamiento de ficheros de texto.
Ejemplo: implementar en LEX, un analizador léxico para:
Menor→ <
Mayor→ >
Menor Igual → <=
Mayor Igual → >=
Igual → =
Distinto → <>
Letra → a|b|...|z|A|B|....|Z digito→0|1|...|9
Identificador → letra(letra|digito)*
ConstEntera → digito digito*
Comportamiento Deseado:
Antes del analizador léxico -> v0<>27 segundos = 1000
Después del analizador léxico:
(IDENTIFICADOR, v0)
(DISTINTO,)
(CONSTENTERA,27)
(IDENTIFICADOR, segundos)
(IGUAL,)
(CONSTENTERA ,1000)
Referencias