¿Por qué PRIMERO y SEGUIR en Compiler Design? – Part 1

¿Por qué PRIMERO? Vimos la necesidad de retroceder en el artículo anterior de Introducción al análisis de sintaxis, que es realmente un proceso complejo de implementar. Puede haber una manera más fácil de resolver este problema: Si el compilador hubiera llegado a saber de antemano cuál es el «primer carácter de la string que se … Continue reading «¿Por qué PRIMERO y SEGUIR en Compiler Design? – Part 1»

Optimización de código en el diseño del compilador – Part 1

La optimización de código en la fase de síntesis es una técnica de transformación de programas, que trata de mejorar el código intermedio haciéndolo consumir menos recursos (es decir, CPU, memoria) para que resulte un código de máquina de ejecución más rápida. El proceso de optimización del compilador debe cumplir los siguientes objetivos: La optimización … Continue reading «Optimización de código en el diseño del compilador – Part 1»

Diferencias entre atributos sintetizados y heredados

En la definición dirigida por la sintaxis , se utilizan dos atributos, uno es un atributo sintetizado y otro es un atributo heredado. Se dice que un atributo es un atributo sintetizado si su valor de Node de árbol de análisis está determinado por el valor de atributo en los Nodes secundarios, mientras que se … Continue reading «Diferencias entre atributos sintetizados y heredados»

Introducción a los intérpretes

Requisito previo: ensamblador, compilador e intérprete Todos los lenguajes de alto nivel deben convertirse a código de máquina para que la computadora pueda entender el programa después de tomar las entradas requeridas. El software mediante el cual se realiza la conversión de las instrucciones de alto nivel línea por línea a un lenguaje de nivel … Continue reading «Introducción a los intérpretes»

Analizadores SLR, CLR y LALR | conjunto 3

En este artículo, estamos discutiendo el analizador SLR, el analizador CLR y el analizador LALR, que son las partes del analizador Bottom Up. Analizador SLR El analizador SLR es similar al analizador LR(0) excepto por la entrada reducida. Las producciones reducidas se escriben únicamente en el SEGUIMIENTO de la variable cuya producción se reduce. Construcción de la … Continue reading «Analizadores SLR, CLR y LALR | conjunto 3»

Introducción al análisis léxico

El análisis léxico es la primera fase del compilador, también conocido como escáner. Convierte el programa de entrada de alto nivel en una secuencia de tokens . El análisis léxico se puede implementar con los autómatas finitos deterministas . El resultado es una secuencia de tokens que se envía al analizador para el análisis de … Continue reading «Introducción al análisis léxico»

Búfer de entrada en el diseño del compilador

El analizador léxico escanea la entrada de izquierda a derecha, un carácter a la vez. Utiliza dos punteros begin ptr( bp ) y forward para realizar un seguimiento del puntero de la entrada escaneada. Inicialmente, ambos punteros apuntan al primer carácter de la string de entrada, como se muestra a continuación. El ptr de avance … Continue reading «Búfer de entrada en el diseño del compilador»

Diferencia entre el compilador nativo y el compilador cruzado

1. Compilador nativo: los compiladores nativos son compiladores que generan código para la misma plataforma en la que se ejecuta. Convierte lenguaje alto en el idioma nativo de la computadora. Por ejemplo, compilador Turbo C o GCC 2. Compilador cruzado: un compilador cruzado es un compilador que genera código ejecutable para una plataforma diferente a … Continue reading «Diferencia entre el compilador nativo y el compilador cruzado»

Analizando gramáticas ambiguas utilizando el analizador LR

El analizador LR se puede utilizar para analizar gramáticas ambiguas. El analizador LR resuelve los conflictos (cambiar/reducir o reducir/reducir) en la tabla de análisis de gramáticas ambiguas en función de ciertas reglas (precedencia y/o asociatividad de operadores) de la gramática.  Ejemplo:  Tomemos la siguiente gramática ambigua:   E -> E+E E -> E*E E -> id … Continue reading «Analizando gramáticas ambiguas utilizando el analizador LR»

Programa Lex para comprobar si un año es bisiesto o no

Problema: Escriba un programa Lex para comprobar si un año es bisiesto o no. Explicación: Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en … Continue reading «Programa Lex para comprobar si un año es bisiesto o no»