Está en la página 1de 18

Clase 14: Gramticas libres de contexto

M. en C. Edgardo Adrin Franco Martnez


http://computacion.cs.cinvestav.mx/~efranco
@efranco_escom

edfrancom@ipn.mx

Gramticas libres de contexto


Propiedades de los lenguajes libres de
contexto
Otros lenguajes libres de contexto
BNF (Backus-Naur Form)

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Contenido

Ejemplo

rbol de derivacin
2

Los lenguajes libres del contexto son aquellos que


pueden ser reconocidos por un autmata de pila
determinstico o no determinstico.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Las gramticas de tipo 2 o gramticas


independientes del contexto, son las que generan
los lenguajes libres o independientes del contexto.

Son tiles para describir bloques anidados en


lenguajes de programacin ya que describen su
sintaxis.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Una gramtica libre de contexto (GLC), describe un


lenguaje libre de contexto.

Son llamadas as porque el elemento no terminal


del lado derecho se puede sustituir sin importar el
contexto en que este.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Su caracterstica es que piden que solamente exista


un no terminal del lado izquierdo de la
produccin.

Esta gramtica genera el lenguaje no regular


   :   0

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Una simple gramtica libre de contexto es


S aSb |

S x | y | z | S + S | S - S | S *S | S/S | (S)

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Gramtica libre de contexto para expresiones


enteras algebraicas sintcticamente correctas sobre
las variables x, y y z:

cadena (x + y) *x - z *y / (x + x) valida

T genera todas las cadenas con la misma cantidad de


letras a que b, U genera todas las cadenas con ms
letras a, y V todas las cadenas con ms letras b.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Lenguaje consistente en todas las cadenas que se


pueden formar con las letras a y b, habiendo un
nmero diferente de una que de otra, sera:
SU|V
U TaU | TaT
V TbV | TbT
T aTbT | bTaT |

 

 :   0,   0
S aSc | B
B bBc |

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Gramtica libre de contexto para el lenguaje

P:
EE+T|T
TT*F|F
F(E)|a

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

La gramtica G = ({E,T,F}, {a,+,*,(,)}, S, P)

10

11

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

Las gramticas libres del contexto se


escriben, frecuentemente, utilizando una
notacin conocida como BNF (BackusNaur Form).
BNF es la tcnica ms comn para definir la
sintaxis de los lenguajes de programacin.

12

La unin y concatenacin de dos lenguajes libres de


contexto es tambin libre de contexto. La
interseccin no tiene por que serlo.
Los lenguajes regulares son libres de contexto
porque pueden ser descritos mediante una
gramtica de libre contexto.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

El inverso de un lenguaje libre de contexto es


tambin libre de contexto, pero el complemento no
tiene por que serlo.

13

Para demostrar que un lenguaje dado no es libre de


contexto, se puede emplear el Lema del bombeo
para lenguajes libres de contexto.

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

La interseccin de un lenguaje libre de contexto y un


lenguaje regular es siempre libre de contexto.

El problema de determinar si una gramtica sensible


al contexto describe un lenguaje libre del contexto
es indecidible.

14

<cadena_par>::=<cadena_par><parntesis>|<parntesis>

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

La siguiente es una definicin BNF del lenguaje que


consiste de cadenas de parntesis anidados:

<parntesis> ::= (<cadena_par> ) |( )


Por ejemplo las cadenas ( ) ( ( ) ) y ( ) ( ) ( ) son cadenas
vlidas. En cambio las cadenas ( () y ( ) ) ) no pertenecen al
lenguaje.
15

Los no terminales se escriben entre parntesis angulares


<>
Los terminales se representan con cadenas de caracteres
sin parntesis angulares
El lado izquierdo de cada regla debe tener nicamente un
no terminal (ya que es una gramtica libre del contexto)
El smbolo ::=, que se lee se define como o se reescribe
como, se utiliza en lugar de
Varias producciones del tipo

<A> ::= <B1>


<A> ::= <B2> .. .
<A> ::= <Bn>
Se pueden escribir como <A> ::= <B1> | <B2> | ...| <Bn>

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

En esta notacin se deben seguir las


siguientes convenciones:

16

<sent_asig> ::= <var> := <expresion>


<expresion> ::= <expresion> + <termino>| <expresion> - <termino> |<termino>
<termino> ::= <termino> * <factor>|<termino> / <factor>|<factor>
<factor> ::= ( <expresion> )|<var> | <num>
<var> ::= A|B|C|D|... |Z
<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

La siguiente definicin BNF describe la sintaxis


(simplificada) de una sentencia de asignacin de un
lenguaje tipo Pascal:

17

A := A + B

Teora computacional
Clase 14: Gramticas libres de contexto
Prof. Edgardo Adrin Franco Martnez

<sent_asig> ::= <var> := <expresion>


<expresion> ::= <expresion> + <termino>| <expresion> - <termino> |<termino>
<termino> ::= <termino> * <factor>|<termino> / <factor>|<factor>
<factor> ::= ( <expresion> )|<var> | <num>
<var> ::= A|B|C|D|... |Z
<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

18

También podría gustarte