Sunteți pe pagina 1din 27

4 Autmatas de Pila

4.1 AUTMATAS DE PILA (AP).


En el captulo 2 hemos visto que los autmatas finitos son objetos equivalentes a las gramticas regulares, es decir que un lenguaje regular se corresponde, bien con una gramtica regular, bien con un autmata finito, aunque no de manera biunvoca, segn no nos hemos cansado de repetir. Vimos tambin que los lenguajes regulares tienen sus lmites, debido fundamentalmente a su incapacidad para contar. En este captulo nuestro punto de mira este puesto en las gramticas independientes del contexto y los lenguajes que generan, queremos definir un objeto genrico del tipo autmata que valga para reflejar al menos este nivel de gramticas.

4.1.1

DEFINICIN DE AUTMATA DE PILA.

Un autmata de pila es una sptupla M=(Q,,,q0,,F) donde: Q= conjunto finito de estados = alfabeto de entrada = alfabeto de pila q0Q estado inicial

Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

FQ, F, conjunto de estados finales es la funcin de transicin, definida de la siguiente forma


Q ( {}) ( {}) P(Q * )

es decir la forma genrica de la imagen de una terna ser (q , a , Z ) = {(r1 , 1 ),L , (rk , k ); ri Q , i *} Segn esta definicin un AP es en genral no determinista. Una transicin es una orden que permite, en el caso de que el autmata se encontrara en estado q, en la cinta de entrada estuviera leyendo el smbolo a y el smbolo de la cima de la pila fuera Z, transitar a cualquiera de los estados ri y, extrayendo el smbolo Z de la pila, sustituirlo por la correspondiente palabra i. Para visualizar un autmata de pila podemos imaginar los estados y la cinta de entrada como en los autmatas finitos, pero ahora est la pila que podemos imaginar como una cinta interna (que siempre representamos como una columna) donde se van insertando o extrayendo los smbolos de pila segn lo vayan mandando las transiciones. La pila hace el papel de una memoria rudimentaria: sobre ella se escriben palabras y se van extrayendo smbolo a smbolo. Debe quedar claro el modo en que entendemos que se insertan las palabras en la pila: Si = a1.ak es una palabra de longitud k y queremos insertarla en la pila de un AP, entendemos que el smbolo que queda en la cima de la pila es a1. Volveremos sobre ello ms adelante. Lo que no debemos ahora es tratar de visualizar una transicin no determinista porque cada posibilidad lleva aparejado un estado diferente de la pila y se complica mucho la notacin si en cada instante representamos todas las posibles situaciones actuales de la pila. Antes de terminar este apartado estudiamos las transiciones definidas sobre ternas "especiales", 62
Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

i) (q,,Z)= {(r1,1),.,(rk,k) : ri Q, i *} se lee en la cinta de entrada, es decir: se transita sin avanzar en la cinta de entrada. ii) (q,a,)= {(r1,1),.,(rk,k) : ri Q, i *} se extrae de la pila, es decir: se transita sin extraer nada de la pila, pero si se inserta. iii) (q,,)= {(r1,1),.,(rk,k) : ri Q, i *} se transita sin avanzar en la cinta de entrada y sin extraer de la pila.

4.1.2

REPRESENTACIN GRFICA DE UN AP

Es similar a la de un autmata finito: Dibujamos un crculo por cada estado no final y un doble crculo por cada estado final. Marcamos el estado inicial con una flecha de entrada, sin etiquetar. Por cada (r,) (q,a,Z) dibujamos una flecha de q a r etiquetada a,Z; El grfico de un AP lo describe completamente.

