Vous êtes sur la page 1sur 28

Gramticas Libres del Contexto

Evander Flores (evanderex@gmail.com)

Contenidos
Objetivos Alcance Tema de la Presentacin Resumen Preguntas

Objetivos
Identificar que es un Lenguaje Libre de Contexto Definir las caractersticas de una Gramtica Libre de

Contexto. Construir Gramticas Libres de Contexto utilizando la Notacin BNF

Alcances
Lenguajes Libres de contexto Gramticas Libres de contexto
Diseo de Gramticas libres de contexto Notacin BNF Derivacin y rboles de derivacin

Recursividad por la izquierda y por la derecha


Como eliminar la recursividad por la izquierda

Lenguaje libre del Contexto


Definicin y Propiedades

Lenguaje Libre del Contexto


La mayora lenguajes de programacin, son lenguajes libres

de contexto y estn definidos por medio de gramticas libres de contexto. Contexto se refiere al entorno en que se encuentra, como influye el entorno en el significado de cada parte. Puede ser reconocido por autmatas de pila. Esta definido dentro de la jerarqua de Chomsky en el Tipo 2.

Jerarqua

G3 G2 G1 G0

Lenguajes recursivamente Enumerables

Lenguajes sensibles al contexto


Lenguajes libres de contexto
Lenguajes Regulares
7

Gramticas libres de Contexto


Definicin, Caractersticas, Notacin BNF, Recursividad

Gramticas Libres de Contexto


Es una gramtica formal en la que cada regla de produccin

es de la forma:

Nw Donde N es un smbolo no terminal y w es una cadena de terminales y/o no terminales. El trmino libre de contexto se refiere al hecho de que el no terminal N puede siempre ser sustituido por w sin tener en cuenta el contexto en el que ocurra. Un lenguaje formal es libre de contexto si hay una gramtica libre de contexto que lo genera.
10

Definicin de la Gramtica
Es una cudrupla G = (N,T,P,S) donde: N es un alfabeto de smbolos no terminales (variables). T es un alfabeto de smbolos terminales (constantes). Pueden ser cadenas de lenguaje. S N es el smbolo inicial o axioma de la gramtica. P es el conjunto de reglas de produccin, P N (T U N)*

13

Produccin
Donde cualquier smbolo No Terminal del lado derecho de la

produccin puede ser remplazado por cualquier definicin de ese mismo terminal del lado derecho. Ejemplo:

SE EE+E E num

14

Notacin BNF
Es una meta sintaxis usada para expresar gramticas libres de

contexto. Es decir, una manera formal de describir lenguajes formales. Proviene de la definicin Backus-Naur Form. Es un sistema de reglas de derivacin que se utiliza para especificar por medio de gramticas los lenguajes de programacin.

15

Notacin BNF
<smbolo> ::= <expresin de smbolos> El lado izquierdo es un no terminal Y el lado derecho se define como una expresin de smbolos Terminales y No terminales. Que representa al conjunto de smbolos por los cuales se puede substituir el smbolo de la izquierda. Se utiliza la barra | para denotar opciones a seleccionar. Un simbolo terminal comunmente se denota entre comillas terminal

16

Ejemplo
Un ejemplo de una Gramtica Libre del contexto que reconoce operaciones de suma y multiplicacin con nmeros enteros, como {5, 52+3, (1+3)*4 }
EE+E |E * E |E |(E) |Num Num Num Dgito |Dgito Dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Donde E es una expresin Numrica

Num es un nmero
17

Digito es cualquier entero de 0 a 9

Ejemplo
La misma Gramtica se presenta en notacin BNF

<E> ::= <E> + <E> |<E> * <E> |<E> |(<E>) |<Num> <Num > ::= <Num> <Dgito> |<Dgito> Dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

18

Ejemplo
Un ejemplo de una Gramtica Libre del Contexto en notacin BNF, que reconoce nmeros telefnicos, como {(512) 45342421, 23422234}
<E> ::= <E> | ( <E> ) <E> | <Num> <Num> ::= <Num> <Dgito> | <Dgito>

<Dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Donde E es una expresin Numrica Num es un nmero Digito es un entero del 0 al 9


19

La Derivacin
El proceso de derivacin de una gramtica, nos permite

reconocer una cadena de entrada a travs de la gramtica. Puede darse la derivacin por la izquierda o la derecha, dependiendo del smbolo que se derive.

20

Derivacin
Por ejemplo, para reconocer la cadena aabbb. A partir de la siguiente Gramatica S AB |A A aAa | B Bb |b

21

Derivacin
Derivacin por la Izquierda S AB aAaB aaB aaBb aaBbb aabbb

Derivacin por la Derecha S AB ABb ABbb Abbb aAabbb aabbb

22

rbol de Derivacin
Puede visualizarse en rbol de derivacin, donde se reconoci la cadena aabbb.
S
A B

a
B b

B
b

23

Recursividad
La recursividad se define en una produccin cuando el

smbolo de la izquierda se encuentra tambin a la derecha de la produccin. Existe recursividad por la izquierda y por la derecha, dependiendo de la ubicacin del smbolo, ya sea al principio o final de la produccin.

24

Recursividad
Por la Derecha

<ID> ::= <LETRA> <ID>


Por la izquierda

<Num> ::= <Num> <Dgito> | <Dgito>

25

Recursividad
Tambin se puede encontrar producciones que tienen ambas

clases de recursividad.
<E> ::= <E> + <E>

Una gramtica se considera recursiva si al menos una de sus

producciones es recursiva.

26

Eliminar recursividad por la Izquierda


Es posible modificar una gramatica para eliminar la recursividad

por la izquierda Consideramos la siguiente forma

AA | Como es de notar existe recursividad por la izquierda, para eliminarla se aplica la siguiente formula A A A A |
27

Ejemplo
Dada la siguiente gramatica, se necesita eliminar la

recursividad por la izquierda


EE+T |T

AA |

TT*F |F
F (E) | id
28

Ejemplo
Analizando las partes de la gramatica identificamos sus partes

EE+T |T TT*F |F
F (E) | id
29

AA |

Ejemplo
Aplicamos la formula
A A A A |

Luego de haber identificado sus partes y procedemos a eliminar la recursividad

30

Ejemplo
Gramatica sin recursividad

E T E

EE+T |T

E +T E |
T F T T * F T |

TT*F |F
F (E) | id
31

F (E) | id

Vous aimerez peut-être aussi