Implementacióń para la generación de automatas push down para el análisis sintáctico ascendente
Los archivos importantes son los archivos de Python
-
autoLR1.py crea el autómata push down con las funciones de cerradura y goto
- La función principal CalcularAutomata recibe como parámetro el nombre del archivo que contiene las especificaciones de la gramática, devuelve una tabla referente a las transiciones goto y los estados generados
-
leergramatica.py es un archivo que contiene una función la cual lee un archivo de texto en el que se especifica la gramática y devuelve un diccionario con la información que los demas archivos necesitan.
-
Los archivos que contienen la información de la gramática deben contener el siguiente aspecto
- Se indica que simbolos son no terminales, cuales son terminales, que simbolo es el inicial, es necesario especificar como se muestra el conjunto First de los simbolos no terminales, y las producciones de la gramática deben especificarse después de la linea que dice Producciones
- Todos los simbolos gramaticales deben estar separados entre espacios
- la palabra eps representa la cadena vacía
No terminales: S' S
Terminales: ( ) $
Inicial: S'
First S': ( eps
First S: ( eps
Producciones
S' → S
S → S ( S )
S → eps
- NOTA: si te encuentras en Windows, usar la siguiente cadena como "produce": "->"
-
-
tabla.py cuenta con la función tablaLR1 la cual recibe el nombre del archivo que contiene a la gramática y un parámetro booleano para indicar si se creará un archivo tipo csv para exportar la tabla
-
El archivo principal es el programa main.py, nos pedirá el nombre del archivo donde se encuentran las especificaciones de la gramática, ingresar el nombre del archivo con todo y su extensión.
-
Se imprime en consola la gramática, la función cerradura del primer elemento punteado, las funciones goto, la tabla de transiciones y la tabla para el análisis sintáctico LR1
-
Si la gramática no es LR1, se mostrará un mensaje antes de la impresión de la tabla indicando las colisiones ocacionadas