7. Gramatica Independientes Del Contexto

23
GRAMATICA INDEPENDIENTES DEL CONTEXTO CONTEXTO GRAMATICA LIMPIA – BIEN FORMADA

description

Gramaticas regulares independientes del contexto

Transcript of 7. Gramatica Independientes Del Contexto

GRAMATICA INDEPENDIENTES DEL CONTEXTOCONTEXTO

GRAMATICA LIMPIA –

BIEN FORMADA

Gramática Independientes del Contexto

• Este tipo de gramáticas y autómatas son importantes desde el punto de vista de la informática:informática:▫ permite la descripción de la mayoría de los

lenguajes de programación,

▫ permiten la construcción de los compiladores.

Gramática Independientes del Contextos

• Vamos a estudiar técnicas para preparar unagramática a efectos de ser tratada eficientementepor un autómata que reconozca el lenguajepor un autómata que reconozca el lenguajegenerado por la gramática▫ Gramática Limpia

▫ Gramática Bien Formada

▫ Formas Normal de Chomsky

Gramática Limpia

Dada una gramática de tipo 2 se definen:

• Reglas innecesarias: son las que tienen la forma A::=A (A N). Estas reglas se deben forma A::=A (A N). Estas reglas se deben eliminar de las gramáticas ya que no generan derivaciones útiles.

• Reglas inaccesibles: aquellos símbolos no terminales A N que no pueden ser alcanzados desde el axioma de la gramática, S. Es decir no hay derivación S →xAy

Gramática Limpia

Ejemplo: Dada la siguiente gramática

G1=({0,1,2,3}, {A,B,C,D,E}, A, P)

P={(A::=D0), (A::=E10), (A::=λ), (B::=1C3), (C::=C), P={(A::=D0), (A::=E10), (A::=λ), (B::=1C3), (C::=C), (D::= 1A), (E::=1E)}

Los Los simbolossimbolos B y C son inaccesibles, y la regla B y C son inaccesibles, y la regla (C::=C) es innecesaria.(C::=C) es innecesaria.

G’1=({0,1,2,3}, {A,D,E}, A, P)

P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}

Gramática Limpia

• Símbolos Superfluos: dependiendo del conjunto al que pertenecen tenemos:▫ Símbolo no terminal superfluo, A: es aquel del que ▫ Símbolo no terminal superfluo, A: es aquel del que

solo se pueden derivar palabras en las que existe al menos un símbolo no terminal, o, lo que es lo mismo, A→* x (xT).

▫ Símbolo terminal superfluo, a: es aquel que no puede ser alcanzado por derivación desde el axioma; es decir, no existe ninguna producción (A::=a P)

Gramática Limpia

• Procedimiento de eliminación de los símbolos superfluos de una gramática.

1. Se marcan los símbolos no terminales que estén en laparte izquierda de una producción y en cuya parteparte izquierda de una producción y en cuya partederecha solo aparezcan símbolos terminales o λ.

2. Sucesivamente, se van marcando los símbolos noterminales que aparezcan en la parte izquierda deproducciones en las que solo haya combinaciones desímbolos terminales λ, o símbolos no terminalesmarcados.

3. Por ultimo se eliminan aquellos símbolos terminalesque no aparezcan en la parte derecha de ninguna regla

Gramática Limpia

Ejemplo: en la siguiente gramática

G’1=({0,1,2,3}, {A,D,E}, A, P)

P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.

A::=D0

A::=E10

A::=λ

D::= 1A

E::=1E

Gramática Limpia

Ejemplo: en la siguiente gramática

G’1=({0,1,2,3}, {A,D,E}, A, P)

P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.

A::=D0

A::=E10

A::=λ

D::= 1A

E::=1E

Gramática Limpia

Ejemplo: en la siguiente gramática

G’1=({0,1,2,3}, {A,D,E}, A, P)

P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.P={(A::=D0), (A::=E10), (A::=λ), (D::= 1A), (E::=1E)}.

A::=D0

A::=E10

A::=λ

D::= 1A

E::=1E

Los únicos símbolos noterminales no superfluosson A y D

Se elimina el resto (solo E)

Gramática Limpia

Se eliminan aquellos símbolos terminales que noaparezcan en la parte derecha de ninguna regla

Se dice que una gramática esta limpia si no tiene regla

G’’1=({0,1}, {A,D}, A, P)

P:

A::=D0

A::=λ

D::= 1A

Se dice que una gramática esta limpia si no tiene regla innecesarias, símbolos inaccesibles, ni superfluos

La gramática G’’1 esta limpia La gramática G’’1 esta limpia

Gramática Bien Formada

• Reglas no generativas: una regla es no generativa cuando A::= λ , A S. Para eliminar dichas reglas.dichas reglas.

G2=({0}, {A,B,C}, A,P)

P={(A::=C0B), (A::= λ), (B::=BC), (B::= λ), (C::=0B), (C::= λ)}

Gramática Bien Formada

G2=({0}, {A,B,C}, A,P)P={(A::=C0B), (A::= λ), (B::=BC), (B::= λ), (C::=0B), (C::= λ)}(C::= λ)}Eliminación de la regla B::= λP={(A::=C0B), (A::=C0) (A::= λ), (B::=BC), (B::=C), (C::=0B), (C::=0), (C::= λ)}Eliminación de la regla C::= λP= {(A::=C0B), (A::=0B), (A::=C0), A::=0), (A::= λ), (B::=BC), (B::=B), (B::=C), (B::= λ), (C::=0B), (C::=0)}En este paso se genero B::=B, B::= λ