Ejemplo: Sea M8 = (Q,,,q0,,F,) con Q = {p,q,r,s}, = {0,1}, = {#,a}, p estado inicial, F={s}, y funcin de transicin definida de la manera siguiente (p,,)={(q,#)} (q,0,)={(q,a)} (q,1,a)={(r,)} (r,1,a)={(r,)} (r,,#)={(s,)} La imagen de todas las dems ternas del conjunto de partida es . La representacin grfica de este AP ser 63
Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

Fig. 4.1. Representacin grfica de M8.

Observemos que lo que hace M12 es antes que nada marca el principio de la pila con # sin leer nada en la cinta y pasa al estado q; a continuacin por cada 0 que lee en la entrada inserta una a en la pila, sin cambiar de estado; cuando lee el primer 1, extrae una a de la pila y pasa al estado r; tiene que seguir leyendo smbolos 1 a la vez que extrae los smbolos a de la pila; cuando el nmero de 1 ledos iguala al nmero de 0 vuelve a aparecer el smbolo # en la cima de la pila, lo extrae y se alcanza el estado final s. Por tanto las nicas palabras que podrn alcanzar el estado final son las de la forma 0n1n con n>0. Ejemplos: Sea M9 dado por el diagrama siguiente

Fig 4.2. Autmata de pila M9.

Sea M10 el autmata de pila dado por el diagrama

64

Fig 4.3. Autmata de pila M10. Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

4.1.3

PALABRA ACEPTADA POR UN AP

Una palabra * diremos que es una palabra aceptada por el autmata de pila AP

si existe un camino desde el estado inicial que, procesando todos los smbolos de ,
logra llegar a algn estado final.

4.1.4

LENGUAJE DE UN AP

Es el conjunto de todas las palabras aceptadas. Ejemplos: El lenguaje del autmata de pila M8 es L(M8)={01:n1}. El lenguaje de M9 son las palabras sobre ={x,y} que ledas de izquierda a derecha nunca tienen ms 'y' que 'x'. El lenguaje de M10 es L(M10)={xmy: mn1}

4.1.5

EQUIVALENCIA DE AUTMATAS DE PILA

Dos autmatas de pila M1 y M2 diremos que son equivalentes si L(M1)=L(M2).

4.1.6

AUTMATAS DE PILA DETERMINISTAS.

La idea general es que una autmata de pila es determinista cuando en ningn momento pueda darse la situacin de tener varias transiciones posibles ante una situacin actual del autmata. Desde luego lo primero que debe ocurrir es que para cada trio (q,a,Z), (q,a,Z) sea vaco o unitario, es decir |(q,a,Z)|1. Pero no basta con esto porque si tuviesemos (q,a,Z)=(r,Y) y (q,,Z)=(s,X) con (r,Y)(s,X) entonces si el autmata se encuentra en estado q, leyendo en cinta a, y en la cima de la pila se encuentra Z, podra pasar al estado r, procesar la a de la cinta y sustituir en la cima de la pila la Z por la Y; o bien podra pasar al estado s, no procesar la a de la entrada y sustituir en la cima de la pila la Z por la X. Es decir seguira habiendo no determinismo. De manera que para decir 65
Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

que el autmata sea determinista debe cumplir adems que para cada a y para cada Z, como mximo uno de los cuatro tros (q,a,Z),(q,a,),(q,,Z),(q,,) tenga imagen no vaca a travs de . Formalmente un AP decimos que es determinista si: i) (q , a , Z ) Q ( {}) ( {}) se tiene (q , a , z 1) ii) a , Z , como mximo uno de los cuatro tros

(q , a , Z ),(q , , Z ),(q , a , ),(q , , )


tiene imagen no vaca a travs de . Ejemplos: Los AP M8, M9 y M10 son deterministas. El AP M11 dado por el diagrama

Fig 4.4. Autmata de pila M11.

es no determinista porque si se encuentra en estado q y en la cima de la pila se encuentra el smbolo A tiene dos opciones extraerlo e insertar 'xAy' en la pila o extrerlo e insertar 'xy', es decir

(q, , A) = {(q, xAy ), (q, xy )}

66
Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

4.1.7

AUTMATAS DE PILA QUE ACEPTAN PALABRAS SLO CON

LA PILA VACA. Observemos que el autmata de pila M8 slo acepta palabras con la pila vaca, mientras que M9 y M10 puede aceptar palabras que dejan residuos en la pila. Esto es inaceptable a la hora de implementar un trozo de programa que sea un analizador de los correspondientes lenguajes, porque ms tarde o ms temprano la pila se desbordar y el programa empezar a dar errores. El problema en s no es muy grave porque dado un AP siempre podemos construir otro equivalente que slo acepte palabras con la pila vacia, de la siguiente manera: i) quitamos la condicin de inicial del estado inicial del AP dado, creamos un nuevo estado inicial i y aadimos la transicin (i , , ) = (q0 ,# ) donde q 0 es el antiguo estado inicial y # es un smbolo de pila nuevo. ii) quitamos la condicin de final de todos los antiguos estados finales, aadimos un nuevo estado s y para cada antiguo estado final r F aadimos la transicin (r , , ) = (s , ) que slo cambia de estado. iii) para cada Z aadimos una transicin (s , , Z ) = (s , ) iv) aadimos un estado final nuevo f y la transicin (s , ,# ) = ( f , ) .

Ejemplos: Un AP equivalente a M9 que vacia su pila antes de aceptar cualquier palabra ser

Fig.4.4 AP equivalente a M9 que vaca la pila antes de aceptar palabras.

Un AP equivalente a M10 que vaca su pila antes de aceptar cualquier palabra ser

67
Inmaculada Luengo

4. Autmatas de Pila

4.1 Autmatas de Pila (AP)

Fig 4.5 AP equivalente a M10 que vaca la pila antes de aceptar palabras.

Lo que suele ocurrir es que al hacer el cambio para que el autmata vace su pila se introducen transiciones no deterministas.

Desgraciadamente no es cierto que para cada autmata de pila no determinista exista otro equivalente determinista, lo cual va a producir complicaciones a la hora de implementar los correspondientes analizadores. Si observamos la grmatica independiente del contexto con axioma A y con reglas

A:= xAy / xy y el AP dado en la figura

vemos que ambos tienen como lenguaje

L = {x n y n : n > 0}
que sabemos que no es regular. La cuestin que queremos plantearnos es si esto es un caso particular (un AP y una G2 que tienen el mismo lenguaje) o ser un resultado general, algo as como: Los autmatas de pila y las gramticas independientes del contexto son equivalentes en cuanto a los lenguajes que determinan. Estudiamos un poco ms a fondo las gramticas independientes del contexto.

68
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

4.2 GRAMTICAS INDEPENDIENTES DEL CONTEXTO.


Recordemos que las gramticas independientes del contexto se caracterizan porque la parte izquierda de todas sus reglas es un solo no teminal (A:= w, donde w es cualquier palabra escrita con terminales y no terminales) y no hay reglas compresoras salvo tal vez S:= , siendo S el axioma.

4.2.1

SMBOLOS INACCESIBLES

Un smbolo no terminal decimos que es inaccesible si desde el axioma no se puede derivar ninguna palabra que lo contenga. Si un smbolo es inaccesible y lo eliminamos junto con todas sus producciones y todas las producciones en las que aparezca, la grmatica obtenida es equivalente a la dada.

4.2.2

SMBOLOS SUPERFLUOS

Hay dos tipos de posibles smbolos superfluos de una gramtica i) No terminales: un smbolo no terminal es superfluo si a partir de l no se puede obtener ninguna derivacin escrita slo con smbolos terminales. Si eliminamos un simbolo no terminal superfluo, sus producciones y las producciones en que aparece, la gramtica obtenida es equivalente a la dada. ii) Terminales: un smbolo terminal decimos que es superfluo si no aparece en ninguna derivacin desde el axioma. Si eliminamos del alfabeto de terminales los terminales superfluos la gramtica obtenida es equivalente a la dada.

