Anda di halaman 1dari 7

Compiladores.

Gua 3

1
Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Compiladores

Tema: Autmata de Pila


Contenido
La presente gua aborda los autmatas de pila, y se enfoca
en la aplicacin que se le puede dar a estas herramientas
para el anlisis sintctico en gramticas libres de contexto

Objetivos Especficos
Conocer las caractersticas bsicas de un Autmata de Pila.
Crear algunas secuencias de cadenas evaluadas por un Autmata
de Pila en JFlap, e implementarlos en C++.

Material y Equipo
Gua No 3.
Computadora con DevC++ y

el simulador Jflap.

Introduccin Terica
Gua 3 de Pila
Autmata
De
igual
Gua
4 manera que los lenguajes regulares se pueden representar
mediante autmatas finitos, los lenguajes libres de contexto
tienen su correspondencia en otro tipo de dispositivo: El
fa
Autmata
con Pila (AP).
Un AP es una mquina de estado que usa una estructura de datos
temporal llamada PILA, en la cual el ltimo elemento que entra es
el primero que sale de la pila (LIFO). Al iniciar el
funcionamiento, la pila est vaca y al finalizar la pila debe
quedar vaca.

2Compiladores. Gua 3

Formalizacin de los autmatas de pila


Un autmata de pila es un sxtuplo (K, , , , s, F), donde:
K es un conjunto de estados.
es el alfabeto de entrada.
es el alfabeto de la pila.
s K es el estado inicial.
F K es un conjunto de estados finales.
(K X * X *) X (K X *) es la relacin de transicin.
Si tenemos una transicin de la forma: ((p, u, ), (q, )) ,
el Ap hace lo siguiente:
En el estado p, consume u de entrada.
Saca de la pila.
Llega a un estado q.
Mete en la pila.
Si solo queremos meter la cadena en la pila
transicin ((p, u, ),(q, )). Esta operacin
como: push.
Si solo queremos sacar caracteres de la pila se
transicin ((p, u, ),(q, )). Esta operacin
como: pop.

se hara la
es conocida
hara con la
es conocida

Aplicacin de un analizador sintctico


La teora de los autmatas de pila nos brinda la base para la
construccin de rutinas de anlisis sintctico destinadas a una
amplia gama de lenguajes independientes de contexto.
Analizadores sintcticos
En este punto debemos considerar como se pueden desarrollar las
rutinas de anlisis sintctico a partir de los autmatas de pila.
Este problema surge cuando se describe un lenguaje en funcin de
reglas de escritura gramaticales, luego se desarrollan rutinas de
anlisis sintctico para el lenguaje empleando teora de los
autmatas de pila como herramientas de desarrollo.
Proceso de anlisis sintctico LL
Buscamos traducir gramticas independientes
autmatas de pila, el cual, analiza su cadena de
antes el fondo de la pila, e insertando en la
inicial de la gramtica. Luego repite los pasos
resulte aplicable.

del contexto a
entrada marcando
pila el smbolo
siguientes segn

Compiladores. Gua 3

1- Si la cima de la pila tiene un no terminal, reemplace de


acuerdo con una de las reglas de reescritura de la
gramtica.
2- Si la cima de la pila contiene un terminal, elimnelo de la
pila a la vez que lee de la entrada del mismo terminal. Si
el smbolo de la entrada no equivale al smbolo de la pila,
se declara que la entrada es una cadena ilegal.
3- Si aparece en la cima de la pila la marca de fondo de pila,
elimnela y declare que la porcin de cadena es aceptable.
Este proceso analiza la sintaxis de una cadena, produciendo una
derivacin por la izquierda conforme lee la cadena de izquierda a
derecha y produce derivaciones hacia la izquierda.

Procedimiento
PARTE I: SIMULACION EN JFLAP

Gua 3

Ejemplo
Para
Guala4 gramtica
(Independiente de contexto).
Con las siguientes producciones:
fa

Obtener un autmata de pila que acepte el LLC generado por la


gramtica anterior
Tabla de transiciones del autmata de pila
No
1
2
3
4
5

Transiciones
(p, , ) (q,
(q, , S) (q,
(q, , S) (q,
(q, a, a) (q,
(q, b, b) (q,

S)
aSb)
)
)
)

Implemente el autmata en JFlap

4Compiladores. Gua 3

Marque con una X las cadenas aceptadas


utilizando el modo aceptado por estado final

por

el

autmata,

por

el

autmata,

aaabbb
aaaba
abc
aab
Marque con una X las cadenas aceptadas
utilizando el modo aceptado por pila vaca
aaabbb
aaaba
abc
aab

Anlisis de resultados
Qu diferencia se da en JFLAP entre aceptar una palabra por
estado final y al aceptarlo por la pila vaca? __________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
Segn la teora de autmatas de pila, cul debera ser la
condicin de aceptacin de una palabra?__________________________
_________________________________________________________________

Compiladores. Gua 3

Analice el siguiente pseudocdigo propuesto para la construccin


del autmata
if (pila vaca)
estado := p;
insertar(S);
estado := q;
while pila <> vaca do
case cimadelapila of
S: extraer(S); insertar(aSb)
x: extraer(a); leer una a de
y: extraer(b); leer una b de
endcase
endwhile;
if(pila vaca) aceptar_palabra

o extraer(S);
la entrada;
la entrada;
else error

Qu errores producira el pseudocdigo propuesto?_______________


_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
Modifique el pseudocdigo de tal forma que elimine los errores
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________

6Compiladores. Gua 3

Investigacin complementaria
Implementar en C++ el pseudocdigo que simule el autmata de
pila visto en la prctica.
Investigue la definicin formal de una maquina de Turing y en
que se puede aplicar en el campo de los compiladores.

Bibliografa
http://www.frt.utn.edu.ar/sistemas/sintaxis/page31.html
http://www.uhu.es/francisco.moreno/talf/docs/tema7.pdf

Compiladores. Gua 3

Hoja de cotejo:

Gua 3: Autmata de Pila

Docente:
Tema: Presentacin del programa

3
1

Mquina No:
Mquina No:

Alumno:

Mquina No:
GL:

Alumno:

Docente:

GL:

Docente:

GL:

Fecha:

EVALUACION
%
CONOCIMIENTO

Del 20
al 30%

APLICACIN
DEL
CONOCIMIENTO

Del 40%
al 60%

1-4

5-7

8-10

Conocimiento
deficiente
de los
fundamentos
tericos

Conocimiento
y explicacin
incompleta de
los
fundamentos
tericos

Conocimiento
completo y
explicacin
clara de los
fundamentos
tericos

No tiene
actitud
proactiva.

Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la gua.

Tiene
actitud
proactiva y
sus
propuestas
son
concretas.

ACTITUD
Del 15%
al 30%

TOTAL

100%

Nota

Anda mungkin juga menyukai