Gramática Bien Formada

Eliminación de la regla B::= λ

P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= λ), (B::=BC), (B::=C), (C::=0B), (C::=0)}(B::=BC), (B::=C), (C::=0B), (C::=0)}

Se elimina B::=B por ser regla innecesaria

La gramática quedaría como:

G’2=({0}, {A,B,C}, A,P)

P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= λ), (B::=BC), (B::=C), (C::=0B), (C::=0)}

Gramatica Bien Formada

• Reglas de redenominación: una regla es de redenominación cuando A::=B con A, B N. Para eliminarlas, se borra esa regla y se genera Para eliminarlas, se borra esa regla y se genera una nueva producción A::=x por cada regla B::=x, x*

Ejemplo: G’2=({0}, {A,B,C}, A,P)

P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= λ), (B::=BC), (B::=C), (C::=0B), (C::=0)}

Gramática Bien Formada

Se elimina la regla y se reemplaza C por las partes derechas de sus producciones.G’’2=({0}, {A,B,C}, A,P) P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= λ), P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= λ), (B::=BC), (B::=0B), (B::=0), (C::=0B), (C::=0)}

•• Gramática Bien Formada: una gramática está Gramática Bien Formada: una gramática está bien formada si está limpia, no tiene reglas no bien formada si está limpia, no tiene reglas no generativas y no tiene reglas de redenominacióngenerativas y no tiene reglas de redenominación

La gramática G’’2 está bien formadaLa gramática G’’2 está bien formada

Forma Normal de Chomsky

• Las gramaticas de tipo 2, se pueden transformar en gramáticas equivalentes expresadas en la Forma Normal de Chomsky.Forma Normal de Chomsky.

• En esta forma de representar las gramáticas, las producciones pueden tener las siguiente formas:

P={(A::=BC) ó (S::=P={(A::=BC) ó (S::=λλ)ó (A::=a) | A,B,C )ó (A::=a) | A,B,C NN, a , a TT}}

FNC

• Los árboles de derivación, salvo en las derivaciones correspondientes a las hojas, son binarios.

• Se debe partir de una gramatica limpia.• Se debe partir de una gramatica limpia.

• El algoritmo para transformar una gramatica en su FNC equivalente para cada producción P de la gramatica, reasigna el nuevo valor del conjunto de producción P’ a lo que le devuelve la función FNC

• Esta funcion trata de convertir todas las producciones que no están el en formato FNC a dicho formato.

FNC• Los casos que se pueden presentar son los

siguientes:▫ La producción ya está en FNC. No se hace nada.▫ La parte derecha de producción comienza por una

símbolo terminal a. Lo que se hace es buscar si existeuna producción de un simbolo no terminal que sólouna producción de un simbolo no terminal que sólovaya al símbolo a (C::=a); es decir, que no haya másproducciones en las que aparezca en la parte izquierdade la producción. En ese caso, se puede sustituir en laproducción inicial el simbolo a por el C y seguirtratando el resto de la producción. Si no se encuentraningún C que cumpla esto, se crea un nuevo simboloN, se crea una nueva regla N::a, se sustituye a por N enla producción original.

FNC▫ En la parte derecha de la producción comienza por

un símbolo no terminal B, pero tiene mas de dossímbolos (supóngase que es By). Por medio de laFNC-auxiliar, puede haber dos casos: yT óyN. En el primer caso se sustituye y por unyN. En el primer caso se sustituye y por unsímbolo no terminal que solo vaya a y (existente onuevo) en esa producción. En el segundo caso, secrea un nuevo símbolo ni terminal N’, se crea unanueva regla que tenga en la parte izquierda N’ y enla parte derecha a y, se sustituye a y por N’ en laproducción original y se vuelve a tratar la nuevaregla formada N::=y.

FNCEjemplo:

G3=({0,1,2}, {A,B,C}, A, P)P={(A::=CB2), (A::=1B), (A::=λ), (B::=BC), (B::=1), (C::=2)}•A::=CB2 no está en FNC

B2 T, por lo que se crea un nuevo no terminal D, se crea B2 T, por lo que se crea un nuevo no terminal D, se crea D::=B2, se borra la regla A::=CB2, y se crea A::=CD ya esta en FNC.D::=B2, como existe C::=2, se debe borrar D::=B2 y se añade la regla D::=BC

• A::=1B no esta en FNC, y no hay un simbolo no terminal que sólo vaya a 1, se crea uno nuevo E::=1, se elimina la regla A::=1B y añade la regla A::=EB

• A::=λ , ya esta en FNC• B::=BC, ya está en FNC• B::=1, ya esta en FNC• C::=2, ya está en FNC

FNC

La gramática final quedaría:

G3=({0,1,2}, {A,B,C}, A, P)

P={(A::=CD), (A::=EB), (A::=λ), (B::=BC), P={(A::=CD), (A::=EB), (A::=λ), (B::=BC), (B::=1), (C::=2), (D::=BC), (E::=1)}

Preguntas

1. Defina Gramática Limpia2. Cuando es una regla innecesaria, de un ejemplo3. Cuando se dice que es una regla inaccesible3. Cuando se dice que es una regla inaccesible4. Procedimiento para encontrar un símbolo

superfluo No Terminal5. Defina Gramática Bien Formada6. Cuando es una regla no generativa, de un ejemplo7. Como se resuelve una regla de redenominación, de

un ejemplo.8. Cuales son las producción de una Gramática en

FNC.