4.2.3

GRAMTICA LIMPIA

Una grmatica que no tiene smbolos inaccesibles ni superfluos se dice que es una gramtica limpia.

69
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

4.2.4

REGLAS NO GENERATIVAS

Las reglas compresoras del tipo A:= donde A no es el axioma decimos que son reglas no generativas. Si eliminamos esa regla y por cada regla de tipo B:=xAy (x,yN) aadimos la regla B:=xy, la gramtica obtenida es equivalente a la dada.

4.2.5

REGLAS DE REDENOMINACIN

Las reglas del tipo A:=B, donde A y B son smbolos no terminales decimos que son reglas de redenominacin. Si eliminamos dicha regla, aadiendo por cada regla B:=, la regla A:=, la gramtica obtenida es equivalente a la dada.

4.2.6

GRAMTICA BIEN FORMADA

Una gramtica limpia, sin reglas no generativas y sin reglas de redenominacin decimos que es una gramtica bien formada. Una de las dificultades que ofrece la implementacin de programas que analicen si una determinada palabra pertenece o no al lenguaje determinado por una cierta gramtica independiente del contexto, es el hecho de que la parte derecha de cada una de sus reglas puede tener cualquier longitud, lo que supone que los rboles de derivacin de las palabras del lenguaje de la gramtica no tienen un nmero de ramas fijo.

Ejemplo: Sea la gramtica G3 de axioma S cuyas reglas son S:=aMNz M:= aMa / z N:= bN / b Sea la derivacin S aMNz aaMaNz aazaNz aazabNz aazabbNz aazabbbz Su rbol de derivacin es

70
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

Observamos que el primer nivel tiene cuatro ramas, en el segundo hay un nodo con tres ramas y otro con dos,.. En general es difcil dimensionar un rbol que se adapte a todas las derivaciones posibles de la gramtica y esto ocurre as precisamente por la falta de restricciones a la longitud y forma de la parte derecha de las reglas. Noah Comsky observa y demuestra que esta falta de restriccin es tan slo aparente porque cualquier gramtica independiente del contexto es equivalente a otra cuyas partes derechas de todas sus reglas observa un riguroso patrn.

4.2.7

FORMA NORMAL DE CHOMSKY (FNC)

Sea G = ( T , N , S , P ) una gramtica independiente del contexto, entonces existe


G , equivalente a G , cuyas reglas son de uno de los tipos siguientes

i) A:=BC, con A,B,CN, ii) A:=a, con A N, aT iii) S:= con S el axioma. Con esto se pueden obtener todas las palabras del lenguaje con rboles binarios. La demostracin es constructiva, sobre la reglas de la gramtica bien formada Sea A:= una regla de G. Si empieza por un smbolo no terminal, se tiene A:=Bx, introducimos un nuevo no terminal B y sustituimos la regla original por las reglas B:=x y A:=BB.

71
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

Si empieza por un terminal, se tendr A:=ax, con aT, x*, introducimos dos nuevos no terminales, C y C, y sustituimos la regla original por las reglas A:=CC y C:=a y C:=x. Como este proceso es finito porque la longitud de las palabras de la parte derecha de todas las reglas es finita, llegar un momento en que todas las reglas sean del tipo de la forma normal de Chomsky. Ejemplos: Sea G4 = ({0 ,1},{A, B ,C}, A, P ) dada por las reglas A:=0BC / 1A / 11 B:=1C1 / AB0 / 1 C:= B1 / 0 Queremos pasarla a FNC Empezamos por la regla A:=0BC. La parte derecha empieza por un smbolo

terminal. Introducimos un nuevo no terminal al que llamaremos D y hacemos D:=0, y escribimos A:=DBC; ahora introducimos otro no terminal, sea E y la regla E:=BC; quitamos la regla original y la sustituimos por las tres reglas A:=DE, E:=BC y D:=0, que estn las tres en FNC. Seguimos con la regla A:=1A. La parte derecha empieza por un smbolo

terminal. Introducimos un no terminal nuevo F y la regla F:=1. Eliminamos la regla original y la sustituimos por las dos reglas A:=FA y F:=1, ambas en FNC. Para la regla A:=11, simplemente la cambiamos por A:=FF. En cuanto a la regla B:=1C1, hacemos G:=C1 y cambiamos la regla original por

B:=FG y la nueva regla G:=CF. Para B:=AB0 podemos hacer H:=AB quitar la regla original y poner B:=HD. La regla B:=1 no hay que modificarla. Para C:=B1, basta quitarla y escribir en su lugar C:=BF. Por ltimo la regla C:=0, no hace falta modificarla.

Una gramtica equivalente a la dada en forma normal de Chomsky (FNC) ser: A:=DE / FA / FF B:=FG / HD / 1 72
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

C:=BF / 0 D:=0 E:=BC F:=1 G:=CF H:=AB Ejemplo: Sea la gramtica G3 de nuestro ejemplo anterior S:=aMNz M:= aMa / z N:= bN / b Para encontrar una equivalente en FNC, procedemos como antes Para la regla S:= aMNz; Hacemos B:=a (FNC) C:= MNz (no FNC), y

cambiamos la regla original por S:= BC (FNC). Seguimos haciendo D:= Nz (no FNC) y C:= MD (FNC); por ltimo hacemos E:= z (FNC) y D:= NE(FNC). Para la regla M:= aMa hacemos F:= Ma (no FNC) que cambiamos por F:= MB

(FNC) y M:= BF. Para la regla N:= bN, simplemente hacemos G:= b (FNC) y N:= GN (FNC). Las reglas M:= z y N:= b, ya est en FNC y no necesitan ser modificadas.

con axioma tambin S, smbolos terminales T = {a ,b , z} y no La nueva gramtica G3


terminales N = {S , B ,C , D.E , F ,G , M , N } , tiene las reglas S:= BC B:= a C:= MD D:= NE E:= z F:= MB M:= BF / z G:= b 73
Inmaculada Luengo

4. Autmatas de Pila

4.2 Gramticas Independientes del Contexto

N:= GN / b Por otra parte la palabra aazabbbz es derivable desde el axioma con la grmtica original y por tanto tambin con esta. En efecto S BC aC aMD aBFD aaFD aaMBD

aazBD aazaD aazaNE aazaGNE aazabNE


aazabGNE azaabbNE aazabbbE aazabbbz Su rbol de derivacin ahora ser

que es un rbol binario.

4.3 EQUIVALENCIA

ENTRE

AUTMATAS

DE

PILA

GRAMTICAS INDEPENDIENTES DEL CONTEXTO.


Antes de estudiar la equivalencia recordamos la forma en que se insertan las palabras en la pila: se considera que la palabra es insertada en la pila de derecha a izquierda, de modo que el smbolo que queda en la cima de la pila es el primero de la palabra. Algunos autores en la definicin de Autmata de Pila slo permiten la insercin en la pila smbolo a smbolo, mientras que nosotros, en nuestra definicin permitimos que en una transicin se inserte en pila toda una palabra escrita con smbolos del alfabeto de pila. Por ejemplo sea el alfabeto de pila = {x , A, B} y el de entrada = {x , y} segn 74
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

nuestra definicin la transicin ( p , x , A) = (q , xAB ) est permitida y el efecto en la pila sera el de la figura

Fig.4.6. Insercin de una palabra en la pila.

Mientras que ese mismo efecto en un modelo de AP que slo admite la insercin en pila smbolo a smbolo lo causara la secuencia de movimientos

Fig. 4.7. Insercin de una palabra en la pila descrita smbolo a smbolo.

Como vemos ambos diagramas representan el mismo efecto en la mquina: i) procesar el smbolo x de la cinta de entrada, ii) pasar del estado p al estado q, y iii) sustituir la A que se encuentra en la cima de la pila por la palabra xAB insertandola de modo que x es el nuevo smbolo de la cima de la pila.

4.3.1

AUTMATA DE PILA EQUIVALENTE A UNA G2 DADA

Pasamos a construir un AP equivalente a una gramtica independiente del contexto dada

G = ( T , N , S , P ) . Como conjunto de estados para el AP tomaremos Q = {i , p , q , f }


(independiente de la gramtica), como estado inicial tomamos i, como conjunto de estados finales tomamos F={f}, como alfabeto de entrada tomamos el alfabeto de smbolos terminales de la gramtica T, como alfabeto de simbolos de pila tomamos

= T N {#} es decir todos los smbolos terminales y no terminales de la


gramtica y #. Por ltimo tenemos que definir las transiciones del AP que, no lo olvidemos, tiene que tratar de copiar la forma en que en la gramtica se hacen las derivaciones desde el axioma 75
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

i)

Insertamos la marca de principio de pila en el fondo de la pila,a la vez que avanzamos hasta el estado p, (i , , ) = ( p ,# ) .

ii) Insertamos el axioma en la pila y pasamos al estado q, ( p , , ) = (q , S ) . iii) Por cada regla de la forma A:=w, se aade la transicin (q , , A) = (q , w) , que permitir que si la mquina se encuentra en estado q, con una A en la cima de la pila podamos extraerla e insertar en su lugar la parte derecha de alguna de sus reglas, sin cambiar de estado ni procesar lo que hay en la cinta de entrada. iv) Por cada simbolo del alfabeto de terminales a T se aade la transicin
(q , a , a ) = (q , ) , que permitir si en algun momento est en estado q, en la cinta

de entrada se lee una a y en la cima de la pila est la misma a, puede extraerse de la pila. v) Extraer la # de la pila y transitar al estado final denotando que la pila ha quedado vaca, (q , ,# ) = ( f , ) . La palabra habr sido acepatada si y slo la pila est vaca y ha sido leda completa (el cursor de lectura en cinta debe estar sobre la marca de fin de cadena). Ejemplo: Sea la gramtica G, definida por las reglas A:=xAy / xy. Para construir un AP equivalente, tomamos Q={i,p,q,f}, el alfabeto de entrada ser T ={x,y}, como alfabeto de pila tomaremos ={x,y,A,#} y las transiciones i) (i,,)=(p, #) transicin que inserta la # en el fondo de la pila ii) (p,,)=(q,A) transicin que inserta el axioma encima de la # al comenzar. iii) Por la regla A:=xAy aadimos la transicin (q,,A)=(q,xAy); por la regla A:=xy aadimos la transicin (q,,A)=(q,xy). iv) Por ser x,y los dos nicos terminales aadimos las transiciones (q,x,x)=(q,) y (q,y,y)=(q,). v) Por ltimo la transicin que extrae la #, (q,,#)=(f,) Tenemos en total siete transiciones. En la figura vemos el AP dibujado

76
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

Fig. 4.9. Autmata de pila equivalente a la gramtica G3.

Supongamos que en la cinta de entrada de la mquina escribimos la palabra w = xxyy, que es del lenguaje de la gramtica porque se obtiene del axioma A xAy xxyy. En la cinta tendremos

x x y y
1 2 3 4 5

(con el nmero de debajo de cada smbolo indicamos la casilla que ocupa, incluida la marca de fin de cadena, p.e. y (4) es la segunda y de la palabra) En la siguiente tabla vemos la secuencia de transiciones realizadas para procesar la palabra xxyy (el smbolo de la cima de la pila es el primero de la izquierda en cada momento). Entrada Estado i p q q q q q q q Cinta x (1) x (1) x (1) x (1) x (2) x (2) y (3) y (4)
fdc (5)

Salida Pila Transicin ,;# # A# ,;A ,; xAy x,x; ,; xy x,x; y,y; y,y; ,#; Estado p q q q q q q q f Cinta x (1) x (1) x (1) x (2) x (2) y (3) y (4)
fdc (5) fdc (5)

Pila # A#

xAy#
Ay#

xAy#
Ay#

xyy# yy# y#
#

xyy# yy# y#
#

Tabla 4.1: Descripciones instantneas del AP de la figura 4.9 al procesar la cadena xxyy.

77
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

Al procesar la palabra xxyy en la pila del AP veramos sucesivamente (los nmeros de las casillas inferiores indican la posicin actual en la cinta de entrada, los numeros entre parntesis indican el nmero de orden del movimiento o instante del proceso).

x A y #
1
(1)

x y y #
3
(7)

A A y y #
2
(5)

y #
2
(6)

y #
4
(8)

#
1
(3)

#
1
(4)

#
5
(9)

1
(2)

5
(10)

Fig. 4.8. Descripcin sucesiva de la pila de autmata de la Fig. 4.9 al procesar la palabraq xxyy.

Observemos que cuando en la cima de la pila hay un 'no terminal' (instantes (3) y (5)) el AP lo extrae y lo sustituye por la parte derecha de alguna de sus reglas, sin avanzar en la cinta de entrada; cuando en la cima de la pila hay un 'terminal', el AP lo extrae, si coincide con lo que en ese momento lee en la cinta de entrada, y avanza en la cinta de entrada. Si la cima de la pila y el smbolo actual de lectura en cinta no coinciden, no se puede realizar ninguna transicin y por tanto la mquina se para y la palabra no es aceptada. No olvidemos que esto es un mtodo universal para construir un AP equivalente a una gramtica independiente del contexto dada. Puede ocurrir que encontremos otro AP tambin equivalente a la gramtica dada. En concreto en nuestro ejemplo podra ser

que adems tiene la ventaja de ser determinista. Tambin es cierto, como vemos a continuacin, que dado un autmata de pila siempre existe una gramtica independiente del contexto equivalente, lo que permite concluir que las gramticas independientes del contexto y los autmatas de pila son equivalentes en cuanto a los lenguajes abarcados. 78
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

4.3.2

GRAMTICA EQUIVALENTE A UN AP DADO.

Supongamos conocido un autmata de pila M = {Q , , , q 0 , F }. Vamos a definir cada uno de los elementos de una gramtica que afirmamos es equivalente a M. Tomamos como conjunto de no terminales un smbolo S y todas las ternas <p,A,q> donde p y q son estados de M y A es un smbolo de pila o , es decir
N = {S } { p , A.q : p , q Q , A {}}

