INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

Documentos relacionados
Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

GRAMATICAS LIBRES DEL CONTEXTO

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Expresiones regulares, gramáticas regulares

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Procesadores de Lenguaje

Procesadores de Lenguaje

Propiedades de los Lenguajes Libres de Contexto

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

Unidad 4. Autómatas de Pila

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Expresiones Regulares y Derivadas Formales

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Equivalencia Entre PDA y CFL

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Autómatas Finitos Deterministicos (DFA)

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Computabilidad y Lenguajes Formales: Autómatas de Pila

Es claro que es una relación de equivalencia. Para ver que tener la misma cardinalidad y la cardinalidad están bien definidas queremos ver que

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Ejercicios de Lógica Proposicional *

Propiedades de los Lenguajes Libres de Contexto

Conjuntos, relaciones y funciones Susana Puddu

b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A

Autómatas de Pila y Lenguajes Incontextuales

Tema 1: Matrices y Determinantes

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Teoría de Lenguajes. Gramáticas incontextuales

Inducción Matemática Conjuntos Funciones. Matemática Discreta. Agustín G. Bonifacio UNSL. Repaso de Inducción, Conjuntos y Funciones

Matemáticas. ticas Discretas. Lenguajes y Gramáticas. Tenemos dos clases de lenguaje: Lenguaje Formal

Conjuntos finitos y conjuntos numerables

Introducción a la Teoría de Grafos

Teoría de Lenguajes. Clase Teórica 7 Autómatas de Pila y Lenguajes Independientes del Contexto Primer cuartimestre 2014

V 2 : vectores libres en el plano

Capítulo 4. Lógica matemática. Continuar

Algebra Lineal. Gustavo Rodríguez Gómez. Verano 2011 INAOE. Gustavo Rodríguez Gómez (INAOE) Algebra Lineal Verano / 21

Computabilidad y Lenguajes Formales: Autómatas Finitos

Lenguajes y Gramáticas

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Límites Laterales. El límite por la derecha se denota. x 2 + x 2 = 1. x 2. x + x 2. x = x + x 2. El límite por la izquierda se denota

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

Semana03[1/17] Funciones. 16 de marzo de Funciones

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

y tenemos que f(x) > M < 1 M 1 f(x) < 1 M 3x 5 (x 2) 2 = +

Ingeniería en Computación. Autómatas y Lenguajes Formales. Unidad de competencia IV: Conocer, utilizar y diseñar gramáticas de libre contexto

Estructuras Algebraicas

4.2. Funciones inyectivas, sobreyectivas y biyectivas

Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:

Gramáticas independientes del contexto. Tema 3: Lenguajes independientes del contexto. Derivaciones. Árbol de derivación

Espacios compactos. Capítulo Cubiertas. En este capítulo estudiaremos el concepto de compacidad en un espacio métrico.

DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta

Tema: Autómata de Pila

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

NÚMEROS COMPLEJOS. Capítulo Operaciones con números complejos

Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

Lenguajes Regulares. Antonio Falcó. - p. 1

Teoría de Lenguajes. Clase Teórica 8 Propiedades de Lenguajes Independientes de Contexto y su Lema de Pumping Primer cuartimestre 2014

Inteligencia Artificial II La Lógica Proposicional como un lenguaje formal

Problemas de VC para EDVC elaborados por C. Mora, Tema 4

Aprendizaje y extensiones mixtas

Construcción de tablas de análisis sintáctico LL(1)

Introducción. El uso de los símbolos en matemáticas.

TRIÁNGULOS: RELACIONES DE DESIGUALDAD ENTRE SEGMENTOS Y ÁNGULOS

1 Conjuntos y propiedades de los números naturales

Teoría de la Computabilidad

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO

NÚMEROS COMPLEJOS: C

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

DE LOS NÚMEROS NATURALES Y ENTEROS

Tema 3: Espacios vectoriales

TEMA 2. Números racionales. Teoría. Matemáticas

1. Producto escalar. Propiedades Norma de un vector. Espacio normado. 1.2.Ortogonalidad. Ángulos. 1.4.Producto escalar en V 3.

Métodos de Inteligencia Artificial

MA1001: Introducción al Cálculo

