Lección 3: Lenguajes independientes del contexto

32
1 Lección 3: Lenguajes independientes del contexto Gramáticas independientes de contexto (GIC) Conceptos básicos Ambigüedad Autómatas con pila (AP) Definición de autómata con pila Determinismo y no determinismo Formas normales Simplificación Forma normal de Greibach Equivalencia entre APs y GICs Propiedades y aplicaciones

Transcript of Lección 3: Lenguajes independientes del contexto

Page 1: Lección 3: Lenguajes independientes del contexto

1

Lección 3: Lenguajes independientes del contexto

Gramáticas independientes de contexto (GIC)

Conceptos básicos Ambigüedad

Autómatas con pila (AP)

Definición de autómata con pilaDeterminismo y no determinismo

Formas normales

SimplificaciónForma normal de Greibach

Equivalencia entre APs y GICs

Propiedades y aplicaciones

Page 2: Lección 3: Lenguajes independientes del contexto

Lección 3: GIC 2

Gramáticas independientes del contexto

• Elementos:

• Elementos distinguidos S ∈ N símbolo inicial

• Definición formal:G = (N, Σ, S, P) con α → β ∈ P, α ∈ N , β ∈ (N ∪ Σ )*

• Derivación: δ1, δ2, σ1, σ2, β ∈ (N ∪ Σ )* Α ∈ Nδ1 ⇒ δ2 si y solo si δ1 = σ1Ασ2, δ2 = σ1βσ2 y Α → β ∈ P

• Lenguaje generado: L(G) = { w∈Σ*: S ⇒ w }*

Com ponentes Com ponentes form ales

Categorias N conjunto de no term inales

Fuente de entrada Σ alfabeto de term inales

Page 3: Lección 3: Lenguajes independientes del contexto

Lección 3: GIC 3

Derivaciones y Árboles• Derivación a la izquierda:

δ1, δ2, σ, β ∈ (N ∪ Σ )* Α ∈ N, w ∈ Σ*δ1 ⇒ δ2 si y solo si δ1 = wΑσ, δ2 = wβσ y Α → β ∈ P

• Árbol de derivación o árbol de análisis de G:Es un árbol etiquetado y ordenado tal que- Todo nodo está etiquetado con un símbolo de N ∪ Σ ∪ {ε}- La raíz es el símbolo inicial.- Los nodos internos están etiquetados con símbolos no terminales- Si un nodo está etiquetado con A y sus k hijos están etiquetados

X1X2…Xk leídos de izquierda a derecha entonces la regla A → X1X2…Xk es una regla de la gramática.

- Si un nodo está etiquetado con ε entonces es el único hijo de un nodo.- Si todas las hojas son símbolos terminales ó ε el árbol es completo y la frontera es una palabra de L(G).

Page 4: Lección 3: Lenguajes independientes del contexto

Lección 3: GIC 4

Ambigüedad

• G es ambigua si existe x ∈L(G) con al menos dos árboles de derivacióndiferentes.

• G es inherentemente ambigua si no existe una gramática no ambiguaequivalente a G.

Page 5: Lección 3: Lenguajes independientes del contexto

Lección 3: Autómatas con pila 5

Autómatas con pila (AP)- Elementos:

- Elementos distinguidos para la inicialización y aceptación:q0 ∈Q: estado inicialF ⊆ Q: conjunto de estados finalespila vacía

- Ciclo-máquina

Componentes físicos Componentes lógicos

Unidad de Proceso Q conjunto de estados

Fuente de entrada Σ alfabeto de entrada

Pila Γ alfabeto de pila

Consultas: • estado actual • símbolo de entrada • cima de la pila

Acciones: • avance en la entrada • cambio de estado

• modificación de la pila:desempilar un elemento ó desempilar un elemento y empilar uno o más

Page 6: Lección 3: Lenguajes independientes del contexto

Lección 3: Autómatas con pila 6

Autómatas con pila (AP)- Definición formal:

