Compilador incremental en el diseño del compilador

Compilador incremental es un compilador que genera código para una declaración, o grupo de declaraciones, que es independiente del código generado para otras declaraciones.

Ejemplos:
Compilador C/C++ GNU, plataforma Java Eclipse, etc.

El compilador incremental es un esquema de compilación de este tipo en el que solo el texto fuente modificado se vuelve a compilar y se fusiona con el código compilado previamente para formar un nuevo código de destino. Por lo tanto, el compilador incremental evita la recompilación de todo el código fuente en alguna modificación. Más bien, solo se compila la parte modificada del programa fuente.

Code           -->           Compilation
New code       -->           New Compilation 

(Previous                      (Previous Compilation + 
Code + Changes)                compilation of modified part)              

Necesidad de un compilador incremental:
gran parte del tiempo de un programador se dedica a un flujo de trabajo de edición, compilación y depuración como se muestra a continuación.

  • haces un pequeño cambio (a menudo en un solo módulo o incluso en una función).
  • dejas que el compilador traduzca el código a binario, y finalmente.
  • ejecuta el programa o un montón de pruebas unitarias para ver los resultados del cambio.

Esto aumentará el tiempo de compilación en cada paso del cambio. Pero esto se puede superar con el concepto de compilador incremental (guardar la compilación anterior y compilar la parte modificada del código).

¿Cómo se puede implementar este concepto (concepto de compilación incremental):
Ya hemos escuchado que calcular algo incrementalmente significa actualizar solo aquellas partes de la salida del cálculo que necesitan adaptarse en respuesta a un cambio dado en las entradas del cálculo. Una estrategia básica que podemos emplear para lograr esto es ver un gran cómputo (como compilar un programa) como un compuesto de muchos cómputos más pequeños e interrelacionados que se complementan entre sí. Cada uno de esos cálculos más pequeños generará un resultado intermedio que se puede almacenar en caché y, con suerte, reutilizar en una iteración posterior, ahorrándonos la necesidad de volver a calcular ese resultado intermedio en particular nuevamente.

Características del compilador incremental:

  • Durante el proceso de desarrollo del programa, las modificaciones al programa fuente pueden provocar la recompilación de todo el texto fuente. Esta sobrecarga se reduce en el compilador incremental.
  • Los errores de tiempo de ejecución se pueden reparar como los errores de tiempo de compilación manteniendo la modificación del programa tal como está.
  • El proceso de compilación es más rápido.
  • La memoria utilizada es menor.
  • El manejo de programas por lotes se vuelve muy flexible utilizando el compilador Incremental.
  • En la estructura del programa del compilador incremental, la tabla se mantiene para la asignación de memoria del código de destino. Cuando se compila una nueva instrucción, se crea una nueva entrada en la tabla de estructura del programa. Por lo tanto, la asignación de memoria requerida para el compilador incremental no necesita ser contigua.
  • Ayuda a rastrear las dependencias en el programa fuente.

Publicación traducida automáticamente

Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *