Está en la página 1de 3

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA

ESCUELA PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS


CURSO: COMPILADORES Y TEORA DE LENGUAJES
AO: TERCERO CICLO: VI

PRCTICA N 02: AUTMATAS A PILA


1. OBJETIVOS

Comprender los conceptos bsicos de los Autmatas a Pila.


Evaluar secuencias de cadenas en un Autmata a Pila usando JFLAP y C++.

2. FUNDAMENTO TERICO
AUTMATAS DE PILA
De igual 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 Autmata a Pila
(AP).
Un AP es una mquina de estado que usa una estructura de datos tipo LIFO, en la cual el ltimo
elemento en entrar a la estructura es el primero en salir (estructura Pila). Al iniciar el funcionamiento, la
pila est vaca y al finalizar la pila debe quedar vaca.
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 se hara la transicin ((p, u, ),(q, )). Esta
operacin es conocida como: push.
Si solo queremos sacar caracteres de la pila se hara con la transicin ((p, u, ),(q, )). Esta
operacin es conocida como: pop.

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 del contexto a autmatas de pila, el cual, analiza su
cadena de entrada marcando antes el fondo de la pila, e insertando en la pila el smbolo inicial de la
gramtica. Luego repite los pasos siguientes segn resulte aplicable.

Si la cima de la pila tiene un no terminal, reemplace de acuerdo


con una de las reglas de
reescritura de la gramtica.
Si la cima de la pila contiene un terminal, elimnelo de la pila a la vez que lee de la entrada del

Docentes: Msc. Ana Silvia Cori Morn / Ing. Edith Alfaro Gonzales

Pgina 1 de 3

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA


ESCUELA PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORA DE LENGUAJES
AO: TERCERO CICLO: VI

mismo terminal. Si el smbolo de la entrada no equivale al smbolo de la pila, se declara que la


entrada es una cadena ilegal.
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.
3. PROCEDIMIENTO
PARTE I: SIMULACIN EN JFLAP
Para la siguiente gramtica:
G x n y n | n 0 (Independiente del contexto)
Con las siguientes producciones:
S xSy
S
Se desea obtener un autmata de pila que acepte el LLC generado por la gramtica propuesta.
La tabla de transiciones del autmata de pila es:
N

Transiciones

1
2
3
4
5

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

En base a los datos proporcionados, un autmata de pila que satisface las condiciones es el siguiente:

Marque con una X las cadenas aceptadas por el autmata utilizando el modo aceptado por estado final,
y justifique su respuesta en cada una de ellas:

aaabbb
aaaba
abc
aab

Marque con una X las cadenas aceptadas por el autmata utilizando el modo aceptado por pila vaca, y
justifique su respuesta en cada una de ellas:
aaabbb
aaaba
Docentes: Msc. Ana Silvia Cori Morn / Ing. Edith Alfaro Gonzales

Pgina 2 de 3

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERA


ESCUELA PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORA DE LENGUAJES
AO: TERCERO CICLO: VI

abc
aab
4. ANLISIS DE RESULTADOS
Encuentra alguna diferencia entre aceptar una palabra por estado final y aceptarlo por la pila vaca?
En base al siguiente pseudocdigo:
si (pila vaca)
estado = p;
inserta(S);
estado = q;
mientras pila <> vacio hacer
switch (topedelapila) es
S: extrae(S); inserta(aSb) o extrae(S);
x: extrae(a); lee una a de la entrada;
y: extrae(b); lee una b de la entrada;
fin switch;
fin mientras;
si(pila vaca) acepta_cadena
si no error
Qu errores encuentra en el cdigo anterior?
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
Haga las modificaciones necesarias para superar dichos errores
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
5. INVESTIGACIN COMPLEMENTARIA

Desarrollo un programa en C++ en base al pseudocdigo de la seccin Anlisis de Resultados


que simule el autmata de pila de la seccin Procedimiento.
Investigue la definicin formal de una mquina de Turing y su aplicacin en los compiladores.

Docentes: Msc. Ana Silvia Cori Morn / Ing. Edith Alfaro Gonzales

Pgina 3 de 3

También podría gustarte