Estrategias de recuperación de errores en el diseño del compilador

El error puede ocurrir en varios niveles de compilación, por lo que el manejo de errores es importante para la correcta ejecución del código. Existen principalmente cinco estrategias de recuperación de errores, que son las siguientes: modo pánico Recuperación de nivel de fase Producción de errores Corrección global Tabla de símbolos Modo de pánico: Esta … Continue reading «Estrategias de recuperación de errores en el diseño del compilador»

Error de punto flotante en Python

Como es saber eso 1.2 – 1.0 = 0.2. Pero cuando intentas hacer lo mismo en python, te sorprenderán los resultados: >>> 1.2 – 1.0 Producción: 0.199999999999999996 Esto puede considerarse un error en Python, pero no lo es. Esto tiene poco que ver con Python y mucho más con la forma en que la plataforma … Continue reading «Error de punto flotante en Python»

De abajo hacia arriba o Desplazamiento Reducir analizadores | conjunto 2 – Part 1

En este artículo, estamos discutiendo el analizador Bottom Up. Analizadores Bottom Up / Shift Reduce Parsers Cree el árbol de análisis desde las hojas hasta la raíz. El análisis de abajo hacia arriba se puede definir como un intento de reducir la string de entrada w al símbolo de inicio de la gramática al rastrear … Continue reading «De abajo hacia arriba o Desplazamiento Reducir analizadores | conjunto 2 – Part 1»

Programa Lex para encontrar si un carácter aparte del alfabeto aparece en una string

Lexes 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 ./a.out Problema: escriba un … Continue reading «Programa Lex para encontrar si un carácter aparte del alfabeto aparece en una string»

Optimización de código independiente de la máquina en el diseño del compilador

La optimización de código independiente de la máquina intenta hacer que el código intermedio sea más eficiente al transformar una sección de código que no involucra componentes de hardware como registros de CPU o cualquier ubicación de memoria absoluta. Generalmente, optimiza el código eliminando redundancias, reduciendo el número de líneas en el código, eliminando el … Continue reading «Optimización de código independiente de la máquina en el diseño del compilador»

Programa Lex para copiar el contenido de un archivo a otro archivo

Problema: dado un archivo de texto como entrada, la tarea es copiar el contenido del archivo dado a otro archivo. 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 … Continue reading «Programa Lex para copiar el contenido de un archivo a otro archivo»

Análisis | Conjunto 1 (Introducción, Ambigüedad y Analizadores)

En este artículo, estudiaremos varios tipos de análisis. Es uno de los temas más importantes en Compiler desde el punto de vista de GATE. El funcionamiento de varios analizadores se explicará desde el punto de vista de resolución de preguntas GATE. Requisito previo : conocimiento básico de gramáticas, árboles de análisis, ambigüedad.   Rol del analizador: En … Continue reading «Análisis | Conjunto 1 (Introducción, Ambigüedad y Analizadores)»

¿Por qué PRIMERO y SEGUIR en Compiler Design?

¿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?»

Analizador de descenso recursivo

Requisito previo: construcción de la tabla de análisis LL(1) , clasificación de analizadores de arriba hacia abajo  El análisis es el proceso para determinar si el símbolo de inicio puede derivar el programa o no. Si el análisis tiene éxito, entonces el programa es un programa válido; de lo contrario, el programa no es válido. En … Continue reading «Analizador de descenso recursivo»

Diferencia entre el enlace de direcciones de tiempo de carga y tiempo de ejecución

Requisito previo: métodos de vinculación de direcciones La vinculación de direcciones es la asociación de instrucciones y datos del programa a la ubicación de memoria física real. Hay varios tipos de enlaces de direcciones en el sistema operativo. Hay 3 tipos de enlace de dirección: Enlace de dirección de tiempo de compilación Enlace de dirección … Continue reading «Diferencia entre el enlace de direcciones de tiempo de carga y tiempo de ejecución»