M = (Q, Σ, Γ, δ, q0, F) con δ : Q × Σ × Γ ∪ {⊥} - → ℘(Q × Γ*)

-Configuración:(q, w, α) ∈ Q × Σ* × Γ*

-Movimiento:

(p, sw, Aα) ├── (q, w, βα) si y solo si (q, β) ∈ δ(p, s, A)

(p, sw, ε) ├── (q, w, β) si y solo si (q, β) ∈ δ(p, s, ⊥)

- Lenguaje aceptado:

L(M) = { w∈Σ*: ∃ p∈F (q0, w, ε) ├── (p, ε, ε) }*

Page 7: Lección 3: Lenguajes independientes del contexto

Lección 3: Autómatas con pila 7

Determinismo y no determinismo- Diseñar un autómata con pila que reconozca el siguiente lenguaje:

L = { wcwR: w ∈ {a,b}* }

- Diseñar un autómata con pila que reconozca el siguiente lenguaje:

L = { wwR: w ∈ {a,b}* }

En general, a diferencia de lo que pasa entre L(AFD) y L(AFND), los lenguajes reconocidos por autómatas con pila deterministas (APD) no coinciden con los lenguajes reconocidos por autómatas con pila NO deterministas (AP). Es decir,

L(AFD) = L(AFND) pero L(APD) ≠L(AP)

Page 8: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 8

Formas Normales

Definiciones:

• Símbolo útil, X: S αXβ w

• Símbolo accesible, X: S αXβ

• Símbolo fecundo, X: X w

⇒*

⇒*

⇒*

⇒*

Page 9: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 9

Eliminar símbolos inútiles (I)

entrada:G = (N, ∑, P, S) gramática independiente de contexto

salida:

G2 = (N2, ∑, P2, S) equivalente a G sin símbolos inútiles

proceso: primer paso:-- Objetivo: eliminar de G los no terminales estériles

-- Método: buscar inductivamente,los símbolos fecundos N1

-- Resultado: G1 = (N1, ∑, P1, S)

• Si A → w ∈ P con w∈Σ* entonces A∈N1

• Si A → α ∈ P con α ∈(N1 ∪Σ)*, entonces A∈N1P1 = { A → α ∈ P: α∈(Σ ∪ N1)*}

Page 10: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 10

Eliminar símbolos inútiles (II)

segundo paso:-- Objetivo: eliminar los símbolos no accesibles-- Método: buscar inductivamente, los símbolos accesibles N2-- Resultado: G2 = (N2, ∑, P2, S)

• S ∈ N2 • Si A ∈N2, A → αBβ∈P1 y B∈N1 entonces B∈N2P2 = { A → α ∈P1: A∈N2 }

IMPORTANTE: El orden de los pasos no es conmutativo.

Page 11: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 11

Eliminar producciones nulas (I)entrada:

G = (N, Σ, P, S) independiente de contexto con S no recursivosalida:

G2 = (N2, Σ, P2, S) equivalente a G y tal que si A → ε ∈ P2 entonces A es el símbolo inicial de la gramática.

proceso: primer paso: -- Objetivo: construcción del conjunto de símbolos anulables

AN = {A ∈ N: A ε ∈ P}

-- Método: aplicar la definición inductiva de símbolo anulable

• Si A → ε ∈ P entonces A ∈ AN• Si A → α ∈ P con α ∈ AN*, entonces A ∈ AN

⇒*

Page 12: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 12

Eliminar producciones nulas (II)segundo paso:-- Eliminar las producciones nulas y modificar P

P1 := P - {A → ε: A∈N}; P2:= ∅;for regla in P1 loop

if regla = A → X1X2…Xn thenP2 := P2 ∪ {A → Y1 Y2…Yn |

Yi = Xi si Xi no es anulableYi = Xi ó ε si Xi es anulableYi no es ε para todo i};

end if;end loop;if S ∈ AN then P2 := P2 ∪ { S → ε } end if;

Page 13: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 13

Eliminar producciones unitarias (I)entrada:

G = (N, Σ, P, S) independiente de contexto sin producciones nulas salida:

G1 = (N, Σ, P1, S) equivalente sin producciones unitarias

proceso: primer paso:-- Objetivo: construir para cada A ∈ N el conjunto NA = {B ∈ N : A B}-- Método: aplicar la definición inductiva

• A ∈ NA• Si B ∈ NA y B → C ∈ P entonces C ∈ NA

⇒*

Page 14: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 14

Eliminar producciones unitarias (II)segundo paso:-- Construir P1 eliminando las producciones unitarias

P1 := Ø;for A in N loop

for B in NA loopfor regla in P loop

if regla = B → α and α ∉ N thenP1 := P1 ∪ {A → α };

end if;end loop;

end loop;end loop;

Page 15: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 15

Recursividad

Producción o regla recursiva: A → αAβRecursividad no inmediata A αAβProducción o regla recursiva a la izquierda: A → AβRecursividad a la izquierda A Aβ

Eliminación de la recursividad inmediata a la izquierdade un no terminal A

Sean todas las reglas con A en el lado izquierdo (A-reglas):A → Aα1 |...| Aαn| β1|...|βm

donde las reglas A → βi no son recursivas a la izquierda.

⇒*

⇒*

Page 16: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 16

Recursividad

Las cambiamos porA → β1 A ' |...| βm A '|β1|...|βm

A '→ α1 A '|...|αn A '|α1|...|αn

donde A' es un nuevo no terminal.

La nueva gramática es equivalente y sin recursión inmediata a la izquierda de A.

A (β1∪...∪βm )(α1 ∪ ... ∪ αn)∗ ⇒*

Page 17: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 17

Otras transformaciones

Reemplazamiento

Sea A → αBβ ∈ P una regla tal que A, B ∈N

y sean B → β1 |...| βn todas las B-reglas

si eliminamos la regla A → αBβ y añadimos las reglas

A → αβ1β|...|αβnβ

la nueva gramática es equivalente

Page 18: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 18

Otras transformaciones

Introducción de nuevos símbolos no terminales

Sea A → αβγ ∈ P una regla tal que A ∈N, α,β,γ ∈ (N∪ Σ) ∗

y Z un nuevo no terminal

si eliminamos la regla A → αβγ y añadimos las reglas

Z → β y A → αZγ

la nueva gramática es equivalente

Page 19: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 19

Forma normal de Greibach (I) entrada:

G independiente de contexto simplificada salida:

G3 = (N3, Σ, P3, S) equivalente en FNG

preparación: Numeración de los no terminales y de las reglas.Elegimos una ordenación de N de la forma N = {A1, A2, ..., An} y ordenamos las reglas según dicho orden.A cada regla le asignamos el grupo dependiendo del primer símbolo del lado derecho de la regla

1.- si Ai → aβ con a∈Σ 2.- si Ai → Ajβ con i<j3.- si Ai → Aiβ 4.- si Ai → Ajβ con i>j

Page 20: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 20

Forma normal de Greibach (II) Primer paso: eliminar la recursión a la izda en G = (N, Σ, P, S)

entrada: G simplificadasalida: G1 = (N1, Σ, P1, S) equivalente sin recursión a la izquierda

proceso:-- Objetivo: adecuar las reglas de la gramática de forma que "respeten"

el orden establecido en N. Para ello hay que eliminar las reglas de la forma Ai → Ajα con j≤i. Es decir, eliminar las reglas de los tipos 3 y 4.

-- Método: hacer reemplazamientos siguiendo el orden de N (para eliminar las reglas en las que j<i) y cambiar la recursión inmediata a la izquierda por recursión a la derecha (para eliminar las reglas en las que j = i).

Page 21: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 21

Forma normal de Greibach (III) Primer paso: reducción de los grupos 4 y 3 al 2 y 1

for i in 1..n loopfor j in 1..i-1 loop --eliminar reglas del grupo 4 si hay

while hay regla Ai→ Ajα loopeliminar Ai → Ajα por reemplazamiento

