Reconocimiento de tokens:
Esta estapa solo es para demostrar como funciona la pila y como es que se validan las entradas recibidas. Este proceso se hace gracias a una gramatica, esta se define a partir de cierto numero de reglas y una tabla la cual se encuentra en los archivos de este repositorio llamado 'compilador.lr'Al ser un ejemplo tan extenso solo se muestra la siguiente captura la cual muestra como es que funciona la pila y acepta una cadena
Entrada:
Pila:
Ahora para demostrar que el analisis sintactico funciona se realiza el recorrido del arbol sintactico. Para esto se hace uso de nodos, los cuales son almacenados dentro de cada elemento pila no terminal. Cada que se realiza una reduccion en el analisis sintactico el nodo se encarga de guardar todos esos elementos que se eliminan que a su vez pueden ser otros no terminales los cuales contienen nodos que tambien eliminaron mas elementos.Al final se muestra el recorrido completo del arbol:
En la etapa actual se muestra el arbol sintactico a la hora de ejecutar el programa. Al finalizar muestra tanto la tabla de simbolos y la tabla de errores.El ejemplo en la etapa actual es con la siguiente entrada:
El resultado de la tabla de simbolos es la siguiente:
Esta etapa consiste en crear un archivo ASM (Assembly Languaje) el cual seria la representacion de la entrada en lenguaje ensamblador, con este archivo se genera un ejecutable el cual muestra la salida del programa.
La entrada que se utiliza para esta etapa final es la siguiente:
Se realiza el recorrido del arbol sintactico para la creacion del archivo ASM el cual da como resultado el siguiente resultado:
.386
.model flat, stdcall
option casemap:none
include c:\masm32\include\masm32rt.inc
.code
suma proc a:DWORD,b:DWORD
mov eax, a
add eax, b
ret
suma endp
main proc
local resultado:DWORD
mov eax, 8
push eax
mov eax, 5
push eax
call suma
mov resultado, eax
mov eax, resultado
print str$(eax)
invoke ExitProcess, 0
main endp
end main
Este archivo es la traduccion en codigo ensamblador. Al no existir una funcion "print" en el lenguaje, cada que se realiza una asignacion se imprime en pantalla en el archivo asm la el valor de la variable a la que se le realizo la asgnacion. Al terminar de realizar todo el analisis semantico el programa crea un archivo .bat el cual se encarga de ejecutar las instrucciones necesarias para crear el archivo ejecutable, el archivo utiliza las instrucciones del programa MASM32 para generar tanto el archivo .obj y .exe.
Al ejecutar el archivo .exe simplemente muestra la salida la cual seria la siguiente: