automatas de pila.pdf 2.pdf

12
1 Tema 3: Lenguajes independientes del contexto Gramáticas independientes de contexto (GIC) Conceptos básicos Ambigüedad Ejemplos de GICs Autómatas con pila (AP) Definición de autómata con pila Determinismo y no determinismo. Ejemplos. Formas normales Simplificación Forma normal de Greibach Equivalencia entre APs y GICs Propiedades y aplicaciones Tema 3: Leng. Indep. del Contexto 2 Gramáticas independientes del contexto Elementos: Elementos distinguidos: SN símbolo inicial Definición formal: G = (N, Σ, S, P) con Α → β ∈P , Α∈N , β∈(N ∪Σ)* Paso de 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 } * Componentes Componentes formales Categorias N conjunto de no terminales Fuente de entrada Σ alfabeto de terminales Tema 3: Leng. Indep. del Contexto 3 Derivaciones Paso de derivación a la izquierda: δ δ δ1 δ δ δ2 si y solo si δ1 = wΑα, δ2 = wβα y Α → β ∈ P con α, β∈ (N ∪Σ )* , Α∈N, w∈Σ Σ Σ* Derivación a la izquierda: S w con cada paso de derivación a la izquierda Ejemplo : Dada la G.I.C: S ASB | ε A aAb | ε B bBa | ba Derivación a la izquierda de la palabra aabbba: S ASB aAbSB aaAbbSB aabbSB aabbB aabbba * Tema 3: Leng. Indep. del Contexto 4 Árbol de derivación Árbol de derivación (o 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 X 1 X 2 …X k (leídos de izquierda a derecha), entonces A X 1 X 2 …X k 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 ó ε ε ε entonces el árbol es completo y la frontera es una palabra de L(G).

Upload: jhon-contreras

Post on 14-Apr-2015

75 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: automatas de pila.pdf 2.pdf

1

Tema 3: Lenguajes independientes del contexto

Gramáticas independientes de contexto (GIC)

Conceptos básicos AmbigüedadEjemplos de GICs

Autómatas con pila (AP)

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

Formas normales

SimplificaciónForma normal de Greibach

Equivalencia entre APs y GICs

Propiedades y aplicacionesTema 3: Leng. Indep. del Contexto 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 ∪ Σ)*

• Paso de 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

Tema 3: Leng. Indep. del Contexto 3

Derivaciones• Paso de derivación a la izquierda:

δδδδ1 ⇒⇒⇒⇒ δδδδ2 si y solo si δ1 = wΑα, δ2 = wβα y Α → β ∈ P

con α, β ∈ (N ∪ Σ )* , Α∈N, w∈∈∈∈ΣΣΣΣ*

• Derivación a la izquierda: S ⇒ w con cada paso de derivación a la izquierda

• Ejemplo: Dada la G.I.C: S → ASB | εA → aAb | εB → bBa | ba

Derivación a la izquierda de la palabra aabbba:

S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba

*

Tema 3: Leng. Indep. del Contexto 4

Árbol de derivación

• Árbol de derivación (o 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

X1 X2 … Xk (leídos de izquierda a derecha), entonces 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 ó εεεε entonces el árbol es completo y la frontera es una palabra de L(G).

Page 2: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 5

Derivaciones y árboles (I)• Ejemplo: La derivación

S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba

tiene como árbol de derivaciónS

A S B S → ASB | εA → aAb | ε

a A b ε b a B → bBa | ba

a A b

ε

Es un árbol completo con frontera: aabbba

Tema 3: Leng. Indep. del Contexto 6

Derivaciones y árboles (II)• Ejemplo: S → SbS | ScS | a

• Dos derivaciones a la izquierda:S ⇒ ScS ⇒ SbScS ⇒ abScS ⇒ abacS ⇒ abacaS ⇒ SbS ⇒ abS ⇒ abScS ⇒ abacS ⇒ abaca

• Árboles de derivación:

S SS c S S b S

S b S a a S c S

a a a a

Tema 3: Leng. Indep. del Contexto 7

Ambigüedad

• Una gramática G es ambigua si existe x∈L(G) con al menos dos árboles de derivación diferentes.

Ej: La gramática S → SbS | ScS | a es ambigua

• Equivalentemente, una gramática G es ambigua si existe x∈L(G) con al menos dos derivaciones a la izquierda.

• Un lenguaje L es inherentemente ambiguo si todas las gramáticas para dicho lenguaje son ambiguas.

Ej: El lenguaje siguiente es inherentemente ambiguo:L = { aibjck | i=j ó j=k }

Tema 3: Leng. Indep. del Contexto 8

Ejemplos de GICs (I)

1. Gramática G que genera el lenguaje L(G) = { w.c.wR : w ∈ {a,b}* }

G = (N, Σ, S, P) con N = {S}, Σ = {a,b,c} y P formado por las siguientes reglas de producción:

S → aSa | bSb | c

2. Gramática G que genera el lenguaje L(G) = { w.wR : w ∈ {a,b}* }

G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las siguientes reglas de producción:

S → aSa | bSb | ε

Page 3: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 9

Ejemplos de GICs (II)

3. Gramática G que genera el lenguaje L(G) = { anbn : n≥0 }

G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las siguientes reglas de producción:

S → aSb | ε

4. Gramática G que genera el lenguaje L(G) = { anb2n : n≥0 }

G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las siguientes reglas de producción:

S → aSbb | ε

Tema 3: Leng. Indep. del Contexto 10

Ejemplos de GICs (III)

5. Gramática G que genera el lenguaje L(G) = { aibkci : i≥0, k≥1 }

Primero observamos que k e i son independientes entre ellos.Usamos un nuevo no-terminal B que genere la subpalabra bk (k≥1)

G = (N, Σ, S, P) con N = {S,B}, Σ = {a,b,c} y P formado por las siguientes reglas de producción:

S → aSc | ΒB → bB | b

6. ¿ Gramática G que genera el lenguaje L(G) = { aibkci : i≥1, k≥0 } ?

Tema 3: Leng. Indep. del Contexto 11

Autómatas con pila (AP)- Elementos:

- Elementos distinguidos para la inicialización y aceptación:q0 ∈Q: estado inicialF ⊆⊆⊆⊆ Q: conjunto de estados finalespila (representada mediante Г*), la cima de la pila vacía (ε) se denota por ⊥

- Ciclo-máquina:

Componentes físicos Componentes lógicos

Unidad de Proceso Q conjunto de estados

Fuente de entrada Σ alfabeto de entrada

P ila Γ alfabeto de pila

•un elemento ó desapilar un elemento

Consultas:

estado actual

símbolo de entrada

cima de la pila

Acciones:

avance en la entrada

cambio de estado

modificación de la pila: desapilar

y apilar uno o más

Tema 3: Leng. Indep. del Contexto 12

- Definición formal:

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

-Configuración:(q, w, α) ∈ Q × Σ* × Γ* - estado actual, palabra a leer, estado pila -

-Movimiento: (p∈Q, s∈Σ, w∈Σ*, A∈Γ, α∈Γ*)

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

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

- Lenguaje aceptado:

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

Autómatas con pila (AP)

*

Page 4: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 13

M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A } Σ = {a,b}y δ como sigue:

δ (q0,a,⊥) = {(q0, A), (qf, ε) } δ (qf, a, ⊥ ) = ∅δ (q0, a, A) = { (q0, AA) , (qf, A) } δ (qf, a, A) = { (qf, ε) }

δ (q0, b, ⊥) = { (q0, A) } δ (qf, b, ⊥ ) = ∅δ (q0, b, A) = { (q0, AA) } δ (qf, b, A) = { (qf, ε) }

Cómputos posibles de M para la palabra aba:

(q0, aba, ⊥) |-- (q0, ba, A) |-- (q0, a, AA) |-- (q0, ε, AAA)

|-- (qf, ε, AA)

|-- (qf, ba, ⊥) |-- ∅por tanto aba ∉∉∉∉ L(M)

Ejemplo de AP

Tema 3: Leng. Indep. del Contexto 14

M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A } Σ = {a,b}y δ como sigue:

δ (q0,a,⊥) = {(q0, A), (qf, ε) } δ (qf, a, ⊥ ) = ∅δ (q0, a, A) = { (q0, AA) , (qf, A) } δ (qf, a, A) = { (qf, ε) }

δ (q0, b, ⊥) = { (q0, A) } δ (qf, b, ⊥ ) = ∅δ (q0, b, A) = { (q0, AA) } δ (qf, b, A) = { (qf, ε) }

Cómputos posibles de M para la palabra baa:

(q0, baa, ⊥) |-- (q0, aa, A) |-- (q0, a, AA) |-- (q0, ε, AAA)

|-- (qf, ε, AA)

|-- (qf, a, A) |-- (qf, ε, ε)

por tanto baa ∈∈∈∈ L(M)

Ejemplo de AP

