2. Analizador léxico
Departamento de Ciencias de la Computación
Expresiones regulares
Φ Φ
λ λ λ
∈
Departamento de Ciencias de la Computación
3. Expresiones regulares complejas
∪
Departamento de Ciencias de la Computación
Analizador léxico
Departamento de Ciencias de la Computación
4. Reconocedor
Departamento de Ciencias de la Computación
Autómata Finito No Determinista (AFND)
δ
δ
δ ∈ ∈ ∪ λ ⊂
∈
⊆
Departamento de Ciencias de la Computación
5. Diagrama de transiciones
δ
Departamento de Ciencias de la Computación
Diagrama de transiciones: ejemplo
*
δ δ δ
δ δ δ
δ δ δ
Departamento de Ciencias de la Computación
6. Diagrama de transiciones: ejemplo
δ δ δ
δ δ δ
δ δ δ
Departamento de Ciencias de la Computación
Función de transición extendida
δ λ
δ
δ
δ
Departamento de Ciencias de la Computación
7. Función de transición extendida: ejemplo
δ λ
δ δ
δ δ ∪δ ∪
δ
δ
δ
Departamento de Ciencias de la Computación
Expresión regular – AFND
Φ
λ
λ
Departamento de Ciencias de la Computación
8. Expresión regular – AFND
λ λ
λ λ
λ
Departamento de Ciencias de la Computación
Expresión regular – AFND
λ
λ λ
λ
Departamento de Ciencias de la Computación
9. Expresión regular – AFND: ejemplo
Departamento de Ciencias de la Computación
Expresión regular – AFND: ejemplo
λ
λ λ
λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
10. Analizador léxico
Departamento de Ciencias de la Computación
Autómata Finito Determinista (AFD)
δ
δ
δ ∈ ∈ ∪ λ ∈
∈
⊆
Departamento de Ciencias de la Computación
11. AFND vs AFD
δ
δ ∈ ∈ ∪ λ ⊂
δ
δ ∈ ∈ ∪ λ ∈
δ
Departamento de Ciencias de la Computación
Tabla de transiciones: ejemplo
δ
δ
δ
δ δ
δ
Departamento de Ciencias de la Computación
12. Tabla de transiciones: ejemplo
δ
δ
δ
δ
Departamento de Ciencias de la Computación
Función de transición extendida
δ λ
δ δ δ
Departamento de Ciencias de la Computación
13. Función de transición extendida: ejemplo
δ λ
δ δδ λ δ
δ δδ δ
δ
δ
δ
δ
Departamento de Ciencias de la Computación
Analizador léxico
Departamento de Ciencias de la Computación
14. Analizador léxico
λ
δ
δ
Departamento de Ciencias de la Computación
Analizador léxico
λ
δ
δ
Departamento de Ciencias de la Computación
15. AFND- λ a AFD
Departamento de Ciencias de la Computación
AFND- λ a AFD: procedimiento
λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
16. AFND- λ a AFD: procedimiento
λ
λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
AFND- λ a AFD: procedimiento
λ
λ, λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
17. AFND- λ a AFD: procedimiento
λ
λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
AFND- λ a AFD: procedimiento
∈ ∈
λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
18. AFND- λ a AFD: procedimiento
δ ∈
δ λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
AFND- λ a AFD: procedimiento
δ δ δ
δ λ δ λ δ λ
δ δ δ
δ λ δ λ δ λ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
19. AFND- λ a AFD: procedimiento
δ δ
δ δ
δ δ δ δ
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
AFND- λ a AFD: procedimiento
λ
λ λ λ
λ
Departamento de Ciencias de la Computación
20. Analizador léxico
δ
δ
Departamento de Ciencias de la Computación
AFND a AFD: ejemplo
Departamento de Ciencias de la Computación
21. AFND a AFD: ejemplo
Departamento de Ciencias de la Computación
AFND a AFD: ejemplo
Departamento de Ciencias de la Computación
22. Ejercicios
Departamento de Ciencias de la Computación
AFND- λ a AFD: ejercicio
λ,+,− λ
Departamento de Ciencias de la Computación
23. AFND- λ a AFD: ejercicio
λ λ
Departamento de Ciencias de la Computación
AFND a AFD: ejercicio
Departamento de Ciencias de la Computación
25. Autómata Finito Mínimo
δ δ
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
δ
δ
Departamento de Ciencias de la Computación
26. Autómata Finito Mínimo
γ
γ
δ
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
Departamento de Ciencias de la Computación
27. Autómata Finito Mínimo: Ejercicio
+,−
Departamento de Ciencias de la Computación
Autómata Finito Mínimo: Ejercicio
Departamento de Ciencias de la Computación
33. Detección de errores y recuperación
Departamento de Ciencias de la Computación
Ejemplo de análisis léxico
?
Departamento de Ciencias de la Computación
34. Ejemplo de análisis léxico
Departamento de Ciencias de la Computación
Especificación de un analizador léxico
Departamento de Ciencias de la Computación
35. Ejemplo
Departamento de Ciencias de la Computación
Identificador de palabras reservadas
Departamento de Ciencias de la Computación
37. Resolución explícita
Departamento de Ciencias de la Computación
Ejemplo: Diagrama de transiciones
Departamento de Ciencias de la Computación
38. Ejemplo: Diagrama de transiciones
*
* *
*
Departamento de Ciencias de la Computación
Ejemplo: Diagrama de transiciones
Departamento de Ciencias de la Computación
39. Ejercicio: Diagrama de transiciones
λ
Departamento de Ciencias de la Computación
Ejercicio: Diagrama de transiciones
8
- d d
d otro * ENTERO
0 6 7
+
+ +
1 3 5 2INCR
otro otro
* **
2 SUMA 4 SUMA
Departamento de Ciencias de la Computación
40. Ejercicio: Diagrama de transiciones
Departamento de Ciencias de la Computación
Implementación de analizadores léxicos
Departamento de Ciencias de la Computación
41. Implementación a mano de un analizador
léxico
Departamento de Ciencias de la Computación
Ejemplo
Estado 0-9 otro token Retroceso
0 1 Error - -
1 1 2 - -
2 - - Num_entero 1
Departamento de Ciencias de la Computación
42. Ejemplo
Estado + - d Token Retroceso
0 1 8 6 - -
1 3 2 2 - -
2 - - - SUMA 1
3 5 4 4 - -
4 - - - SUMA 2
5 - - - 2INCR 0
6 7 7 6 - -
7 - - - ENTERO 1
8 Error Error 6 - -
Departamento de Ciencias de la Computación
Prioridad de los tokens
Departamento de Ciencias de la Computación
43. Ejemplo de prioridad de tokens
Departamento de Ciencias de la Computación
Ejercicio
Departamento de Ciencias de la Computación