Professional Documents
Culture Documents
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
Contenido
S SbS S ScS Sa
Ambigedad en gramticas
Considrese la gramtica:
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
S SbS | ScS | a
1. S => SbS => SbScS => SbSca => Sbaca => abaca 2. S => ScS => SbScS => abScS => abacS => abaca
Derivacin 1
Derivacin 2
S a
S S
a
4
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
Ambigedad en gramticas
Una gramtica es ambigua cuando para una determinada cadena, se produce ms de un rbol de derivacin. S SbS | ScS | a
S S S a S S S a
S a
b S a
S a
S a
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
Ambigedad en gramticas
Ambigedad en gramticas
Una gramtica es ambigua si existe una cadena w L(G) que tiene ms de una derivacin por la izquierda o ms de una derivacin por la derecha o si tiene dos o ms rboles de derivacin.
En caso de que toda cadena w L(G) tenga un nico rbol de derivacin, la gramtica es no ambigua. P.g: La gramtica S aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda
S aS aa
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
(Definicin formal)
S a S a
S Sa aa
S S a
a 6
Una gramtica que refleja mejor el problema de ambigedad es la que valida expresiones aritmticas sobre id y num.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
Ambigedad en gramticas
Ambigedad en gramticas
EE+E EEE E id E num E -E E (E)
La ambigedad puede producir serios problemas en lenguajes cuyo significado depende, en parte, de su estructura, como es el caso de los lenguajes naturales y los de programacin.
E E id + num E id E id
E + E id
8
num *
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
Ambigedad en gramticas
Eliminar la ambigedad en una gramtica requiere de un proceso de anlisis propio de cada gramtica que verifique que para ninguna palabra que esta genera se puedan generar ms de un rbol de derivacin. En algunos casos, la ambigedad de una gramtica se puede eliminar utilizando nuevas variables que eliminen los rboles de derivacin no deseados. Tambin existen los lenguajes inherentemente ambiguos para los que no existe una gramtica no ambigua equivalente.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
(Eliminacin)
Ambigedad en gramticas
En el ejemplo de los operadores aritmticos, adems de la variable E, que representa expresiones, tambin se utilizan las variables F para factores y T para trminos y se tienen las siguientes reglas:
EE+T TT*F F (E) F id ET TF T -F F num
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
(Eliminacin)
10
Una gramtica bien formada facilita el correcto tratamiento y deteccin a la hora de ser impuesta en algn lenguaje. Para poder construir una gramtica adecuada se debe verificar la correcta escritura y reglas de produccin de la gramtica.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
11
Sin Reglas Innecesarias: A b, es una regla innecesaria si A no hace parte del lado derecho de otra regla. A es un smbolo inaccesible. Sin Reglas Superfluas: Dada la gramtica G = ( {a,b}, { S, A, B}, S, {S AB, A Aa|a, B Bb} ), la regla B Bb es superflua porque no puede derivar una cadena que solo contenga smbolos terminales.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
12
Sin Smbolos No Generativos: Dada la gramtica G= (N, , S, P), para cada smbolo A de N se construye la gramtica G(A)=(NA, A, A, PA), si L(G(A)) es vaco, entonces A es un smbolo no generativo.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
13
Sin Reglas No Generativas: U , es una regla no generativa. Si el lenguaje representado por la gramtica no contiene la palabra vaca es posible eliminar todas las reglas no generativas, de lo contrario se debe admitir la regla S. Sin Reglas de Redenominacin: A B es una regla de redenominacin.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
14
Llamamos smbolo vivo al smbolo a partir del cual se puede derivar una cadena de terminales. Llamamos smbolo muerto a los smbolos no-vivos, no generan una cadena del lenguaje. Llamamos smbolo inaccesible si nunca aparece en la parte derecha de una produccin. A las gramticas que contienen estos tipos de smbolos se les llama gramticas scias.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
15
Teorema 1: si todos los smbolos de la parte derecha de una produccin son smbolos vivos, entonces el smbolo de la parte izquierda tambin lo es. Teorema 2: si el smbolo no-terminal de la parte izquierda de una produccin es accesible, entonces todos los smbolos de la parte derecha tambin lo son.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
16
Para limpiar una gramtica primero se eliminan los smbolos muertos y despus los smbolos inaccesibles. Una gramtica est bien formada si es limpia y adems no contiene producciones
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
17
1. Hacer una lista de no-terminales que tengan al menos una produccin con slo smbolos terminales en la parte derecha. 2. Dada una produccin, si todos los no-terminales de la parte derecha pertenecen a la lista, entonces podemos incluir en la lista al no-terminal de la parte izquierda de la produccin. 3. Cuando ya no se puedan incluir ms smbolos en la lista mediante la aplicacin del paso 2, la lista contendr los smbolos no-terminales vivos y el resto sern smbolos muertos.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
18
1. Se inicializa una lista de no-terminales que sabemos que son accesibles con el axioma. 2. Si la parte izquierda de una produccin est en la lista, entonces se incluye en la misma al no-terminal que aparece en la parte derecha de la produccin. 3. Cuando ya no se pueden incluir ms smbolos a la lista mediante la aplicacin del paso 2, entonces la lista contendr todos los smbolos accesibles y el resto de los noterminales sern inaccesibles.
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
19
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
20
Smbolos MUERTOS G
Los smbolos muertos aparecen en la parte derecha de las reglas superfluas lo que indica que las siguientes reglas son superfluas en la gramtica: S G F Ga G FG
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
21
Smbolos INACCESIBLES CD
Los smbolos inaccesibles aparecen en la parte izquierda de las reglas innecesarias lo que indica que las siguientes reglas son innecesarias en la gramtica: CgD ChDt Dx Dy Dz
Teora computacional 11 Gramticas no ambiguas, limpias y bien formadas Prof. Edgardo Adrin Franco Martnez
22
Gramtica limpia
Ejercicios 04
S SS + | SS * | a
y la cadena
aa + a *
cadena b) Proporcione una derivacin por la derecha para la cadena c) Proporcione un rbol de derivacin para la cadena d) La gramtica es ambigua o no? Justifique su respuesta
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
24
Ejercicios 04
S 0 S1 | 01
y la cadena
000111
cadena b) Proporcione una derivacin por la derecha para la cadena c) Proporcione un rbol de derivacin para la cadena d) La gramtica es ambigua o no? Justifique su respuesta
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
25
Ejercicios 04
3.
S S (S )S |
y la cadena
(()())
cadena b) Proporcione una derivacin por la derecha para la cadena c) Proporcione un rbol de derivacin para la cadena d) La gramtica es ambigua o no? Justifique su respuesta
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
26
Ejercicios 04
4.
y la cadena
(a + a) * a
cadena b) Proporcione una derivacin por la derecha para la cadena c) Proporcione un rbol de derivacin para la cadena d) La gramtica es ambigua o no? Justifique su respuesta
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
27
Ejercicios 04
5.
y la cadena
aabbab
cadena b) Proporcione una derivacin por la derecha para la cadena c) Proporcione un rbol de derivacin para la cadena d) La gramtica es ambigua o no? Justifique su respuesta
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
28
Ejercicios 04
El conjunto de todas las cadenas de 0s y 1s , de tal forma que justo antes de cada 0 vaya por lo menos un 1. El conjunto de todas las cadenas de 0s y 1s que sean palndromos; es decir, que la cadena se lea igual al derecho y al revs. El conjunto de todas las cadenas de 0s y 1s en donde 011 no aparece como subcadena.
7.
8.
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
29
Ejercicios 04
9. E .aFB|F|C|Da
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
30
Grupo Contrasea
Teora computacional 09 Conversin de AFN a AFD Prof. Edgardo Adrin Franco Martnez
Ejercicios 04
El documento incluir portada, la redaccin y respuesta en Se deber de incluir encabezados en cada pgina. Enviar con el nombre: Ejercicios04_NombreAlumno.* Se debern de describir todos los procedimientos
31
necesarios