Construcción axiomática del conjunto de los números naturales a partir de una condición sobre su cardinalidad

R no es enumerable. Por contradicción, supongamos que existe una biyección f : N! R. diagonalización de Cantor. Para cada i 2 N:

TEMA 1: NÚMEROS NATURALES. SISTEMA DE NUMERACIÓN

3. Ecuaciones, parte I

Lenguajes No Regulares

Objetivos formativos de Matemática Discreta. Tema 1: Conjuntos, aplicaciones y relaciones

Derivadas Parciales (parte 2)

Gramáticas Independientes del Contexto (GIC)

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

Introducción a los códigos compresores

Continuidad y monotonía

El conjunto de las operaciones de simetría que se pueden aplicar a una molécula tienen las propiedades de un grupo matemático.

ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

10.4 Sistemas de ecuaciones lineales

Diagnóstico de fallas en circuitos digitales

IIC2213. IIC2213 Teorías 1 / 42

Transcripción:

s s INAOE en s (INAOE) 1 / 67

Contenido s en s 1 s 2 3 4 5 6 7 8 en s (INAOE) 2 / 67

s s s Hemos visto que muchos lenguajes no son regulares. Por lo que necesitamos una clase más grande de lenguages Las s (Context-Free Languages) o CFL s jugaron un papel central en lenguaje natural desde los 50 s y en los compiladores desde los 60 s Las s forman la base de la sintáxis BNF Son actualmente importantes para XML y sus DTD s (document type definition) en s (INAOE) 3 / 67

s s s Vamos a ver los CFG s, los lenguajes que generan, los árboles de parseo, el pushdown automata y las propiedades de cerradura de los CFL s. Ejemplo: Considere L pal = {w Σ : w = w R }. Por ejemplo, oso L pal, anitalavalatina L pal, Sea Σ = {0, 1} y supongamos que L pal es regular. Sea n dada por el pumping lemma. Entonces 0 n 10 n L pal. Al leer 0 n el FA debe de entrar a un ciclo. Si quitamos el ciclo entonces llegamos a una contradicción. en s (INAOE) 4 / 67

s Palíndromes s Definamos L pal de forma inductiva. Base: ɛ, 0 y 1 son palíndromes. Inducción: Si w es un palíndrome, también 0w0 y 1w1. Ninguna otra cosa es palíndrome. en s (INAOE) 5 / 67

s Palíndromes s Las CFG s son un mecanismo formal para la definición como la de palíndrome. 1 P ɛ 2 P 0 3 P 1 4 P 0P0 5 P 1P1 donde 0 y 1 son símbolos terminales. en s (INAOE) 6 / 67

s s Libre de s P es una variable o símbolo no terminal o categoría sintáctica. P es en esta gramática también el símbolo inicial. 1 5 son producciones o reglas. La variable definida (parcialmente) en la producción también se llama la cabeza producción y la cadena de cero, 1 o más símbolos terminales o variables a la producción se llama el cuerpo producción. en s (INAOE) 7 / 67

s Una grámatica libre de contexto se define con G = (V, T, P, S) donde: V es un conjunto de variables T es un conjunto de terminales P es un conjunto finito de producciones forma A α, donde A es una variables y α (V T ) S es una variable designada llamada el símbolo inicial en s (INAOE) 8 / 67

Ejemplos s Ejemplo: G pal = ({P}, {0, 1}, A, P), donde A = {P ɛ, P 0, P 1, P 0P0, P 1P1}. Muchas veces se agrupan las producciones con la misma cabeza, e.g., A = {P ɛ 0 1 0P0 1P1}. Ejemplo: Expresiones regulares sobre {0, 1} se pueden definir por la gramática: G regex = ({E}, {0, 1}, A, E), donde A = {E 0, E 1, E E.E, E E + E, E E, E (E)}. en s (INAOE) 9 / 67

Ejemplo s en s Expresiones en un lenguaje de programación donde los operadores son + y, y los argumentos son identificadores (strings) que empiezan con a o b en L((a + b)(a + b + 0 + 1) ). Las expresiones se definen por la gramática: G = ({E, I}, T, P, E) donde T = {+,.(, ), a, b, 0, 1} y P es el siguiente conjunto de producciones: 1)E I 2)E E + E 3)E E E 4)E (E) 5)I a 6)I b 7)I Ia 8)I Ib 9)I I0 10)I I1 (INAOE) 10 / 67

