Diferencia entre GCC y G++

GCC significa GNU Compiler Collections, que se utiliza para compilar principalmente lenguaje C y C++. También se puede utilizar para compilar Objective C y Objective C++. La opción más importante requerida al compilar un archivo de código fuente es el nombre del programa fuente, el resto de cada argumento es opcional, como una advertencia, depuración, … Continue reading «Diferencia entre GCC y G++»

Generación de código intermedio en el diseño del compilador

En el modelo de análisis-síntesis de un compilador, el front-end de un compilador traduce un programa fuente en un código intermedio independiente, luego el back-end del compilador usa este código intermedio para generar el código de destino (que puede ser entendido por la máquina). ). Los beneficios de usar código intermedio independiente de la máquina … Continue reading «Generación de código intermedio en el diseño del compilador»

Programa YACC para reconocer strings con gramática { anbn | n≥0 }

Problema: escribir un programa YACC para reconocer strings con gramática { a n b n | n≥0}. Explicación: Yacc (por «otro compilador compilador más») 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 … Continue reading «Programa YACC para reconocer strings con gramática { anbn | n≥0 }»

Programa Lex para eliminar comentarios del programa C

Lex es un programa informático que genera analizadores léxicos. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C. Los comandos para ejecutar el programa lex son: lex abc.l (abc is the file name) cc lex.yy.c -efl ./a.out Veamos … Continue reading «Programa Lex para eliminar comentarios del programa C»

Algoritmo para análisis predictivo no recursivo

Requisito previo: clasificación de analizadores de arriba hacia abajo El  análisis predictivo es una forma especial de análisis descendente recursivo, donde no se requiere retroceso, por lo que puede predecir qué productos usar para reemplazar la string de entrada. El análisis sintáctico predictivo no recursivo o basado en tablas también se conoce como analizador LL(1). Este … Continue reading «Algoritmo para análisis predictivo no recursivo»

Análisis de flujo de datos en Compiler

Es el análisis de flujo de datos en el gráfico de flujo de control, es decir, el análisis que determina la información sobre la definición y el uso de datos en el programa. Con la ayuda de este análisis, se puede realizar la optimización. En general, su proceso en el que los valores se calculan … Continue reading «Análisis de flujo de datos en Compiler»

Programa Lex para tomar entradas del archivo y eliminar múltiples espacios, líneas y tabulaciones

FLEX (Fast Lexical Analyzer Generator) es una herramienta/programa de computadora para generar analizadores léxicos (escáneres o lexers) escrito por Vern Paxson en C alrededor de 1987. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el C lenguaje de programación. La función yylex() … Continue reading «Programa Lex para tomar entradas del archivo y eliminar múltiples espacios, líneas y tabulaciones»

Registros de activación

En este artículo, vamos a explicar los enlaces de acceso y los enlaces de control. Bueno, ambos están en el campo de los Registros de Activación . Registro de Activación : Un registro de activación es un bloque contiguo de almacenamiento que administra información requerida por una sola ejecución de un procedimiento. Cuando ingresa a un … Continue reading «Registros de activación»

Necesidad de código intermedio y optimización de código

Código intermedio : el código intermedio es un código independiente de la máquina, pero está cerca de la instrucción de la máquina. Árbol de sintaxis, notación Postfix, código de 3 direcciones, DAG se puede utilizar como lenguaje intermedio. Necesidad de código intermedio: Supongamos que tenemos x no del idioma de origen e y no del … Continue reading «Necesidad de código intermedio y optimización de código»

Entendiendo Typecasting como un compilador

Comencemos nuestra discusión con unas pocas líneas de C :  C #include <stdio.h>    int main() {        int x = 97;     char ch = x;     printf(«The value of %d in character form is ‘%c'»,x, ch);     return 0; } Producción :  The value of 97 in character form is ‘a’ Entendamos cómo el compilador va … Continue reading «Entendiendo Typecasting como un compilador»