Tema 3: Leng. Indep. del Contexto 15

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

L = { w.c.wR : w ∈ {a,b}* }

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

L = { w.wR : 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):

L(APD) ≠≠≠≠ L(AP)

Tema 3: Leng. Indep. del Contexto 16

Ejemplo de AP deterministaDiseñar un autómata con pila (determinista) que reconozca

L = { w.c.wR : w ∈ {a,b}* }

M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A,B } Σ = {a,b,c}y δ como sigue:

δ (q0, a, ⊥ ) = {(q0, A)} δ (q0, b, ⊥) = {(q0, B)}

δ (q0, a, Β ) = {(q0, AB)} δ (q0, b, B) = {(q0, ΒΒ)}

δ (q0, a, A) = {(q0, AA)} δ (q0, b, A) = {(q0, BA)}

δ (q0, c, ⊥) = {(qf, ε)} δ (q0, c, A) = {(qf, A)} δ (q0, c, B) = {(qf, B)}

δ (qf, a, A) = { (qf, ε) } δ (qf, b, B) = { (qf, ε) }

Page 5: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 17

Ejemplo de AP no deterministaDiseñar un autómata con pila que reconozca

L = { w.wR : w ∈ {a,b}* }

M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F= {q0, qf } Γ= { A,B } Σ= {a,b}y δ como sigue:

δ (q0, a, ⊥ ) = {(q0, A)} δ (q0, b, ⊥) = {(q0, B)}

δ (q0, a, Β ) = {(q0, AB)} δ (q0, b, B) = {(q0, ΒΒ), (qf, ε)}

δ (q0, a, A) = {(q0, AA), (qf, ε)} δ (q0, b, A) = {(q0, BA)}

δ (qf, a, A) = {(qf, ε)} δ (qf, b, B) = {(qf, ε)}

Tema 3: Leng. Indep. del Contexto 18

Formas Normales. Simplificación

Simplificación de GIC’s:

� Consiste en eliminar:símbolos inútiles, producciones nulas y producciones unitarias

de una gramática G,

� con el objetivo de obtener una gramática G’, equivalente a G y tal que cada paso de derivación α ⇒ β (en G’) verifica | α | ≤ | β |

Tema 3: Leng. Indep. del Contexto 19

Símbolo inútil� Definiciones: (para símbolos no terminales: X∈N)

• Símbolo accesible X si S αXβ

• Símbolo fecundo X si X w (con w∈Σ*)

• Símbolo inútil = no accesible ó no fecundo

� Ejemplo: S → AB | AA → Aa | ε ¿No fecundos? B , CB → bC ¿No accesibles? DC → cBD → a

⇒*

⇒*

Tema 3: Leng. Indep. del Contexto 20

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 símbolos no fecundos

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

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

• Si A → α ∈ P con α ∈(N1 ∪Σ)*, entonces A∈N1

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

P1 = { A → α ∈ P : α∈(Σ ∪ N1)*}

Page 6: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 21

Eliminar símbolos inútiles (II)

segundo paso:

-- Objetivo: eliminar de G1=(N1, ∑, P1, S) los símbolos no accesibles-- Método: buscar inductivamente los símbolos accesibles, N2

• S ∈ N2 • Si A∈N2, A → αBβ ∈P1 y B∈N1 entonces B∈N2

-- Resultado: G2 = (N2, ∑, P2, S) con P2 = { A → α ∈P1 : A∈N2 }

IMPORTANTE: El orden de los pasos no es conmutativo.

Tema 3: Leng. Indep. del Contexto 22

Eliminar producciones nulas (I)entrada:

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

G2 = (N, Σ, P2, S) equivalente a G y tal que la única producción nula (A → ε) ∈ P2, si existe alguna, es con el símbolo inicial de la gramática: S → ε

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

ANUL = {A ∈ N: A ε }

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

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

⇒*

Tema 3: Leng. Indep. del Contexto 23

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 es Xi si Xi ∉ANULYi es Xi ó es ε si Xi ∈ANULYi no es ε para todo i };

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

Tema 3: Leng. Indep. del Contexto 24

Eliminar producciones unitarias (I)

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

salida:G1 = (N, Σ, P1, S) equivalente a G sin producciones unitarias (A → Β)

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

• A ∈ UA

• Si B ∈ UA y B → C ∈ P entonces C ∈ UA

⇒*

Page 7: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 25

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

P1 := Ø;for A in N loopfor B in UA loop

for regla in P loopif regla = B → α and α ∉ N then