s en s Inferencia recursiva las producciones del cuerpo a la cabeza para reconocer si una cadena está en el lenguaje definido por la gramática. Ejemplo de una inferencia recursiva cadena: a (a + b00). Cadenas Cabeza Del Leng. Cadenas de: usadas (i) a I 5 (ii) b I 6 (iii) b0 I 9 (ii) (iv) b00 I 9 (iii) (v) a E 1 (i) (vi) b00 E 1 (iv) (vii) a + b00 E 2 (v),(vi) (viii) (a + b00) E 4 (vii) (ix) a (a + b00) E 3 (v),(viii) (INAOE) 11 / 67

s las producciones cabeza al cuerpo. Con esto derivamos cadenas que pertenecen a la gramática. Para esto introducimos un nuevo símbolo: Sea G = (V, T, P, S) una CFG, A V, {α, β} (V T ) y A γ P. Entonces, escribimos: αaβ G αγβ o si se sobre-entiende G: αaβ αγβ y decimos que αaβ deriva αγβ. en s (INAOE) 12 / 67

Cerradura de s Definimos como la cerradura reflexiva y transitiva de. Lo que quiere decir es que usamos uno a más pasos de derivación. Ideas: Base: Sea α (V T ), entronces α α (osea que cada cadena se deriva a sí misma). Inducción: Si α β, y β γ, entonces α γ en s (INAOE) 13 / 67

Ejemplo s La derivación de a (a + b00) a partir de E en la gramática anterior sería: E E E I E a E a (E) a (E + E) a (I + E) a (a + E) a (a + I) a (a + I0) a (a + I00) a (a + b00) Podemos abreviar y simplemente poner: E a (a + b00) en s (INAOE) 14 / 67

Derivación e Inferencia s La derivación y la inferencia recursiva son equivalentes, osea que si podemos inferir que una cadena de símbolos terminales w está en el lenguaje de una variable A entonces A w y al revés. Nota 1: en cada paso podemos tener varios reglas de las cuales escoger, e.g.: I E a E a (E) o I E I (E) a (E) Nota 2: no todas las opciones nos llevan a derivaciones exitosas de una cadena en particular, por ejemplo: E E + E no nos lleva a la derivación de a (a + b00). en s (INAOE) 15 / 67

s Para restringir el número de opciones para derivar una cadena. Derivación izquierda (leftmost derivation): lm siempre reemplaza la variable izquierda por uno de los cuerpos de sus producciones. Derivación (rightmost derivation): rm siempre reemplaza la variable por uno de los cuerpos de sus producciones. en s (INAOE) 16 / 67

Ejemplo s La derivación anterior la podemos hacer como derivación izquierda: E lm E E lm I E lm a E lm a (E) lm a (E + E) lm a (I + E) lm a (a + E) lm a (a + I) lm a (a + I0) lm a (a + I00) lm a (a + b00) o simplemente E lm a (a + b00) en s (INAOE) 17 / 67

Ejemplo (cont.) s Por otro lado, también la podemos hacer : E rm E E rm E (E) rm E (E +E) rm E (E +I) rm E (E +I0) rm E (E +I00) rm E (E +b00) rm E (I + b00) rm E (a + b00) rm I (a + b00) rm a (a + b00) o simplemente E rm a (a + b00). en s (INAOE) 18 / 67

Equivalencias s Cualquier derivación tiene una derivación equivalente una. Si w es una cadena de símbolos terminales y A es una variable, A w si y solo si A lm w y si y solo si A rm w. en s (INAOE) 19 / 67

s Si G(V, T, P, S) es una CFG, entonces el lenguaje de G es: L(G) = {w T : S G w}, osea el conjunto de cadenas sobre T derivadas del símbolo inicial. Si G es una CFG al L(G) se llama lenguaje libre de contexto. Por ejemplo, L(G pal ) es un lenguaje libre de contexto. Teorema: L(G pal ) = {w {0, 1} : w = w R } Prueba: ( ) Suponemos w = w R. Mostramos por inducción en w que w L(G pal ). en s (INAOE) 20 / 67

