Diseño del compilador | Detección de un bucle en el código de tres direcciones

Requisito previo: el código de tres direcciones en la optimización del bucle del compilador es la fase posterior a la generación del código intermedio. La intención principal de esta fase es reducir el número de líneas en un programa. En cualquier programa, la mayoría del tiempo que dedica cualquier programa está realmente dentro del bucle … Continue reading «Diseño del compilador | Detección de un bucle en el código de tres direcciones»

Introducción del ensamblador

Assembler es un programa para convertir instrucciones escritas en código ensamblador de bajo nivel en código de máquina reubicable y generar información para el cargador. Genera instrucciones evaluando los mnemotécnicos (símbolos) en el campo de operación y encuentra el valor del símbolo y los literales para producir código de máquina. Ahora, si el ensamblador hace … Continue reading «Introducción del ensamblador»

Propagación constante en el diseño del compilador

La propagación constante es una de las técnicas de optimización de código local  en Compiler Design. Se puede definir como el proceso de reemplazar el valor constante de las variables en la expresión. En palabras más simples, podemos decir que si se le asigna un valor a una constante conocida, simplemente podemos reemplazar ese valor … Continue reading «Propagación constante en el diseño del compilador»

Optimización de bucles en el diseño del compilador

La optimización de bucles es el proceso de aumentar la velocidad de ejecución y reducir los gastos generales asociados con los bucles. Desempeña un papel importante en la mejora del rendimiento de la memoria caché y en el uso efectivo de las capacidades de procesamiento en paralelo. La mayor parte del tiempo de ejecución de … Continue reading «Optimización de bucles en el diseño del compilador»

Código LEX que acepta strings que tienen números pares de ‘a’ sobre el alfabeto de entrada {a,b}

Requisito previo:  Diseño de autómatas finitos Introducción: en este artículo, discutiremos el DFA en el código LEX que acepta la string que tiene números pares de ‘a’ sobre el alfabeto de entrada {a, b}. con la ayuda del ejemplo. Discutámoslo uno a uno. Descripción general del problema: código LEX que acepta la string que tiene … Continue reading «Código LEX que acepta strings que tienen números pares de ‘a’ sobre el alfabeto de entrada {a,b}»

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 … Continue reading «Compilador incremental en el diseño del compilador»

Programa YACC que acepta strings que comienzan y terminan con 0 o 1

Problema: escriba un programa YACC que acepte strings que comiencen y terminen con cero o uno Explicación: YACC (Yet another Compiler-Compiler) es el generador de analizador estándar para el sistema operativo Unix. Un programa de código abierto, yacc genera código para el analizador en el lenguaje de programación C. El acrónimo generalmente se representa en … Continue reading «Programa YACC que acepta strings que comienzan y terminan con 0 o 1»

Recuperación de errores en LR Parsing

El analizador LR es un analizador ascendente. Siempre se utiliza para tratar la gramática libre de contexto (CFG). Por lo general, lo utilizan los compiladores de lenguajes de programación de computadoras, así como también otras herramientas asociadas. El analizador LR produce la derivación más a la izquierda mientras usa la entrada tomando de izquierda a … Continue reading «Recuperación de errores en LR Parsing»

Ambigüedad colgante

Los compiladores e intérpretes usan la gramática para construir la estructura de datos para procesar los programas. Entonces, idealmente, un programa debería tener un árbol de derivación. Un árbol de análisis o un árbol de derivación es una representación gráfica que muestra cómo se derivan strings de la gramática utilizando reglas de producción. Pero existen … Continue reading «Ambigüedad colgante»

Tabla de símbolos en el compilador

Requisito previo: fases de un compilador  La tabla de símbolos es una estructura de datos importante creada y mantenida por el compilador para realizar un seguimiento de la semántica de las variables, es decir, almacena información sobre el alcance e información vinculante sobre nombres, información sobre instancias de varias entidades, como nombres de variables y … Continue reading «Tabla de símbolos en el compilador»