end loop;end loop;

--eliminar reglas del grupo 3 si hayif hay reglas del grupo 3 para Ai then

eliminar recursión inmediata a la izquierda de Aiend if;

end loop;

Page 22: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 22

Forma normal de Greibach (IV) Segundo paso: obtención de G3 en forma normal de Greibach

entrada: G1 simplificada y no recursiva a la izquierdasalida: G3 = (N3, Σ, P3, S) equivalente en FNG

proceso:primera parte:-- Objetivo: poner las reglas en forma Ai → sα con s ∈ Σ. Es decir,

eliminar las reglas del tipo 2.-- Método: aplicar reemplazamientos en orden inverso al de N1.-- Resultado: G2 = (N2, Σ, P2, S)

Page 23: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 23

Forma normal de Greibach (V) primera parte:

N2 := N1;P2 := P1;for i in n-1.. 1 loop

for j in n.. i+1 loop --eliminar reglas del grupo 2 while hay regla Ai → Ajα loop

eliminar Ai → Ajα por reemplazamientoend loop;

end loop;end loop;

Page 24: Lección 3: Lenguajes independientes del contexto

Lección 3: Formas normales 24

Forma normal de Greibach (VI) segunda parte:-- Objetivo: conseguir reglas en FNG-- Método: cambiar terminales que no están en la primera posición de

las partes derechas por nuevos no terminales.-- Resultado: G3 = (N3, Σ, P3, S)-- Utilizamos el conjunto de nuevos no terminales: {Zs : s ∈ Σ}

N3 := N2;for regla in P2 loop

para cada s y cada regla = A → αsβcambiarla por A → αZs y Zs → s;N3 := N3 ∪ { Zs };

end loop;

Page 25: Lección 3: Lenguajes independientes del contexto

Lección 3: APs y GICs 25

Equivalencia entre APs y GICs

PROPOSICIÓN 7:Los lenguajes generados por gramáticas independientes de contexto son lenguajes reconocidos por autómatas con pila. Es decir, L(GIC) ⊆ L(AP)

DEMOSTRACIÓN: Sea G = (N, Σ, P, S) una gramática independiente de contexto en FNG

Construimos M = ({q0, q1}, Σ, N ∪ {⊥}, δ, q0, F) donde δ(q0, a, ⊥) = {(q1, α): S → aα ∈ P}δ(q1, a, A) = {(q1, α): A → aα ∈ P}

El conjunto de estados finales será F = {q0, q1} si S → ε ∈ P y F = {q1} si S → ε ∉ P

Base de la demostración: w∈Σ+, S ⇒wα si y sólo si (q0, w, ε)├── (q1, ε, α)

Page 26: Lección 3: Lenguajes independientes del contexto

Lección 3: APs y GICs 26

Equivalencia entre APs y GICs

Se puede demostrar que los lenguajes reconocidos por autómatas con pila son generados por gramáticas independientes de contexto. Es decir, L(AP) ⊆ L(GIC)

Page 27: Lección 3: Lenguajes independientes del contexto

Lección 3: Propiedades 27

Propiedades de cierre Sean G1 = (N1, Σ, P1, S1) y G2 = (N2, Σ, P2, S2) dos GICs

- L(G1) ∪ L(G2) es independiente de contexto G = (N1∪ N2∪{S}, Σ, P1∪ P2∪{S → S1 |S2}, S)

- L(G1)• L(G2) es independiente de contextoG = (N1∪ N2∪{S}, Σ, P1∪ P2∪{S → S1S2}, S)

- L(G1)* es independiente de contextoG = (N1∪{S}, Σ, P1∪{S → SS1 |ε}, S)

- L(G1) ∩ L(G2) no es necesariamente independiente de contexto.

{ anbjcj: n,j ≥ 0 } ∩ { akbkcp: k,p ≥ 0 }

- L(G1) no es necesariamente independiente de contexto.

Page 28: Lección 3: Lenguajes independientes del contexto

Lección 3: Aplicaciones 28