Prueba: s Base: w = 0 or w = 1. Entonces w es ɛ, 0 o 1. Como P ɛ, P 1 y P 0 son producciones, concluimos que P G w en todos los casos base. Inducción: Suponemos w 2. Como w = w R, tenemos que w = 0x0 o w = 1x1 y que x = x R. Si w = 0x0 sabemos hipótesis inductiva que P x, entonces P 0P0 0x0 = w, entonces w L(G pal ). El caso para w = 1x1 es similar. en s (INAOE) 21 / 67

Palíndrome s ( ): Supopnemos que w L(G pal ) y tenemos que mostrar que w = w R. Como w L(G pal ), tenemos que P w. Lo que hacemos es inducción sobre la longitud de. Base: La derivación de se hace en un solo paso, por lo que w debe de ser ɛ, 0 o 1, todos palíndromes. en s (INAOE) 22 / 67

Palíndrome s Inducción: Sea n 1 y suponemos que la derivación toma n + 1 pasos y que el enunciado es verdadero para n pasos. Osea, si P x en n pasos, x es palíndrome. Por lo que debemos de tener para n + 1 pasos: w = 0x0 0P0 P o w = 1x1 1P1 P don segunda derivación toma n pasos. Por la hipótesis inductiva, x es un palíndrome, por lo que se completa la prueba. en s (INAOE) 23 / 67

s Sea G = (V, T, P, S) una CFG y α (V T ). Si S α decimos que α está en forma de sentencia (sentential form) Si S lm α decimos que α es una forma de sentencia izquierda (left-sentencial form), y si S rm α decimos que α es una forma de sentencia (right-sentencial form). L(G) son las formas de sentencia que estan en T. en s (INAOE) 24 / 67

Ejemplo s Si tomamos la gramática del lenguaje sencillo que definimos anteriormente, E (I + E) es una forma de sentencia ya que: E E E E (E) E (E + E) E (I + E). Esta derivación no es ni izquierda ni. Por otro lado: a E es una forma de sentencia izquierda, ya que: E lm E E lm I E lm a E y E (E + E) es una forma de sentencia, ya que: E rm E E rm E (E) rm E (E + E) en s (INAOE) 25 / 67

Ejemplos s en s Defina un CFG que acepte el siguiente lenguaje: {0 n 1 n n 1} (cadenas de 1 o más 0 s seguido del mismo número de 1 s) (C) Defina un CFG que acepte cadenas con el doble de 0 s que de 1 s (T) Generar la gramática para 0 1(0 + 1) y hacer las derivaciones de: 00101 (C) 00011 (T) de paréntesis balanceados (C) de paréntesis redondos y cuadrados balanceados (T) (INAOE) 26 / 67

s Si w L(G) para alguna CFG, entonces w tiene un árbol de parseo (parse tree), el cual nos da la estructura (sintáctica) de w. w puede ser un programa, un query en SQL, un documento en XML, etc. Los árboles de parseo son una representación atlernativa s derivaciones e inferencias recursivas. Pueden existir varios árboles de parseo para la misma cadena. Idealmente nos gustaría que existiera solo uno, i.e., que el lenguaje fuera no ambigüo. Desafortunadamente no siempre se puede quitar la ambigüedad. en s (INAOE) 27 / 67

Construyendo s Sea G = (V, T, P, S) una CFG. Un árbol es un árbol de parseo de G si: 1 Cada nodo interior está etiquetado con una variable en V 2 Cada hoja está etiquetada con un símbolo en V T {ɛ}. Cada hoja etiquetada con ɛ es el único hijo de su padre. 3 Si un nodo interior tiene etiqueta A y sus hijos (de izquierda a ) tienen etiquetas: X 1, X 2,..., X k, entonces: A X 1, X 2,..., X k P en s (INAOE) 28 / 67

Ejemplo s En la gramática: E I, E E + E, E E E, E (E),..., el siguiente es un árbol de parseo: Este árbol muestra la derivación: E I + E. en s (INAOE) 29 / 67

