Gramáticas Libres del Contexto

Evander Flores (evanderex@gmail.com)

1

Contenidos
Objetivos Alcance Tema de la Presentación Resumen Preguntas

2

Objetivos
 Identificar que es un Lenguaje Libre de Contexto  Definir las características de una Gramática Libre de

Contexto.  Construir Gramáticas Libres de Contexto utilizando la Notación BNF

3

Alcances
 Lenguajes Libres de contexto  Gramáticas Libres de contexto
 Diseño de Gramáticas libres de contexto  Notación BNF  Derivación y árboles de derivación

 Recursividad por la izquierda y por la derecha
 Como eliminar la recursividad por la izquierda

4

Lenguaje libre del Contexto
Definición y Propiedades

5

Lenguaje Libre del Contexto
 La mayoría lenguajes de programación, son lenguajes libres

de contexto y están definidos por medio de gramáticas 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 autómatas de pila.  Esta definido dentro de la jerarquía de Chomsky en el Tipo 2.

6

Jerarquía

G3 ⊂ G2 ⊂ G1 ⊂ G0

Lenguajes recursivamente Enumerables

Lenguajes sensibles al contexto
Lenguajes libres de contexto
Lenguajes Regulares
7

Gramáticas libres de Contexto
Definición, Características, Notación BNF, Recursividad

9

Gramáticas Libres de Contexto
 Es una gramática formal en la que cada regla de producción

es de la forma:

N→w Donde N es un símbolo no terminal y w es una cadena de terminales y/o no terminales. El término 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 gramática libre de contexto que lo genera.
10

Definición de la Gramática
Es una cuádrupla G = (N,T,P,S) donde:  N es un alfabeto de símbolos no terminales (variables).  T es un alfabeto de símbolos terminales (constantes). Pueden ser cadenas de lenguaje.  S Є N es el símbolo inicial o axioma de la gramática.  P es el conjunto de reglas de producción, P  N  (T U N)*

13

Producción
 Donde cualquier símbolo No Terminal del lado derecho de la

producción puede ser remplazado por cualquier definición de ese mismo terminal del lado derecho. Ejemplo:

S→E E→E+E E → num

14

Notación BNF
 Es una meta sintaxis usada para expresar gramáticas libres de

contexto. Es decir, una manera formal de describir lenguajes formales.  Proviene de la definición Backus-Naur Form.  Es un sistema de reglas de derivación que se utiliza para especificar por medio de gramáticas los lenguajes de programación.

15

Notación BNF
<símbolo> ::= <expresión de símbolos>  El lado izquierdo es un no terminal  Y el lado derecho se define como una expresión de símbolos Terminales y No terminales. Que representa al conjunto de símbolos por los cuales se puede substituir el símbolo 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 Gramática Libre del contexto que reconoce operaciones de suma y multiplicación con números enteros, como {5, 52+3, (1+3)*4 }
E→E+E |E * E |E |(E) |Num Num → Num Dígito |Dígito Dígito → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

 Donde E es una expresión Numérica

 Num es un número
17

 Digito es cualquier entero de 0 a 9

Ejemplo
 La misma Gramática se presenta en notación BNF

<E> ::= <E> “+” <E> |<E> “*” <E> |<E> |”(“<E>”)” |<Num> <Num > ::= <Num> <Dígito> |<Dígito> Dígito → “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

18

Ejemplo
Un ejemplo de una Gramática Libre del Contexto en notación BNF, que reconoce números telefónicos, como {(512) 45342421, 23422234}
<E> ::= <E> | “(“ <E> “)” <E> | <Num> <Num> ::= <Num> <Dígito> | <Dígito>

<Dígito> ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

 Donde E es una expresión Numérica  Num es un número  Digito es un entero del 0 al 9
19

La Derivación
 El proceso de derivación de una gramática, nos permite

reconocer una cadena de entrada a través de la gramática.  Puede darse la derivación por la izquierda o la derecha, dependiendo del símbolo que se derive.

20

Derivación
Por ejemplo, para reconocer la cadena aabbb. A partir de la siguiente Gramatica S → AB |A A → aAa | ε B → Bb |b

21

Derivación
Derivación por la Izquierda S ⇒ AB ⇒ aAaB ⇒ aaB ⇒ aaBb ⇒ aaBbb ⇒ aabbb

Derivación por la Derecha S ⇒ AB ⇒ ABb ⇒ ABbb ⇒ Abbb ⇒ aAabbb ⇒ aabbb

22

Árbol de Derivación
Puede visualizarse en árbol de derivación, donde se reconoció la cadena aabbb.
S
A B

a

A
ε

a
B b

B
b

b

23

Recursividad
 La recursividad se define en una producción cuando el

símbolo de la izquierda se encuentra también a la derecha de la producción.  Existe recursividad por la izquierda y por la derecha, dependiendo de la ubicación del símbolo, ya sea al principio o final de la producción.

24

Recursividad
 Por la Derecha

<ID> ::= <LETRA> <ID>
 Por la izquierda

<Num> ::= <Num> <Dígito> | <Dígito>

25

Recursividad
 También se puede encontrar producciones que tienen ambas

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

 Una gramática 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

A→Aα |β 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
E→E+T |T

A→Aα |β

T→T*F |F
F → (E) | id
28

Ejemplo
 Analizando las partes de la gramatica identificamos sus partes

E→E+T α |T β T→T*F α |F β
F → (E) | id
29

A→Aα |β

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’

E→E+T |T

E’ → +T E’ |ε
T → F T’ T’ → * F T’ |ε

T→T*F |F
F → (E) | id
31

F → (E) | id

Sign up to vote on this title
UsefulNot useful