Post on 05-Nov-2015
description
Se estudiarn:
Las Gramticas Independientes del Contexto (GIC). Los lenguajes que estas definen, llamados lenguajes independientes
del contexto (LIC),
Y los autmatas que reconocen a estos ltimos, los Autmatas dePila (AP).
Considerando la jerarqua de Chomsky, tambin se les llama
respectivamente gramticas y lenguajes de tipo 2.
Mientras que las gramticas regulares permiten formalizar el concepto
de sintaxis, los Autmatas de Pila permitirn modelar el funcionamiento
del analizador sintctico, una de las partes fundamentales de un
compilador.
Anlogamente, los lenguajes regulares y los Autmatas Finitos permiten
representar los aspectos lxicos y el anlisis lxico, respectivamente, de
los lenguajes de programacin.
Definicin de G.I.C.
En las Gramticas Independientes del Contexto (G.I.C.)
las producciones son menos restrictivas.
En la parte izquierda de la produccin est formada por un
nico smbolo no terminal, pero no hay restricciones respecto
a la parte derecha de la produccin.
Por lo tanto, las producciones son de la forma:
A ::= v
Donde:
A N y v
Autmatas de Pila
Un Autmata de Pila es un Autmata Finito al que se le haincorporado memoria que se gestiona como una pila, con lo que seaumenta su poder funcional. El dispositivo ser no determinista ytendr un nmero finito de movimientos o transiciones a elegir encada situacin.
Los Autmatas de Pila no son dispositivos deterministas y elconjunto de los Autmatas de Pila Deterministas slo permitereconocer a un subconjunto de los lenguajes de tipo 2.
Un autmata de pila, es un tipo de maquinaterica, que recibe una cadena constituida porsmbolos de un alfabeto y determina si esacadena pertenece al lenguaje que el autmatareconoce.
El autmata de pila cuenta con una cinta deentrada y un mecanismo de control, quepuede encontrarse en uno de entre unnmero finito de estados. Uno de estosestados se designa como estado inicial yadems algunos estados se llaman deaceptacin o finales. A diferencia de lasautmatas finitos, los autmatas de pilacuentan con una memoria auxiliar llamadapila. Los smbolos (llamados smbolos de pila)pueden ser insertados o extrados de la pila.
Cinta de entrada
PILa
S2
S3 S1
S4
Mecanismo de control
Indicador de estado
Cabeza delectura
Hay dos tipos de movimientos:
1. Dependiendo del estado actual del Autmata, del smbolo que hay
en la cima de la pila y del que hay en la cadena de entrada, habr
que elegir entre un conjunto de posibles transiciones. Cada
transicin est formada por un posible cambio de estado y por una
cadena (puede ser ) que reemplazar al smbolo que ocupa lacima de la pila. Despus de realizar un movimiento se avanza en el
anlisis de la cinta de entrada.
2. Se le llama -movimiento y es similar al anterior salvo que elsmbolo de la cadena de entrada no se tiene en cuenta y, por tanto,
el anlisis de dicha cadena no avanza.
Formalmente un Autmata de Pila es de la siguiente forma:
AP = { Q , , f, , q0 ,z0, F}
Donde:
Q es el conjunto finito de estados
es el alfabeto de la cinta de entrada es el alfabeto de la pilaq0 Q es el estado inicialz0 es el smbolo inicial de la pilaF Q es el conjunto de estados finalesf : Q ( ) P ( Q )
f (q, a, z) = {( p1, 1) , (p2, 2), ... ,(pn, n)}
NOTA: Estas transiciones indican que si el Autmata de Pila se encuentra en el
estado q, recibe como entrada el smbolo a y z es el smbolo que se encuentra en
la cima de la pila, el Autmata puede pasar al estado p1 y reemplazar en la pila el
carcter z por la cadena 1, o bien elegir cualquiera de las otras posibilidades.
Transiciones de un Autmata de Pila
Leer un smbolo de entrada Extraer un smbolo de la pila Insertar un smbolo en la pila Pasar a un nuevo estado (p, x, s; q, y)
P Estado actualx Smbolo del alfabeto que se lee en la entradas Smbolo que se extrae de la pilaq Nuevo Estadoy Smbolo que se inserta en la pila
Cinta de entrada
PILa
S2
S3 S1
S4
Mecanismo de control
Cabeza delectura
Indicador de estado
Ejemplo:
Disear un Autmata de Pila que reconozca exactamente las cadenas an bn para
cualquier numero natural n
AP = (Q,V,, , qo,Zo,F)Q={q0,q1}
V={a,b}
= {Z0,,1}F={q1}
q0, a, Z0 = {(q0,1,Z0)} q0, b, Z0 = {(q1, )} q1, b, Z0 = {(q1, )}
Aceptar la cadena:aabb
Ejemplo:
Disear un Autmata de Pila que reconozca exactamente las cadenas an bn para
cualquier numero natural n
AP = (Q,V,, , qo,Zo,F)Q={q0,q1}
V={a,b}
= {Z0,,1}F={q1}
q0, a, Z0 = {(q0,1,Z0)} q0, b, Z0 = {(q1, )} q1, b, Z0 = {(q1, )}
q0b, 1;
q1
, ; 1 , 1;
a a b b
Cinta de entrada
PILa
Zo
AP = (Q,V,, , qo,Zo,F)
Q={q0,q1} V={a,b} = {Z0,,1}
q0, a, Z0 = {(q0,1,Z0)} q0, b, Z0 = {(q1, )} q1, b, Z0 = {(q1, )}
Mecanismo de Control
Entrada Por Leer Pila
q0 aabb Z0
q0 abb 1
q1 bb 1 1
q1 b 1
q1 Z0
Ejemplo:
Actividad 3.4:
Elaborar un autmata de pila que acepte xm, yn,x m donde : n,m >=1
A
1) S xMx2) M xMx3) M | N4) N yN5) N |
Nota: A representa los smbolos no terminales y gamma una combinacin de
smbolos terminales y no terminales.
Actividad 3.4:
Elaborar un autmata de pila que acepte xm, yn,x m donde : n,m >=1
A
1) S xMx2) M xMx3) | N
4) N yN5) |
Por la Produccion 1 XMXPor la Produccin 2 xxMxxPor la Produccin 3 xxNxxPor la produccin 4 xxyNxxPor la Produccin 5 xxyxx
xxyxx
Se obtienen las siguientes cadenas:
Autmata
BA C D, ; # y, ; x, ; , #;
E
x, ; y, ; x, ;
Autmata
BA C D, ; # y, ; x, ; , #;
E
x, ; y, ; x, ;
Transicin Leer un smbolo de
entrada
Extraer un smbolo de la
pila
Insertar un smbolo en la pila Pasar a un
nuevo estado
A B No se lee nada No se extrae nada de la pila Inserta un carcter numeral que indicara final de la misma
B
BB Se lee una x de la cinta
No se extrae nada de la pila Inserta una x en la pila C
BC Se lee una y de la cinta
No se extrae nada de la pila No se inserta nada en la pila C
CC Se lee una y de la cinta
No se extrae nada de la pila No se inserta nada en la pila D
CD Se lee una x de la cinta
Se extrae una x de la pila No se inserta nada en la pila D
DD Se lee una x de la cinta
Se extrae una x de la pila No se inserta nada en la pila E
DE No se lee nada Se extrae el smbolo # No se inserta nada en la pila Fin del autmata
Actividad 3.5:
Sea l = {ai, bi : i >=1} sobre = ,
q0, a, Z0 = {(q0,AZ0)} q0, a, = {(q0, AA)} q0, b, = {(q1,)} q1, b, = {(q1, )} q1, , Z0 = {(q2, Z0)}
Nota: La idea es copiar las aes en la pila y borrar una a por cada b que sea leda en la cinta. Una cadena es aceptada si es procesada completamente y en la pila slo queda el marcador en el fondo Z0.
Sea la cadena : aabb
q0 q1b, ; , 0; 0
q2
a, Z0; 0a,A;AA b, ; q0, a, Z0 = {(q0,AZ0)}
q0, a, = {(q0, AA)} q0, b, = {(q1,)} q1, b, = {(q1, )} q1, , Z0 = {(q2, Z0)}