Ejemplo s En la gramática: P ɛ, P 0, P 1, P 0p0, P 0p0, el siguiente es un árbol de parseo: en s Este árbol muestra la derivación: P 0110. (INAOE) 30 / 67

El producto de un árbol de parseo s El producto (yield) de un árbol de parseo es la cadena de hojas de izquierda a. Son en especial relevantes los árboles de parseo que: 1 El producto es una cadena terminal 2 La raíz esté etiquetada con el símbolo inicial El conjunto de productos de estos árboles de parseo nos definen el lenguaje gramática. en s (INAOE) 31 / 67

Ejemplo s Considere el siguiente árbol de parseo: en s cuyo producto es: a (a + b00) (podemos comparar este árbol con la derivación que hicimos antes). (INAOE) 32 / 67

Equivalencias s Sea G = (V, T, P, S) una CFG y A V. Vamos a demostrar que lo siguiente es equivalente: Podemos determinar por inferencia recursiva que w esté en el lenguaje de A A w A lm w y A rm w Existe un árbol de parseo de G con raíz A que produce w en s (INAOE) 33 / 67

Equivalencias s El siguiente es el plan a seguir para probar las equivalencias: en s (INAOE) 34 / 67

De inferencias a árboles s Teorema: Sea G = (V, T, P, S) una CFG y supongan que podemos mostrar que w está en el lenguaje de una variable A. Entonces existe un árbol de parseo para G que produce w. Prueba: la hacemos por inducción en la longitud inferencia Base: Un paso. Debemos de usar la producción A w. El árbol de parseo es entonces: en s (INAOE) 35 / 67

De inferencias a árboles s Inducción: w es inferido en n + 1 pasos. Suponemos que el último paso se baso en la producción: A X 1, X 2,..., X k, donde X i V T. Descomponemos w en: w 1 w 2... w k, donde w i = X i cuando X i T, y cuando X i V, entonces w i fué previamente inferida en X i en a los más n pasos. Por la hipótesis de inferencia existen i árboles de parseo con raíz X i que producen w i. Entonces el siguiente en una árbol de parseo de G con raíz en A que produce w: en s (INAOE) 36 / 67

De inferencias a árboles s en s (INAOE) 37 / 67

De árboles a derivaciones s en s Mostraremos como construir una derivación izquierda de un árbol de parseo. Ejemplo: De una gramática podemos tener la siguiente derivación: E I Ib ab. Entonces, para cualquier α y β existe uan derivación αeβ αiβ αibβ αabβ. Por ejemplo, supongamos que tenemos la derivación: E E + E E + (E) Entonces podemos escoger α = E + ( y β = ) y seguir con la derivación como: E + (E) E + (I) E + (Ib) E + (ab) Por esto es que las CFG se llaman libres de contexto (substitución de cadenas por variables, independientes del contexto). (INAOE) 38 / 67

De árboles a derivaciones s Teorema: Sea G = (V, T, P, S) una CFG y supongamos que existe un árbol de parseo cuya raíz tiene etiqueta A y que produce w. Entonces A lm w en G. Prueba: la hacemos por inducción en la altura del árbol. Base: La altura es 1, y el árbol debe de verse asi: en s Por lo tanto A w P y A lm w. (INAOE) 39 / 67

De árboles a derivaciones s Inducción: Altura es n + 1. El árbol debe de verse así: en s (INAOE) 40 / 67

De árboles a derivaciones s Entonces w = w 1 w 2... w k donde: 1 Si X i T, entonces w i = X i 2 Si X i V, entonces debe de ser la raíz de un subárbol que nos da w i, X i lm w i en G por la hipótesis inductiva en s (INAOE) 41 / 67

De árboles a derivaciones s Ahora mostramos A lm w 1w 2... w i X i+1 X i+2... X k, obtener una derivación izquierda. Probamos sobre i: Base: Sea i = 0. Sabemos que: A lm X 1 X 2... X k Inducción: Hacemos la hipótesis inductiva: A lm w 1w 2... w i 1 X i X i+1... X k Caso 1: Si X i T, no hacemos nada ya que X i = w i que nos da: A lm w 1w 2... w i X i+1... X k en s (INAOE) 42 / 67