P1 := P1 ∪ {A → α };end if;end loop;

end loop;end loop;

Tema 3: Leng. Indep. del Contexto 26

Forma Normal

Transformación de una GIC a forma normal:

� Estudiaremos procedimientos para:eliminar recursión a izquierdas,reemplazamientos y otros ....

� con el objetivo de transformar cualquier G.I.C. G en G’, tal queG’ es equivalente a G y G’ en forma normal (de Greibach)

� y obtener un AP equivalente a partir de G’ (en F.N. Greibach)

Tema 3: Leng. Indep. del Contexto 27

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 izquierda de un símbolo 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.

⇒*

⇒*

Tema 3: Leng. Indep. del Contexto 28

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 para A.

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

Page 8: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 29

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.

Tema 3: Leng. Indep. del Contexto 30

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 → βA → αZγ

la nueva gramática es equivalente.

Tema 3: Leng. Indep. del Contexto 31

Forma normal de Greibach

Definición:Una gramática independiente del contexto G = (N, Σ, P, S) está en Forma Normal de Greibach (FNG) si todas las reglas de producción (de P) son de la forma:

A → aβ con A∈N, a∈Σ, β∈N∗

Transformación a FNG:Toda GIC se puede transformar en otra GIC equivalente que estéen FNG (con la posible regla añadida S → ε para el caso en que ε pertenezca al lenguaje generado por la primera)

Tema 3: Leng. Indep. del Contexto 32

Forma normal de Greibach (I)

entrada: G = (N, Σ, P, S) independiente de contexto simplificadasalida: G3 = (N3, Σ, P3, S) en FNG equivalente a G

preparación: Numeración de los no terminales y de las reglas.

Elegimos una ordenación de N: A1 < A2 <... <An y clasificamos las reglas de P según dicho orden, de la siguiente forma:A cada regla le asignamos un grupo (1, 2, 3 ó 4) dependiendo del primer símbolo del lado derecho de la regla

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

Page 9: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 33

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 Aj ≤ Ai. Es decir, eliminar las reglas de los grupos 3 y 4.

-- Método: hacer reemplazamientos siguiendo el orden de N (para eliminar las reglas del grupo 4) y cambiar la recursión inmediata a la izquierda por recursión a la derecha (para eliminar las del grupo 3).

Tema 3: Leng. Indep. del Contexto 34

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 hay

if hay reglas del grupo 3 para Ai then

eliminar recursión inmediata a la izquierda de Ai

end if;

end loop;

Tema 3: Leng. Indep. del Contexto 35

Forma normal de Greibach (IV)

Segundo paso: obtención de G3 en forma normal de Greibach

entrada: G1= (N1, Σ, P1, S) 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 grupo 2.-- Método: aplicar reemplazamientos siguiendo el orden inverso al de N1.-- Resultado: G2 = (N2, Σ, P2, S)

Tema 3: Leng. Indep. del Contexto 36

Forma normal de Greibach (V)

primera parte:

N2 := N1;P2 := P1;for i in n-1.. 1 loopfor j in n.. i+1 loop --eliminar reglas del grupo 2

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

end loop;

end loop;end loop;

Page 10: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 37

Forma normal de Greibach (VI)

segunda parte:-- Objetivo: conseguir las 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 looppara cada s y cada regla = A → αsβcambiarla por A → αZsβ y Zs→ s;N3 := N3 ∪ { Zs };

end loop;

Tema 3: Leng. Indep. del Contexto 38

Equivalencia entre APs y GICs

PROPOSICIÓN: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, s, ⊥) = {(q1, α) : S → sα ∈ P} para s ∈Σδ(q1, s, A) = {(q1, α) : A → sα ∈ P} para s ∈Σ , A∈N (A≠S)

El conjunto de estados finales: F = {q0, q1} si S → ε ∈P o bien F = {q1} si S → ε ∉P

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

Tema 3: Leng. Indep. del Contexto 39

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)

Tema 3: Leng. Indep. del Contexto 40

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.

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

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

Page 11: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 41

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

Tema 3: Leng. Indep. del Contexto 42

Ejemplo de sintaxis de Ada

sequence_of_statements ::= statement {statement}

statement ::= {label} simple_statement | {label} compound_statement

simple_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/

Tema 3: Leng. Indep. del Contexto 43

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)>

]>

Tema 3: Leng. Indep. del Contexto 44

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 12: automatas de pila.pdf 2.pdf

Tema 3: Leng. Indep. del Contexto 45

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 Discos

Discos → Disco | Disco Discos