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
Alcances
Lenguajes Libres de contexto Gramticas Libres de contexto
Diseo de Gramticas libres de contexto Notacin BNF Derivacin y rboles de derivacin
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
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
Num es un nmero
17
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
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
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
25
Recursividad
Tambin se puede encontrar producciones que tienen ambas
clases de recursividad.
<E> ::= <E> + <E>
producciones es recursiva.
26
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
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 |
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