EMULADOR AUTOMATA DE PILA
DEFINICION
El estudiante debe desarrollar un programa escrito en lenguaje C o C++ que sea capaz de leer desde un archivo de texto la definición de un autómata de pila. Para leer el archivo debe de estar la opción de preguntar al principio del programa el nombre del .txt que desea abrir. Una vez cargada la definición, el programa mostrará la pila en pantalla, permitiendo al usuario ingresar desde teclado una cadena de caracteres del alfabeto contenido en la definición previamente cargada.
El programa NO debe aceptar el ingreso de símbolos que no pertenezca al alfabeto, esto se deduce a partir de la definición del autómata previamente cargado. Se dará por concluido el ingreso de los caracteres cuando el usuario presione la tecla de ENTER.
Al terminar de ingresar la cadena y haber presionado ENTER deben aparecer dos opciones:
1. Mostrar Procesamiento Automático. (Simular automáticamente el comportamiento de la pila.)
2. Mostrar Procesamiento Manual. (Al presionar cada ENTER tiene que mostrar el siguiente paso del procesamiento de la pila.)
El programa deberá mostrar en pantalla el procesamiento de los caracteres de la entrada, así como el comportamiento de la pila, hasta que se alcance un estado de aceptación o se llegue a algún punto en el que no se puede hacer otro movimiento.
FORMATO ARCHIVO DE ENTRADA
La definición del AP será mediante la lectura de una tabla de transición desde un archivo de texto, existirá una transición por línea en el archivo y los elementos de la transición estarán separados por espacios en blanco o tabuladores. En el archivo de entrada se pueden adicionar comentarios, estos comentarios empezarán con los símbolos /+, tomando como comentario todos los caracteres que vengan a continuación hasta que se encuentre el símbolo de fin de línea. La cadena vacía se representará con el símbolo $. A continuación, se muestra un ejemplo del formato del archivo de entrada:
EJEMPLO DEL ARCHIVO DE TEXTO
/+ Esta es una definición de un Autómata de Pila
/+ para el curso de Lenguajes Formales y Autómatas
/+ Este autómata reconoce una cadena palíndroma de símbolos a’s y b’s y una c al
/+ centro de la cadena
S = {q0,q1,q2} +/Estados
S0 = {q0} +/Estado Inicial
A = {a,b,c} +/Alfabeto
AC = {Z0} +/Alfabeto de pila
T = {q2} +/Estado Final
Z0 = {Z0}
q0 a Z0 (a,Z0,q0)
q0 a a (a,a,q0)
q0 c Z0 ($,Z0,q1)
q0 c a (a,Z0,q1)
q1 b a ($,$,q1)
q1 $ Z0 ($,Z0,q2)