De árboles a derivaciones s Case 2: X i V. Por la hipótesis inductiva existe una derivación X i lm α 1 lm α 2... lm w i. Por la propiedad libre de contexto s revivaciones podemos proceder como: en s A lm w 1w 2... w i 1 X i X i+1... X k lm w 1 w 2... w i 1 α 1 X i+1... X k lm w 1 w 2... w i 1 α 2 X i+1... X k lm... w 1 w 2... w i 1 w i X i+1... X k lm (INAOE) 43 / 67

s Ejemplo Construyamos la derivación izquierda del árbol: en s (INAOE) 44 / 67

Ejemplo (cont.) s Sopongamos que construimos inductivamente la derivación izquierda: E lm I lm a que corresponde con la rama izquierda del árbol, y la derivación izquierda: E lm (E) lm (E + E) lm (I + E) lm (a + E) lm (a I) lm (a + I0) lm (a + I00) lm (a + b00) correspondiendo a la rama del árbol. en s (INAOE) 45 / 67

Ejemplo (cont.) s Para las derivaciones correspondientes del árbol completo empezamos con E lm E E y expandimos la primera E con la primera derivación y la segunda E con la segunda derivación: E lm E E lm I E lm a E lm a (E) lm a (E + E) lm a (I + E) lm a (a + E) lm a (a I) lm a (a+i0) lm a (a+i00) lm a (a+b00) De forma similar podemos convertir un árbol en una derivación. Osea, si existe un árbol de parseo con raíz etiquetada con la variable A que produce w T, entonces existe: A rm w. en s (INAOE) 46 / 67

