Está en la página 1de 27

Inmaculada Luengo

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,,,q
0
,,F) donde:
Q= conjunto finito de estados
= alfabeto de entrada
= alfabeto de pila
q
0
Q estado inicial
4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
62
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 r ; , r , , , r Z , a , q
i i k k
= L
1 1


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 r
i
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 = a
1
.a
k
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 a
1
. 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",
4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
63

i) (q,,Z)= {(r
1
,
1
),.,(r
k
,
k
) : r
i
Q,
i
*}
se lee en la cinta de entrada, es decir: se transita sin avanzar en la cinta de
entrada.

ii) (q,a,)= {(r
1
,
1
),.,(r
k
,
k
) : r
i
Q,
i
*}
se extrae de la pila, es decir: se transita sin extraer nada de la pila, pero si
se inserta.

iii) (q,,)= {(r
1
,
1
),.,(r
k
,
k
) : r
i
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 M
8
= (Q,,,q
0
,,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

4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
64




Fig. 4.1. Representacin grfica de M
8
.

Observemos que lo que hace M
12
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 0
n
1
n
con n>0.

Ejemplos:
Sea M
9
dado por el diagrama siguiente


Fig 4.2. Autmata de pila M
9
.

Sea M
10
el autmata de pila dado por el diagrama


Fig 4.3. Autmata de pila M
10
.
4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
65


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 M
8
es L(M
8
)={01:n1}.
El lenguaje de M
9
son las palabras sobre ={x,y} que ledas de izquierda a derecha
nunca tienen ms 'y' que 'x'.
El lenguaje de M
10
es L(M
10
)={x
m
y: mn1}

4.1.5 EQUIVALENCIA DE AUTMATAS DE PILA
Dos autmatas de pila M
1
y M
2
diremos que son equivalentes si L(M
1
)=L(M
2
).

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
4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
66
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 Z , a , q se tiene ( ) 1 z , a , q
ii) Z , a , como mximo uno de los cuatro tros
( ) ( ) ( ) ( ) , , q , , a , q , Z , , q , Z , a , q
tiene imagen no vaca a travs de .

Ejemplos:
Los AP M
8
, M
9
y M
10
son deterministas.
El AP M
11
dado por el diagrama


Fig 4.4. Autmata de pila M
11
.


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

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

4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
67
4.1.7 AUTMATAS DE PILA QUE ACEPTAN PALABRAS SLO CON
LA PILA VACA.
Observemos que el autmata de pila M
8
slo acepta palabras con la pila vaca,
mientras que M
9
y M
10
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 ( ) ( ) ,# q , , i
0
= donde
0
q 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 F r aadimos la
transicin ( ) ( ) , s , , r = 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 ( ) ( ) , f ,# , s = .

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


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

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

4. Autmatas de Pila 4.1 Autmatas de Pila (AP)


Inmaculada Luengo
68

Fig 4.5 AP equivalente a M
10
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
{ } 0 > = n : y x L
n n

que sabemos que no es regular.

La cuestin que queremos plantearnos es si esto es un caso particular (un AP y una
G
2
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.


4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
69
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.

4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
70
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,y
N
)
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 G
3
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
4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
71


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 ( ) P , S , , G
N T
= 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,C
N
,
ii) A:=a, con A
N
, a
T

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.
4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
72
Si empieza por un terminal, se tendr A:=ax, con a
T
, 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 { } { } ( ) P , A , C , B , A , , G 1 0
4
= 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
4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
73
C:=BF / 0
D:=0
E:=BC
F:=1
G:=CF
H:=AB

Ejemplo:
Sea la gramtica G
3
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.

La nueva gramtica
3
G con axioma tambin S, smbolos terminales { } z , b , a
T
= y no
terminales { } N , M , G , F , E . D , C , B , S
N
= , tiene las reglas
S:= BC
B:= a
C:= MD
D:= NE
E:= z
F:= MB
M:= BF / z
G:= b
4. Autmatas de Pila 4.2 Gramticas Independientes del Contexto


Inmaculada Luengo
74
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 Y
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 { } B , A , x = y el de entrada { } y , x = segn
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
75
nuestra definicin la transicin ( ) ( ) xAB , q A , x , p = 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 G
2
DADA
Pasamos a construir un AP equivalente a una gramtica independiente del contexto dada
( ) P , S , , G
N T
= . Como conjunto de estados para el AP tomaremos { } f , q , p , i Q =
(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
{ } #
N T
= 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
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
76
i) Insertamos la marca de principio de pila en el fondo de la pila,a la vez que
avanzamos hasta el estado p, ( ) ( ) ,# p , , i = .
ii) Insertamos el axioma en la pila y pasamos al estado q, ( ) ( ) S , q , , p = .
iii) Por cada regla de la forma A:=w, se aade la transicin ( ) ( ) w , q A , , q = , 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
T
a 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, ( ) ( ) , f ,# , q = .

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

4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
77

Fig. 4.9. Autmata de pila equivalente a la gramtica G
3
.

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 Salida
Estado Cinta Pila Transicin Estado Cinta Pila
i x (1)

,;# p x (1) #
p x (1) # ,;A q x (1) A#
q x (1) A# ,; xAy q x (1) xAy#
q x (1) xAy# x,x; q x (2) Ay#
q x (2) Ay# ,; xy q x (2) xyy#
q x (2) xyy# x,x; q y (3) yy#
q y (3) yy# y,y; q y (4) y#
q y (4) y# y,y; q
fdc (5)
#
q
fdc (5)
# ,#; f
fdc (5)

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

4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
78
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 x
A A y y
A y y y y y
# # # # # # # #
1 1 1 1 2 2 3 4 5 5
(1) (2) (3) (4) (5) (6) (7) (8) (9) (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.
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
79

4.3.2 GRAMTICA EQUIVALENTE A UN AP DADO.
Supongamos conocido un autmata de pila { } F , q , , , Q M
0
= . 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

{ } { } { } A , Q q , p : q . A , p S
N
=

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

4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
80
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>
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
81
<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>
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
82
<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 { } 0 = n : z y x L
n n n
, con lo que vemos que el potencial de los autmatas de
pila como reconocedores de lenguajes es limitado.
4. Autmatas de Pila 4.3 Equivalencia de Autmatas de Pila y Gramticas Independientes del Contexto


Inmaculada Luengo
83


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
4. Autmatas de Pila 4.4 Analizadores Sintcticos LL(k)


Inmaculada Luengo
84
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 A
i
y columna que corrresponde a
la combinacin de terminales
k
i i
x x , ,
1
L 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 A
i
y los k
simbolos de preanalisis fuesen precisamente
k
i i
x x , ,
1
L . 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
4. Autmatas de Pila 4.4 Analizadores Sintcticos LL(k)


Inmaculada Luengo
85
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 xy yx yy xfdc yfdc
A xAy xy e e e 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-de-
pila. 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 principio-
de-pila el simbolo actual es la marca de fin-de-cadena.

4. Autmatas de Pila 4.4 Analizadores Sintcticos LL(k)


Inmaculada Luengo
86
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 k smbolos consecutivos en la cinta)
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.

En nuestro ejemplo los datos de entrada son { } y x
T
, = , { } # , , , A y x
N
= , la tabla que
construimos para esta gramtica

xx xy yx yy xfdc yfdc fdc-
A xAy xy e e e e e

y la rutina para LL(2)

INSERTAR (#)
4. Autmatas de Pila 4.4 Analizadores Sintcticos LL(k)


Inmaculada Luengo
87
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
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.

También podría gustarte