GRAMÁTICA DELIBRE CONTEXTO
¿QUÉ ES LA GRAMÁTICA DE LIBRECONTEXTO O GLC?• Gramática• Permite definir un lenguaje mediante reglas que nos permiten gene...
DEFINICIÓN FORMAL DE LA GRAMÁTICA• G = (VN, VT, S, P) donde:• VN (vocabulario no terminal): conjunto finito de símbolos qu...
UN EJEMPLO 1 PARA CIERTASEXPRESIONES ARITMÉTICASG = (VN, VT, S, P)• VT={ +, -, , *, ( , ), id }• VN= { E}• S=E• P:1. E→E+E...
EJEMPLO 2: PARA UNA ORACIÓN DEFINIDA• ORACIÓN SUJETO PREDICADO | PREDICADO• SUJETO ARTÍCULO NOMBRE• ARTICULO el | la• NOMB...
BNF (BACKUS-NAUR FORM).• Notación utilizada frecuentemente para escribir gramáticas de tipo 2 o libresdel contexto. Esta ...
DADA LA SIGUIENTE CADENA, PROPORCIONE LAS PRODUCCIONESNECESARIAS EN GRAMÁTICA LIBRE DE CONTEXTO QUE GENEREDICHA CADENA. PR...
SEA LA GRAMÁTICA:G=({S},{A,B},S,P), DONDE P={(S->ASB),(S->AB)}.DETERMINAR EL LENGUAJE QUE GENERASolución:S->aSbS->abS==>aS...
EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONAS1. Hacer una gramática independiente del contexto (G.I.C), que genere nombresde p...
EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONASEj: Ana Perez ZeaResolución:S= nombre (axioma inicial)nombre= nom nom2 esp nom no...
EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONASÁRBOL DE ANÁLISIS SINTÁCTICO
EJEMPLO 2: CÓDIGO EN LENGUAJE C1. Hacer una gramática independiente del contexto (G.I.C), del siguiente código en C:# incl...
EJEMPLO 2: CÓDIGO EN LENGUAJE CReglas de producción:<CAB>::= <OPNUM><ESP>include<ACA><LIB><CCA><LIB>::= stdio.h|conio.h<OP...
EJEMPLO 2: CÓDIGO EN LENGUAJE C<OPVAR>::=<VAR><OPBASIC><VAR><CADENA>::= <PALABRA><PALABRA2><PALABRA2>::=<ESP><CADENA>|Є<PA...
Próxima SlideShare
Cargando en…5
×

Gramática de libre contexto

2.417 visualizaciones

Publicado el