Como conjunto de terminales tomamos como siempre el alfabeto de entrada del AP, o sea el propio . Como axioma tomamos S. Para crear las reglas hacemos lo siguiente i) Por cada estada final f F creamos una regla S:= <i,,f> donde i es el estado inicial. ii) Por cada estado pQ creamos una regla <p,,p>:= Las reglas definidas hasta ahora son genricas, a partir de aqu empezamos a

introducir las reglas que reflejan las transiciones del AP iii) Por cada transicin (p,x,A) = (q,B) con A (o sea para las transiciones que extraen verdaderamente un smbolo de la pila) se crea para cada estado rQ una regla como sigue <p,A,r>:= x<q,B,r> (es decir por cada transicin que extrae realmente un smbolo de la pila, se introducen tantas reglas como estados tenga el AP original). iv) Por cada transicin de tipo (p,x,) = (q,B) (aquellas transiciones que no extraen nada de la pila), se crea para cada par de estados r,sQ y por cada smbolo

A{} una regla <p,A,r>:= x<q,B,s><s,A,r> (esto es lo ms pesado, porque


por cada transicin que no extrae nada de la pila, aunque quizs si inserte, se introducen |Q|(||+1) reglas en la gramtica).

79
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

Se observa que este mtodo introduce gran cantidad de reglas, aunque posiblemente muchos de los no terminales pueden ser inaccesibles o superfluos con lo que se podr eliminar algunas de ellas a posteriori.

Ejemplo: Sea el AP de la figura cuyo alfabeto de entrada es ={b,c} y cuyo alfabeto de pila es = {c}.

Vamos a construir una gramtica equivalente, para ello procedemos como sigue: El alfabeto de terminales es el de entrada del autmata, T = ={b,c}, el axioma es S, los no terminales son

N = {S, <p,c,p>, < p,,p >,<p,c,q>,<p,,q>,<p,c,r>,<p,,r>,<q,c,p>,<q,,p>,


<q,c,q>, <q,,q>,<q,c,r>, <q,,r>,<r,c,p>,<r,,p>,<r,c,q>,<r,,q>,<r,c,r>,<r,,r>} (Podramos renombrarlos como A = < p,c,p>, B = < p,,p>, etc..). Y las reglas i) Puesto que en M hay un solo estado final que es r tenemos

S:= <p,,r>.
ii) Se crea una regla por cada estado <p,,p>:= <q,,q>:= <r,,r>:= iii) la nica transicin que realmente extrae de la pila es (q,c,c)=(r,). Por esta transicin debemos introducir una regla por cada estado, as <q,c,p>:= c<r,,p> <q,c,q>:= c<r,,q> 80
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

<q,c,r>:= c<r,,r> iv) por la transicin (p,c,)=(q,c) debemos introducir una regla por cada par de estados (los posibles pares de estados son (p,p), (p,q), (p,r), (q,p), (q,q),(q,r), (r,p),(r,q),(r,r)) y por cada smbolo de pila o . As tenemos que aadir |Q|(||+1)=18 reglas que son: <p,,p>:= c<q,c,p><p,,p> <p,,p>:= c<q,c,q><q,,p> <p,,p>:= c<q,c,r><r,,p> <p,c,p>:= c<q,c,p><p,c,p> <p,c,p>:= c<q,c,q><q,c,p> <p,c,p>:= c<q,c,r><r,c,p>

<p,,q>:= c<q,c,p><p,,q> <p,,q>:= c<q,c,q><q,,q> <p,,q>:= c<q,c,r><r,,q> <p,c,q>:= c<q,c,p><p,c,q> <p,c,q>:= c<q,c,q><q,c,q> <p,c,q>:= c<q,c,r><r,c,q> <p,,r>:= c<q,c,p><p,,r> <p,,r>:= c<q,c,q><q,,r> <p,,r>:= c<q,c,r><r,,r> <p,c,r>:= c<q,c,p><p,c,r> <p,c,r>:= c<q,c,q><q,c,r> <p,c,r>:= c<q,c,r><r,c,r> Nos faltan otras 18 reglas que tendremos que introducir por la transicin

(q,b,) = (q,), que sern


<q,,p>:= b<q,,p><p,,p> <q,,p>:= b<q,,q><q,,p> <q,,p>:= b<q,,r><r,,p> <q,c,p>:= b<q,,p><p,c,p> 81
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

<q,c,p>:= b<q,,q><q,c,p> <q,c,p>:= b<q,,r><r,c,p> <q,,q>:= c<q,,p><p,,q> <q,,q>:= c<q,,q><q,,q> <q,,q>:= c<q,,r><r,,q> <q,c,q>:= c<q,,p><p,c,q> <q,c,q>:= c<q,,q><q,c,q> <q,c,q>:= c<q,,r><r,c,q> <q,,r>:= c<q,,p><p,,r> <q,,r>:= c<q,,q><q,,r> <q,,r>:= c<q,,r><r,,r> <q,c,r>:= c<q,,p><p,c,r> <q,c,r>:= c<q,,q><q,c,r> <q,c,r>:= c<q,,r><r,c,r> Observemos que las reglas i) son de tipo S:= D (de redenominacin); las reglas ii) son de tipo A:= (no generativas); las iii) de tipo A:=aB (terminal seguido de no-treminal); y las iv) de la forma A:=aBC (las nicas que son propiamente de una gramtica independiente del contexto, las otras podran pertenecer a una gramtica regular lineal a la derecha). En realidad lo que pretendamos era comprobar que el conjunto de los lenguajes correspondientes a todos los autmatas de pila y el de los lenguajes correspondientes a gramticas independientes del contexto son iguales, es decir que ambos tipos de objetos tienen la misma potencialidad.

