5. Análisis Lexicográfico Análisis Sintáctico Análisis Semántico Optimización Preparación para la generación de código Generación de código Fases del Compilador 1 1 Fases del Compilador según Karen A. Lemone Autómatas de pila no deterministas
52. Δ ( q 1 , a, z ) = { ( q 1 , AH), ( q 2 , z), ( q 3 , AHB) } Δ ( q 1 , a, A ) = { ( q 2 , a)} Δ ( q 2 , b, b ) = { ( q 2 , b)} Δ ( q 2 , a, z ) = { ( q 3 , z)} Δ ( q 3 , a, A ) = { ( q 3 , Fb)} Δ ( q 3 , b, F ) = { ( q 4, aHaE)} La transiciones quedan:
53. El autómata queda M = ( Q, Σ , Γ , Δ , s, F, z) donde Q = { q 1 , q 2 , q 3 , q 4 } Σ = { a, b } Γ = { z, A, B, E, F, H, a, b} s = q 1 F = { q 2 , q 4 } y Δ , la regla de transición, está dada por Δ ( q 1 , a, z ) = { ( q 1 , AH), ( q 2 , z), ( q 3 , AHB) } Δ ( q 1 , a, A ) = { ( q 2 , a)} Δ ( q 2 , b, b ) = { ( q 2 , b)} Δ ( q 2 , a, z ) = { ( q 3 , z)} Δ ( q 3 , a, A ) = { ( q 3 , Fb)} Δ ( q 3 , b, F ) = { ( q 4, aHaE)}
54. 3.4 Definición de autómata de pila no determinista 1 . Un autómata de pila no determinista es una 7-tupla M = ( Q, Σ , Γ , Δ , s, F, z ) donde Q es un conjunto finito de estados Σ es un alfabeto de entrada Γ es un alfabeto llamado alfabeto de la pila Δ es una regla de transición, Δ : Q ( Σ { ε } ) Γ P( Q Γ *) s Q es el estado inicial o de partida F Q es el conjunto de estados finales o de aceptación z Γ es el símbolo inicial o de partida ___________________________ 1 Basada en la definición de Kelly y de Isasi-Martínez-Borrajo
56. 3.5 Definición de lenguaje aceptado por un autómata de pila no determinista 1 . Sea M = ( Q, Σ , Γ , Δ , s, F, z ) un autómata de pila no determinista. El lenguaje aceptado por M se denota por L(M) y es el conjunto __________________________ 1 Dean Kelly
57. 3.6 Ejemplo 2 Acepta: ab , aabb , aaabbb , aaaabbbb , … Es decir acepta el lenguaje { ab , aabb , aaabbb , aaaabbbb , …} Formalmente acepta el lenguaje: { a i b i | i 1}
58. 3.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto Ejemplo:
59. 4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto Ejemplo: Gramática independiente del Contexto: S AB A aAa | b B bBa | ε
60. 4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto Ejemplo: Gramática independiente del Contexto: S AB A aAa | b B bBa | ε
61. 4.8 Método de construcción de una gramática independiente del contexto a partir de un ADPND ADPND M con estado inicial q 1 , F = { q 3 } y transiciones: Δ ( q 1 , a, z ) = { ( q 1 , Az) } Δ ( q 2 , b, A ) = { ( q 2 , ε )} Δ ( q 1 , a, A ) = { ( q 1 , AA)} Δ ( q 2 , ε , A ) = { ( q 2 , ε )} Δ ( q 1 , b, A ) = { ( q 2 , ε )} Δ ( q 2 , ε , z ) = { ( q 3, ε )} Gramática independiente del contexto con símbolo inicial [q 1 zq 3 ] [q 1 Aq 2 ] b [q 2 Aq 2 ] b | ε [q 2 zq 3 ] ε [q 1 zq 1 ] a[q 1 Aq 1 ] [q 1 zq 1 ] | a [q 1 Aq 2 ] [q 2 zq 1 ] | a[q 1 Aq 3 ] [q 3 zq 1 ] [q 1 zq 2 ] a[q 1 Aq 1 ] [q 1 zq 2 ] | a [q 1 Aq 2 ] [q 2 zq 2 ] | a[q 1 Aq 3 ] [q 3 zq 2 ] [q 1 zq 3 ] a[q 1 Aq 1 ] [q 1 zq 3 ] | a [q 1 Aq 2 ] [q 2 zq 3 ] | a[q 1 Aq 3 ] [q 3 zq 3 ] [q 1 Aq 1 ] a[q 1 Aq 1 ] [q 1 Aq 1 ] | a [q 1 Aq 2 ] [q 2 Aq 1 ] | a[q 1 Aq 3 ] [q 3 Aq 1 ] [q 1 Aq 2 ] a[q 1 Aq 1 ] [q 1 Aq 2 ] | a [q 1 Aq 2 ] [q 2 Aq 2 ] | a[q 1 Aq 3 ] [q 3 Aq 2 ] [q 1 Aq 3 ] a[q 1 Aq 1 ] [q 1 Aq 3 ] | a [q 1 Aq 2 ] [q 2 Aq 3 ] | a[q 1 Aq 3 ] [q 3 Aq 3 ]
62. 4.9 Aplicación Ejemplo: Especificar la sintaxis de una expresión algebraica (problema simplificado) Gramática independiente del Contexto: S S+T | T T T*F | F F a | (S) Palabras que el autómata debe aceptar (a+a)*a+a*a a*(a+(a+a)) (a+a*(a+a))*(a*a)
63. ADPND para especificar la sintaxis de una expresión algebraica (problema simplificado) El autómata es una guía para escribir el código del compilador
64. 4.10 Poder de representación { a i b i c i | i 0 } { a i b i | i 1} … {ai | i 0} … Autómata Finito no determinista Lenguajes regulares Autómata de pila no determinista Lenguajes independientes del contexto Todos los lenguajes