110 likes | 246 Views
Teoría de Autómatas I. 2º curso Ingeniería Técnica en Informática de Sistemas UNED. Sesión 6. Analizadores Sintácticos LL(k) y LR(k). Analizadores Sintácticos LL(k) y LR(k). Ejercicio: Producir un Autómata de Pila equivalente a la gramática: S → xSy S → λ Solución página 116
E N D
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED
Sesión 6 • Analizadores Sintácticos LL(k) y LR(k) Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Ejercicio: • Producir un Autómata de Pila equivalente a la gramática: S → xSy S → λ • Solución página 116 • Segmento de programa equivalente (figura 2.26) • Utilizar el autómata de pila con la cadena de entrada “xxyy” a partir del símbolo inicial S • El autómata es indeterminista • No sabemos qué regla utilizar Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Principio de preanálisis: • Técnica que permite observar los símbolos siguientes sin leerlos • El símbolo siguiente se almacena en un buffer • Solución ejercicio anterior Figura 2.27 • ¿Cuántos símbolos son necesarios? • Depende de las reglas de la gramática • Gramática figura 2.25 → 1 • Gramática figura 2.28 → 2 Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Lenguajes LL(k): • L → Lee su entrada de izquierda a derecha • L → Produce una derivación por la izquierda • k → Nº de símbolos de preanálisis necesarios • A mayor k mayor potencia (más lenguajes) • Existen lenguajes independientes del contexto no LL(k) → LL(k) < LIC • xn / n є N xn yn / n є N Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Análisis sintáctico LL • Tablas de análisis sintáctico: • Filas = No-Terminales • Columnas = Terminales • Figura 2.29 (página 119) • Algoritmo genérico de análisis sintáctico • Puede usarse con cualquier tabla (Figura 2.30) • Ejercicios 3 y 4, página 121 Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Lenguajes LR(k): • L → Lee su entrada de izquierda a derecha • R → Produce una derivación por la derecha • k → Nº de símbolos de preanálisis necesarios • LL → Análisis descendente • Del todo a las partes (S → xy) • LR → Análisis ascendente • De las partes al todo (xy → S) Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Lenguajes LR(k): • Conversión de una gramática en un autómata de Pila → Figura 232 (página 123) • Análisis cadena zazabzbz→ Figura 233 (página 124) • Se produce una derivación por la derecha (página 125) • Ejercicios 1 y 2 (Página 133) • Problema del indeterminismo: ¿Cuándo reducir? • Figura 2.33: Paso 4 → ¿Por qué reduce z a M y no a N? • Figura 2.33: Paso 9 → ¿Por qué reduce z a N y no a M? Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • Tablas de análisis LR(k): • Filas: Símbolos especiales • Columnas: Terminales, No-Terminales y FDC • Se construyen a partir de autómatas (Figura 2.37) • Ejemplo en Figura 2.34 • Traza en la Figura 2.36 • Algoritmo de análisis LR(k) • Puede usarse con cualquier tabla (figura 2.35) Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) • LR(k) incluye más lenguajes que LL(k) • LR(k) es justamente la clase de los lenguajes independientes del contexto deterministas • Existen lenguajes independientes del contexto que no son LR(k) • xnyn / n є N+ xny2n / n є N+ Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana
Analizadores Sintácticos LL(k) y LR(k) Ejercicios 1 y 2 página 133 Teoría de Autómatas I 2º Ing. Tec. Informática Sistemas Josep Silva Galiana