De derivaciones a inferencias recursivas s Supongamos que A X 1 X 2... X k w = w 1 w 2... w k donde X i wi. w, entonces: El factor w i se puede extraer de A w viendo únicamente a la expansión de X i. Por ejemplo: E a b + a y E }{{} E }{{} }{{} E }{{} + }{{} E X 1 X 2 X 3 X 5 X 4 en s (INAOE) 47 / 67

De derivaciones a inferencias recursivas s Tenemos que: E E E E E + E I E + E I I + E I I + I a I + I a b + I a b + a Viendo solo a la expansión de X 3 = E podemos extraer: E I b Teorema: Sea G = (V, T, P, S) una CFG. Suponga A G w y que w es una cadena de símbolos terminales. Entonces podemos inferir que w está en el lenguaje variable A. Prueba: la hacemos por inducción en la longitud derivación A G w en s (INAOE) 48 / 67

De derivaciones a inferencias recursivas s Base: Un paso. Si A G w entonces debe de existir una producción A w en P. Por lo que podemos inferir que w está en el lenguaje de A. Inducción: Suponemos A G w en n + 1 pasos. Escribimos la derivación como: A G X 1 X 2... X k G w en s (INAOE) 49 / 67

De derivaciones a inferencias recursivas s Como vimos, podemos partir w como w 1 w 2... w k donde X i G w i. Además X i G w i puede usar a lo más n pasos. Ahora tenemos una produccuón A X 1 X 2... X k y sabemos por la hipótesis inductiva que podemos inferir que w i está en el lenguaje de X i. Por lo que podemos inferir que w 1 w 2... w k está en el lenguaje de A. en s (INAOE) 50 / 67

en s en s s En la gramática: E I E E + E E E E E (E)... la sentencia E + E E tiene dos derivaciones: E E + E E + E E y E E E E + E E lo cual nos da dos árboles de parseo: en s (INAOE) 51 / 67

en s en s s Si tuvieramos números, e.g., 2,4 y 6, en lugar s E s nos daría 26 por un lado y 36 por el otro. La existencia de varias derivaciones no es gran problema, sino la existencia de varios árboles de parseo. en s (INAOE) 52 / 67

en s en s s en s Por ejemplo, en la misma gramática:... I a I b I Ia I Ib I I0 I I1 la cadena a + b tiene varias derivaciones: E E + E I + E a + E a + I a + b E E + E E + I I + I I + b a + b sin embargo, sus árboles de parseo son los mismos y la estructura de a + b no es ambígüa. (INAOE) 53 / 67

en s en s s : Sea G = (V, T, P, S) una CFG. Decimos que G es ambígüa si existe una cadena en T que tenga más de un árbol de parseo. Si todas las cadenas en L(G) tienen a lo más un árbol de parseo, se dice que G es no ambígüa. Ejemplo: La cadena a + a a tiene dos árboles de parseo: en s (INAOE) 54 / 67

s en s en s Removiendo la ambigüedad s Las buenas noticias: A veces se puede remover la ambigüedad a mano Las malas noticias: no hay un algoritmo para hacerlo Peores noticias: Algunos CFLs solo tienen ambígüas. En la gramática: E I E + E E E (E) y I a b Ia Ib I0 I1 existen dos problemas: 1 No hay precedencia entre y + 2 No existe un agrupamiento en las secuencias de operadores, e.g., E + E + E significa: E + (E + E) o (E + E) + E. (INAOE) 55 / 67

s en s Removiendo la ambigüedad s Solución: podemos introducir más variables para forzar un agrupamiento uniforme: Un factor (F) es una expresión que no puede separarse por un o + Un término (T ) es una expresión que no puede separarse por un + El resto son expresiones que pueden separarse por o + en s (INAOE) 56 / 67

s en s Removiendo la ambigüedad s La gramática queda: I a b Ia Ib I0 I1 F I (E) T F T F E T E + T Con esto, el único árbol de parseo de a + a a es: en s (INAOE) 57 / 67

s en s Removiendo la ambigüedad s en s (INAOE) 58 / 67

s en s Removiendo la ambigüedad s Las razones por las cuales la gramática nueva es no ambígüa son: Un factor es o un identificador o (E) para una expresión E El único árbol de parseo de una secuencia f 1 f 2... f n 1 f n de factores es el que da f 1 f 2... f n 1 como término y f n como factor. en s (INAOE) 59 / 67

s en s Removiendo la ambigüedad s en s Una expresión es una sequencia de: t 1 + t 2 +... + t n 1 + t n de términos t i y solo se puede parsear con t 1 + t 2 +... + t n 1 como una expresión y con t n como término. (INAOE) 60 / 67

s en s ambigüedad En no ambígüas, las derivaciones son únicas. Los dos árboles de derivación de a + a a son: en s (INAOE) 61 / 67

s en s ambigüedad Que nos da dos derivaciones: E lm E + E lm I + E lm a + E E lm a + I E lm a + a E lm a + a I lm a + a a y E lm E + E E lm I + E E lm a + E E lm a + I E lm a + a E lm a + a I lm a + a a en s (INAOE) 62 / 67

en s y ambigüedad s En general: Se tienen un árbol de parseo pero varias derivaciones Muchas derivaciones izquierda implican muchos árboles de parseo Muchas derivaciones implican muchos árboles de parseo en s (INAOE) 63 / 67

en s y ambigüedad s en s Teorema: For cualquier CFG G, una cadena de terminales w tiene dos árboles de parseo diferentes si y solo si w tiene dos derivaciones izquierda distintas desde el símbolo inicial. Esquema prueba: (Solo si) Si dos árboles de parseo difieren, tienen un nodo con diferentes producciones. Las derivaciones izquierda correspondientes usaran sus derivaciones en estas dos producciones diferentes y por lo tanto serán distintas. (Si) Analizando como se construye un árbol de parseo a partir de una derivación izquierda, debe de ser claro que dos derivaciones distintas producen dos árboles de parseo distintos. (INAOE) 64 / 67

en s Inherente s Un CFL L es inherentemente ambígüo si todas las para L son ambígüas. Ejemplo: Considere L = {a n b n c m d m : n 1, m 1} {a n b m c m d n : n 1, m 1} Una gramática para L es: S AB C A aab ab B cbd cd C acd add D bdc bc en s (INAOE) 65 / 67

en s Ejemplo s Veamos los árboles para: aabbccdd: en s (INAOE) 66 / 67

en s Ejemplo (cont.) s Vemos que existen dos derivaciones izquierda: S lm AB lm aabb lm aabbb lm aabbcbd lm aabbccdd y S lm C lm acd lm aabddd lm aabbccdd Se puede mostrar que todas las para L se comportan como la anterior. L es inherentemente ambígüo. en s (INAOE) 67 / 67