El documento describe los conceptos básicos de los analizadores léxicos, incluyendo su función de identificar los componentes léxicos requeridos por el análisis sintáctico, el manejo de errores mediante diferentes métodos, y el uso de autómatas y tablas de transición para representar expresiones regulares y reconocer tokens.
Análisis léxico de lenguajes, compiladores e intérpretes
1. Instituto tecnol´ogico de Costa Rica
Ingenier´ıa en Computadores
Ver´onica Mora Lezcano
Lenguajes, compiladores e int´erpretes
An´alisis l´exico
Su funci´on es leer la entrada e identificar los componentes l´exicos requeridos por el an´alisis sint´actico.
Preprocesador Su funci´on es hacer un ´unico conjunto de entrada para su an´alisis.
Manejo de errores Se realiza mediante:
• Modo p´anico, encuentra un error y se detiene o busca el siguiente punto seguro.
• Inserci´on de caracteres, por ejemplo, completar una sentencia con ; o cerrar un llave...
• Eliminaci´on de caracteres.
• Reemplazar caracteres, se habla de aproximaci´on.
• Intercalar caracteres.
En el an´alisis l´exico se ignoran comentarios, saltos de l´ınea y espacios.
Buffer (forma de como leer el programa fuente)
• Normalmente es costoso, (I/O). Se debe cuidar el tama˜no del buffer, la cantidad de llamadas, ...
• Herramientas para dise˜nar / construir un analizador l´exico:
– LEX.
– Mediante con alg´un lenguaje.
– Hacerlo en ensamblador.
– Lectura de la entrada.
∗ Prean´alisis
∗ Multiples buffers
1
2. Aut´omatas o diagramas de transici´on
Se dividen en determin´ısticos y no determin´ısticos.
• No determin´ısticos Acepta m´as de una transici´on desde un estado a otros con un mismo elemento
del alfabeto.
• Determin´ısticos
No acepta la transici´on ε
Los anteriores tipos de aut´omatas pueden:
• Representar expresiones regulares.
• Usar tablas de transici´on.
• Ejecutar algoritmos para minimizar los estados.
Formalmente un aut´omata tiene:
S: conjunto de estados.
T: conjunto de estados de aceptaci´on.
f(x): funci´on de transici´on de estados y elementos del alfabeto.
So: estado inicial.
Por ejemplo, para la expresi´on regular (a — b)* abb, el diagrama del aut´omata ser´ıa:
La tabla de transici´on estar´ıa dada por:
2
3. Construcci´on Thompson (convertir expresi´on regular a aut´omata)
1. Transformaciones ε se diagraman como:
2. Transiciones de a se diagraman como:
3. Son N(a) y N(b) aut´omatas, sean a y b a — b se construye como N( a — b)
4. Sean N(a) y N(b) aut´omatas, sean a y b , ab se construye como N(ab)
Note que se tiene solo un estado de aceptaci´on.
3
4. 5. Para la expresi´on regular: a* se construye como:
6. Para (s) se construye como N(s)
Por ejemplo: Convertir (a — b)* abb
Paso 1: Construir a (se usa regla 2)
Paso 2: Construir b (se usa regla 2)
Paso 3: Construir a — b (se usa regla 3)
Paso 4: Construir ( a — b ) * (se usa regla 5)
Paso 5: Construir ( a — b ) * a (se usa regla 4)
Paso 6: Construir ( a — b ) * ab (se usa regla 4)
Paso 7: Construir ( a — b ) * abb (se usa regla 4)
4