Aplicaciones Los lenguajes independientes de contexto se utilizan para describir la sintaxis.

Las aplicaciones de los mismos generalmente se basan en el uso de gramáticas.

Es más intuitivo escribir gramáticasEs más sencillo entender las gramáticas

Ejemplos:

1) Analizadores sintácticos

2) Descripción de formatos de documentos mediante las definiciones de tipo de documento, DTD (Document Type Definition), que se usan en la comunidad XML (eXtensible Markup Language) para el intercambio de información en la Web

Page 29: Lección 3: Lenguajes independientes del contexto

Lección 3: Aplicaciones 29

Ejemplo de sintaxis de Ada

sequence_of_statements ::= statement {statement}statement ::= {label} simple_statement | {label} compound_statementsimple_statement ::= null_statement | assignment_statement | exit_statement

| goto_statement | procedure_call_statement| return_statement | entry_call_statement| requeue_statement | delay_statement| abort_statement | raise_statement| code_statement

compound_statement ::= if_statement | case_statement| loop_statement | block_statement| accept_statement | select_statement

if_statement ::= if condition then sequence_of_statements {elsif condition then sequence_of_statements}[else sequence_of_statements]end if;

http://www.acm.org/sigada/

Page 30: Lección 3: Lenguajes independientes del contexto

Lección 3: Aplicaciones 30

Gramática DTD

DTD estandar para publicar en la Web las descripciones de los distintos PCs que venden .

<!DOCTYPE PcSpecs [<!ELEMENT PCS (PC*)>

<!ELEMENT PC (MODELO, PRECIO, PROCESADOR, RAM, DISCO+)><!ELEMENT MODELO (#PCDATA)><!ELEMENT PRECIO (#PCDATA)><!ELEMENT PROCESADOR (FABRICANTE, MODELO, VELOCIDAD)>

<!ELEMENT FABRICANTE (#PCDATA)><!ELEMENT MODELO (#PCDATA)><!ELEMENT VELOCIDAD (#PCDATA)>

<!ELEMENT RAM (#PCDATA)><!ELEMENT DISCO (DISCODURO | CD |DVD)>

<!ELEMENT DISCODURO (FABRICANTE, MODELO, TAMAÑO)><!ELEMENT TAMAÑO (#PCDATA)>

<!ELEMENT CD (VELOCIDAD)><!ELEMENT DVD (VELOCIDAD)>

]>

Page 31: Lección 3: Lenguajes independientes del contexto

Lección 3: Aplicaciones 31

Documento XML Parte de un documento que sigue la estructura de la DTD:

<PCS><PC>

<MODELO>4560</MODELO><PRECIO>1000€</ PRECIO ><PROCESADOR><FABRICANTE>Intel</ FABRICANTE ><MODELO>Pentium</MODELO><VELOCIDAD>800Mhz</ VELOCIDAD ></ PROCESADOR ><RAM>256</RAM><DISCO><DISCODURO><FABRICANTE>Maxtor</FABRICANTE>

<MODELO>Diamond</MODELO><TAMAÑO>30.5Gb</TAMAÑO>

</DISCODURO></DISCO><DISCO><CD><VELOCIDAD>32x</ VELOCIDAD >

</CD></DISCO></PC><PC> .....</PC>

</PCS>

Page 32: Lección 3: Lenguajes independientes del contexto

Lección 3: Aplicaciones 32

GICs y Gramáticas DTD 1) Formato DTD:

<!ELEMENT PROCESADOR (FABRICANTE, MODELO, VELOCIDAD)>

Formato GIC: Procesador → Fabricante Modelo Velocidad

2) Formato DTD:<!ELEMENT DISCO (DISCODURO | CD |DVD)>

Formato GIC: Disco → Discoduro | Cd |Dvd

3) Formato DTD:<!ELEMENT PC

(MODELO, PRECIO, PROCESADOR, RAM, DISCO+)>

Formato GIC: PC → Modelo Precio Procesador Ram DiscosDiscos → Disco | Disco Discos