Entradas

Construyendo el compilador Parte XII: Clase descriptor finalizada (esperemos) y funciones de actualización

Imagen
 Terminando la clase DESCRIPTOR La vez pasada les comenté que iba a tener una clase que iba a manejar cómo se hacen las cosas respecto a dos estructuras de datos: la registros y accesos. He terminado la clase y esta tambien posee la funcion con mayor pensamiento, la de ObtenerREgistro. ESta funcion es la encargada de recoger registros para ver cuáles podemos usar, basado en varios "casos" de uso. Acá les dejo algo de teoría, y espero esta funcion me salga bien.  Hasta la siguiente! con mas noticias sobre getReg y generación de ARM

Construyendo el compilador Parte XII: Clase descriptor

 SALUDOS! Esta semana, estoy trabajando en la clase descriptor. Correcto, DESCRIPTOR (hubo algunos errores ortograficos para escribirla creanme). Lo que eso hace es darnos dos "clases", o estructuras de datos para guardar informacion: el descriptor de accesos y el descritptor de registros. estos nos ayudan a tener en cuenta cada registro y accesos que han tenido a lo largo del programa, es como tener nuestra propia memoria RAM o EEPROM, pero la estructura se encarga de almacenarlo, y nos ayuda a que en tiempo de compilación tengamos información oportuna. Esta semana trabajo en ellas, y sigamos!

Construyendo el compilador Parte XI: Avances en el compilador final

 Hola amigos! Hoy no les traigo tanto avance visual, pero si buenas noticias. YA hace algunos días empecé con la carnita final del proyecto de compiladores. ARM fue la parte que escogí, estoy en la parte de las funciones y de la clase de getReg(), asi que deseenme suerte, los adoro a todos, chaooo

Construyendo el compilador Parte X: !PROYECTO DE CODIGO INTERMEDIO FINALIZADO! YASSSSSSSSS

 Hola Lectores de las 3C de mi vida, es emocionante contarles que finalicé el proyecto. En posts anteriores les coloqué ejemplos de cómo iba quedando la funcionalidad, asi que no tengan miedo y vayan a ver todo lo que se puede lograr y todo lo que se puede hacer amigos. Acá, les dejaré un resumen, ya a nivel más de README.md que lógico, nos vemos en la siguiente y ultima fase: EL COMPILADOR! Acerca de... Este proyecto es el segundo de tres de construccion de un compilador. Esta fase es la generación de código intermedio. El código intermedio es una fase intermedia entre el analisis semántico y el codigo a nivel de assembler, de esta forma, logramos hacer esta transición mas suave al tener algo más sencillo de traducir a lenguaje de máquina. Algunos puntos vistos en este proyecto Traducción a código intermedio de expresiones Traducción a código intermedio de IF y While Traducción a código intermedio de Arrays, llamadas a métodos, parámetros, y operaciones. Descripción de herramienta...

Construyendo el compilador Parte IX: Código intermedio de asignaciones, de métodos, if, etc

 Hola blogeros de las 3 C de mi vida.  Ha sido un largo viaje, pasando por el lexer, parser y ahora el analizador semántico. Si, ufff...laaaargo caminito pues. Además, ahora estamos en la fase de codigo intermedio, siemptre es bueno recordar el pasado, para que cuando las recompensas salgan, sintamos que SI esta bien lo que hacemos y lo que logramos. Asi me gusta! Bueno, para no aburrirlos, esta semana mi blog es sobre la creación de codigo intermedio para asignaciones, métodos, If, etc Colocaré algunos ejemplos DISFRUTEN! Traduciendo métodos a código intermedio Para esto, simplemente podemos crear una etiqueta para indicar que EMPIEZA un método y otro para indicar que ACABA el método, imaginemos que tenemos esto: class Program {     void patito () {         int a ;     }     void senzontle () {         int a ;     }     void main ( void ) {         int a ; ...

Construyendo el compilador Parte VIII: Codigo intermedio de Expresiones y precedencia operadores

Imagen
 Codigo intermedio de expresiones Hola! Esta semana he estado trabajando en la "carnita" del proyecto Primero que nada, algunas novedades interesantes. Empecemos Precedencia de operadores Edité mi gramática para que ahora acepte precedencia de operadores. LASTIMOSAMENTE, la gramática de mi analizador semántico estaba basada en eso, por tanto, no puedo usarla para ambos programas (semantico e intermedio). Razon por la cual ahora voy a usar la gramática original para el semántico, y la nueva para el analisis de generación de código intermedio.  acá estan los cambios:  statement :      location   assign_op   expr  SEMICOLON ?            # statement_assign     |  method_call                                 #...

Construyendo el compilador Parte VII: Entrando en la "carnita" del proyecto de generación de código intermedio

 Hola! Esta entrada es algo corta, solo para mantenerlos al tanto de que estoy entrando en la carnita del proyecto, espero poder terminar lo máximo posible, pero otros compromisos quizás me desvíen de la meta. Sin embargo, se dejará todo en la cancha!