Se demuestra que hay lenguajes que no son lenguajes de ningn autmata de pila, por ejemplo L = x n y n z n : n 0 , con lo que vemos que el potencial de los autmatas de pila como reconocedores de lenguajes es limitado. 82
Inmaculada Luengo

4. Autmatas de Pila

4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto

4.4 ANALIZADORES SINTCTICOS LL(K).


El objetivo sera crear un algoritmo universal que valga para determinar si cierta palabra que se ir leyendo smbolo a smbolo pertenece o no al lenguaje de cierta gramtica independiente del contexto, como hicimos con las gramticas regulares usando una tabla que refleja las transiciones de un autmata finito equivalente. Desgraciadamente esto no es posible debido al no determinismo de las gramticas independientes del contexto y sus respectivos autmatas de pila equivalentes. Lo que vamos a estudiar es un algoritmo que vale para algunas gramticas independientes del contexto. Acabamos de ver que si tenemos una gramtica independiente del contexto, podemos construir un AP equivalente de una manera bien sencilla, pero presentar no determinismo claro: si un cierto 'no-terminal' tiene varias reglas asociadas, digamos tres, el correspondiente AP tiene tres posibilidades de sustitucin cuando lo encuentra en la cima de la pila. Y as para cada 'no terminal'.

4.4.1

PRINCIPIO DE PREANLISIS.

Cosideremos de nuevo la gramtica independiente del contexto A:=xAy / xy, el AP equivalente obtenido por el mtodo general que se vin en la seccin 4.3.1,es

Si consideramos la palabra xxyy afirmamos que es del lenguaje de la gramtica porque puede ser obtenida desde el axioma de las derivaciones A xAy xxyy . Observamos que en la primera derivacin usamos la regla A:=xAy, mientras que en la segunda 83
Inmaculada Luengo

4. Autmatas de Pila

4.4 Analizadores Sintcticos LL(k)

usamos A:=xy. El mtivo es que nosostros estamos viendo que despues de la segunda x ya viene una y. Pero si nosotros no viesemos la palabra que queremos derivar, si slo la pudiesemos ver smbolo a smbolo no sabramos en que momento debemos dejar de cambiar A por xAy, para cambiarla por xy. La idea del principio de preanlisis es 'mirar' no slo el siguiente smbolo de la cinta de entrada que se va a procesar, sino los siguientes k smbolos. Por ejemplo, un LL(1) mantiene en memoria slo un smbolo de la cinta de entrada, el siguiente que se va a procesar; un LL(2), mantiene en memoria dos smbolos de la cinta de entrada en cada momento, el smbolo actual, que se procesar en su momento y el inmediatamente siguiente. En el ejemplo que nos ocupa, si cuando se va a procesar la segunda 'x' se sabe que el siguiente smbolo es una 'y' como ocurre si pensamos en un LL(2), probablemente se pueda resolver el problema de usar de manera determinista las dos reglas que hay para A: siempre que se est leyendo una x y el simbolo siguiente tambien es una x usamos la regla A:=xAy y siempre que se lea una x y el smbolo siguiente sea una y, se usar la regla A:=xy. As el no determinismo queda salvado y podemos escribir un trozo de programa genrico para esta situacin. Volviendo al caso general del analizador LL(k), es decir si suponemos que conociendo los siguientes k smbolos de la cinta de entrada en todo momento se puede salvar el no determinismo de la gramtica podremos construir un algoritmo que traducido a un trozo de programa sea capaz de decidir si una palabra determinada es o no del lenguaje de la misma. Primero construimos una tabla determinista que ser un dato de entrada, de la forma siguiente Tantas filas como no-terminales de la gramtica, en nuestro caso que ser un LL(2) una sola fila. Tantas columnas como k-plas posibles de smbolos no terminales pudieran leerse en un momento determinado en la cinta, includa la marca de fin de cadena: en nuestro caso, dado que en cada momento se van a tener en memoria dos smbolos las posibilidades sern xx, xy, yx, yy, xfdc, yfdc'. Luego nuestra tabla es de 1 por 6. En el cruce de la fila i, que corresponde al terminal Ai y columna que corrresponde a la combinacin de terminales xi1 , L , xik se escribe la parte derecha de la regla que se

debe si en un momento dado en la cima de la pila se encontrara el no-terminal Ai y los k simbolos de preanalisis fuesen precisamente xi1 , L , xik . En nuestro ejemplo, en el cruce

de la unica fila con la columna rotulada xx escribimos xAy, porque siempre que el smbolo actual sea x y el siguiente tambin sea x, queremos cambiar A por xAy. En el
84
Inmaculada Luengo

4. Autmatas de Pila

4.4 Analizadores Sintcticos LL(k)

cruce de la nica fila con la columna rotulada xy escribiremos xy, porque siempre que el smbolo actual sea x y el siguiente smbolo sea y, y A se encuentre en ese momento en la cima de la pila, queremos cambiar A por xy. Rellenamos con e las casillas que corresponden a situaciones de palabras que no son del lenguaje de la gramtica xx A xAy xy xy yx e yy e xfdc e yfdc e

vamos a crear un algoritmo que reproduzca el modo de funcionamiento de nuestro AP Primero observemos atentamente su funcionamiento: Se trabaja siempre sobre la cima-de-la-pila. Se inserta una marca de principio-de-pila y a continuacin el axioma de la gramtica, a patrir de ah se van insertando o extrayendo smbolos en la pila hasta que vuelva a aparecer la marca de principio-depila. Se puede insertar varios a la vez, pero se extraen de uno en uno. Pueden darse dos situaciones: a) La cima-de-la-pila es un terminal. En tal caso siempre se compara a ver si coincide con el smbolo actual de lectura en cinta. Si coincide se extrae de la pila y se avanza la lectura en la cinta (manteniendo en todo momento k smbolos de cinta en memoria). Si no coincide ya no se puede realizar ninguna transicin del AP, con lo cual la palabra no alcanzar estado final, no es del lenguaje de la gramtica y por tanto el algoritmo debe declarar un mensaje de error. b) La cima-de-la-pila es un no-terminal. En tal caso la transicin aplicable es extraerlo de la pila e insertar en su lugar la parte derecha de la regla que en ese momento sea adecuado aplicar teniendo en cuenta los k smbolos de preanlisis, resuelto con el principio de preanlisis en la tabla, es decir insertamos lo que diga la tabla, teniendo en cuenta la posibilidad de que sea 'e' para incluir un mensaje de error. Antes de dar una palabra por aceptada hay que comprobar adems que ha sido leida completa, sin ms que comprobar que cuando vuelve a aparecer la marca de principiode-pila el simbolo actual es la marca de fin-de-cadena. 85
Inmaculada Luengo

4. Autmatas de Pila

4.4 Analizadores Sintcticos LL(k)

El analizador sintctico LL(k) estar formado por el alfabetos de terminales (incluida la marca de fin de cadena), el de no terminales (incluida la marca de fin de cadena), la tabla construida como se acaba de explicar (con una columna para (fdc -)) y la rutina siguiente
INSERTAR (#) INSERTAR (S) PARA i=1 HASTA k LEER (Smbolo) Smbolo[I]= Smbolo FIN PARA MIENTRAS cima-de-la-pila # HACER CASO cima-de-la-pila DE (imitar el AP segn el tipo de smbolo en la cima de la pila) Terminal: SI cima-de-la-pila = Smbolo1, ENTONCES EXTRAER cima-de-la-pila PARA i=1 hasta k-1 Smbolo [i]= Smbolo[i+1] FIN PARA LEER(Smbolo), Smbolo[k] = Smbolo SI NO salir a la rutina de error No terminal: SI tabla(cima-de-la-pila, (Smbolo[1], ...,Simbolo[k]))e EXTRAER cima-de-la-pila INSERTAR tabla [cima-de-la-pila, (Smbolo[1], ...,Smbolo[k])] SI NO salir a la rutina de error FIN CASO FIN MIENTRAS EXTRAER (#) SI Smbolo1 fdc ENTONCES salir a la rutina de error. (leer k smbolos consecutivos en la cinta)

En nuestro ejemplo los datos de entrada son T = {x, y}, N = {x, y , A, #} , la tabla que construimos para esta gramtica xx A xAy xy xy yx e yy e xfdc e yfdc e fdce

y la rutina para LL(2)


INSERTAR (#)

86
Inmaculada Luengo

4. Autmatas de Pila INSERTAR (S) LEER (Smbolo) Smbolo1= Smbolo LEER (Smbolo) Smbolo2 = (Smbolo) MIENTRAS cima-de-la-pila# HACER CASO cima-de-la-pila DE Terminal: SI cima-de-la-pila = Simbolo1 ENTONCES EXTRAER cima-de-la-pila, Smbolo 1 = Smbolo2 , LEER (Smbolo), Smbolo2 = Smbolo SI NO salir a la rutina de error

4.4 Analizadores Sintcticos LL(k)

No terminal: SI tabla[cima-de-la-pila,(Smbolo1,Smbolo2)]e ENTONCES EXTRAER cima-de-la-pila INSERTAR tabla[cima-de-la-pila,(Smbolo1,Smbolo2)] SI NO salir a la rutina de error FIN CASO FIN MIENTRAS EXTRAER (#) SI Smbolo1 fdc ENTONCES salir a la rutina de error.

Este tipo de analizador no resuelve el problema genrico del no determinismo de las Gramticas independientes del contexto. Por ejemplo sea la gramtica A:=xAy / xxAy / . Cuando tenemos una palabra del lenguaje xxxxyy que se obtiene AxxAyxxxxAyyxxxxAyy, no existe ningn LL(k) que sea vlido porque por muy grande que sea k, si tomamos para analizar una palabra que empieza con un nmero de smbolos x mayor que k, no sabemos de manera determinista con cul de las dos reglas xxAy o xAy comenzar a derivar.

87
Inmaculada Luengo

S-ar putea să vă placă și