Se describe que es la gramática libre contexto

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.417
En SlideShare
0
De insertados
0
Número de insertados
4
Acciones
Compartido
0
Descargas
58
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Gramática de libre contexto

  1. 1. GRAMÁTICA DELIBRE CONTEXTO
  2. 2. ¿QUÉ ES LA GRAMÁTICA DE LIBRECONTEXTO O GLC?• Gramática• Permite definir un lenguaje mediante reglas que nos permiten generar o producircadenas de un lenguaje.• Estas gramáticas son similares a las gramáticas de los lenguajes naturales, peromucho más restrictivas y sencillas.• Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por unautómata de pila determinístico o no determinístico.
  3. 3. DEFINICIÓN FORMAL DE LA GRAMÁTICA• G = (VN, VT, S, P) donde:• VN (vocabulario no terminal): conjunto finito de símbolos que permitenrepresentar estados intermedios de la generación de las palabras del lenguaje• VT (vocabulario terminal): conjunto finito de los símbolos que forman laspalabras del lenguaje. N ∩ T = ᴓ• S ∈ VN (símbolo inicial o axioma): a partir del que se aplican las reglas de lagramática para obtener las distintas palabras del lenguaje.• P es el conjunto de reglas de producción (reglas de derivación o reglas dereescritura) que permiten generar las palabras del lenguaje.
  4. 4. UN EJEMPLO 1 PARA CIERTASEXPRESIONES ARITMÉTICASG = (VN, VT, S, P)• VT={ +, -, , *, ( , ), id }• VN= { E}• S=E• P:1. E→E+E 4. E→ E * E2. E→E- E 5. E→ E / E3. E→(E) 6. E → idNota: También los podemos ponerlo como una sola producción con alternativasE → E + E | E - E | E E | E * E | ( E) | id
  5. 5. EJEMPLO 2: PARA UNA ORACIÓN DEFINIDA• ORACIÓN SUJETO PREDICADO | PREDICADO• SUJETO ARTÍCULO NOMBRE• ARTICULO el | la• NOMBRE casa | niño• PREDICADO VERBO COMPLEMENTO• VERBO corre | es• COMPLEMENTO bien | obediente | bonita
  6. 6. BNF (BACKUS-NAUR FORM).• Notación utilizada frecuentemente para escribir gramáticas de tipo 2 o libresdel contexto. Esta notación sigue las siguientes convenciones:1. no terminales se escriben entre < >2. terminales son cadenas de caracteres sin < >3. en lugar de ® se utiliza :: = que se lee “se define como”4. varias reglas del tipo<A> :: = <B1><A> :: = <B2> Se pueden escribir como… <A> :: = <B1> ½ <B2> ½ ... ½ <Bn><A> :: = <Bn>
  7. 7. DADA LA SIGUIENTE CADENA, PROPORCIONE LAS PRODUCCIONESNECESARIAS EN GRAMÁTICA LIBRE DE CONTEXTO QUE GENEREDICHA CADENA. PROPORCIONE UNA DEMOSTRACIÓN CONDERIVACIÓN POR LA IZQUIERDA.Cadena:((a,a),a,(a))Solución:S -> (L) | aL -> L,S | SGramática: G=(V,T,P,S) G=({S,L},{a,","},P,S)Demostración:S ==> (L) ==> (L,S) ==> (L,S,S) ==> (S,S,S) ==> ((L),S,S) ==>==> ((L,S),S,S) ==> (S,S),S,S) ==> ((a,S),S,S) ==> ((a,a),S,S) ==>==> ((a,a),a,S) ==> ((a,a),a,(L)) ==> ((a,a),a,(S)) ==> ((a,a),a,(a))
  8. 8. SEA LA GRAMÁTICA:G=({S},{A,B},S,P), DONDE P={(S->ASB),(S->AB)}.DETERMINAR EL LENGUAJE QUE GENERASolución:S->aSbS->abS==>aSb==>aaSbb==>aaaSbbb==>aaaaaSbbbbb ... ==>==>a(n-1)Sb(n-1)==>anbnL(G)={anbn / n>=1}
  9. 9. EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONAS1. Hacer una gramática independiente del contexto (G.I.C), que genere nombresde persona, mínimo un nombre y un apellido, máximo dos nombres y dosapellidos. Cada nombre y apellido debe comenzar por mayúscula.Nota: Se tiene en cuenta que Є=vacío; no se aceptan apellidos compuestos.1. nombre → nom nom2 esp nom nom22. nom2 → esp nom │Є3. nom → nom min │may4. may → A│B│C│D│…│Z5. min → a│b│c│d│…│z6. esp → “ “
  10. 10. EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONASEj: Ana Perez ZeaResolución:S= nombre (axioma inicial)nombre= nom nom2 esp nom nom2nom min Є esp nom min esp nom (3)(2)(3)(2)nom min min Є esp nom min min esp nom min (3)(3)(3)may min min Є esp nom min min min esp nom min min (3)(3)(3)may min min Є esp nom min min min min esp may min min (3)(3)may min min Є esp may min min min min esp may min min (3)A n a P e r e z Z e a
  11. 11. EJEMPLO 1: GENERADOR DE NOMBRE DEPERSONASÁRBOL DE ANÁLISIS SINTÁCTICO
  12. 12. EJEMPLO 2: CÓDIGO EN LENGUAJE C1. Hacer una gramática independiente del contexto (G.I.C), del siguiente código en C:# include <stdio.h># include <stdio.h>main(){int i, var1, var2, total;clrscr();printf(“Ingrese num 1:”);scanf(“%d”,&var1);printf(“Ingrese num 2:”);scanf(“%d”,&var2);total=var1+var2;printf(“la suma de num 1 y num 2 es: ”,total);getch();Return 0;}
  13. 13. EJEMPLO 2: CÓDIGO EN LENGUAJE CReglas de producción:<CAB>::= <OPNUM><ESP>include<ACA><LIB><CCA><LIB>::= stdio.h|conio.h<OPNUM>::= #<ACA>::= <<CCA>::= ><FUNC>::=<TIPOF><PR><AP><CP><ABLL><CELL><TIPOF>::= void|int|Є<TIPOV>::= int|float|doublé<PR>::= main<AP>::= (<CP>::= )<FSENT>::= ;<COMA>::= ,<AMP>::= &<VARS>::=<TIPOV><VAR><FSENT><VAR>::=<CADENA><COMA><VAR>|<CADENA><FUNCR>::= <FR><AP><CP><FSENT><TIPFORM>::= %d|%i|%f|%s|%c<FR>::= clrscr|getch|printf|scanf|return<OPBASIC>::= +|-|*|/<ABCO>::= “<CECO>::= ”
  14. 14. EJEMPLO 2: CÓDIGO EN LENGUAJE C<OPVAR>::=<VAR><OPBASIC><VAR><CADENA>::= <PALABRA><PALABRA2><PALABRA2>::=<ESP><CADENA>|Є<PALABRA>::=<PALABRA><MIN>|<PALABRA><NUM>|<MAY>|<MIN>|<ESP><MAY>::= A|B|C|…|Z<MIN>::= a|b|c|…|z<NUM>::= 0|1|2|…|9<FPRINTF>::=<FR><AP><ABCO><CADENA><CECO><CADENA2><CP><FSENT><CADENA2>::= <COMA><VAR>|Є<FSCANF>::=<FR><AP><ABCO><TIPFORM><CECO><AMP><VAR><CP><FSENT><FRETURN>::=<FR><VAL><FSENT><VAL>::= 0|1<ESP>::=“ “<ABLL>::= {<CELL>:: }

×