Analizador de descenso recursivo – Part 1

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 – Part 1»

Programa YACC para implementar una Calculadora y reconocer una expresión Aritmética válida

Problema: Programa YACC para implementar una Calculadora y reconocer una expresión Aritmética válida. 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 se representa en minúsculas, … Continue reading «Programa YACC para implementar una Calculadora y reconocer una expresión Aritmética válida»

Diferencia entre el análisis de arriba hacia abajo y el análisis de abajo hacia arriba

Hay 2 tipos de técnicas de análisis presentes en el análisis, el primero es el análisis de arriba hacia abajo y el segundo es el análisis de abajo hacia arriba . El análisis de arriba hacia abajo es una técnica de análisis que primero mira el nivel más alto del árbol de análisis y trabaja … Continue reading «Diferencia entre el análisis de arriba hacia abajo y el análisis de abajo hacia arriba»

Programa Lex para aceptar strings que comienzan con vocal

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 aceptar strings que comienzan con vocal»

Técnicas de optimización de bucles | conjunto 2

Requisito previo: optimización de bucles | Serie 1 1. Loop Fission: mejora la localidad de referencia: en esto, un bucle se divide en múltiples bucles sobre el mismo rango de índice, pero cada nuevo bucle contiene solo una parte específica del cuerpo del bucle original. Esto puede mejorar la localidad de referencia. Antes de la … Continue reading «Técnicas de optimización de bucles | conjunto 2»

Comprobación de tipos en el diseño del compilador

La verificación de tipos es el proceso de verificar y hacer cumplir las restricciones de tipos en los valores. Un compilador debe verificar que el programa fuente siga las convenciones sintácticas y semánticas del lenguaje fuente y también debe verificar las reglas de tipo del lenguaje. Permite al programador limitar qué tipos se pueden usar … Continue reading «Comprobación de tipos en el diseño del compilador»

Aplicaciones de la tecnología de compilación

Un compilador es una pieza de software que traduce el código fuente del lenguaje de programación de alto nivel en código de máquina. Traduce el código escrito en un lenguaje de programación a otro sin cambiar su significado. Además, el compilador optimiza el código final para el rendimiento y el uso de la memoria. Aplicaciones … Continue reading «Aplicaciones de la tecnología de compilación»

Detección de errores y recuperación en el compilador

En esta fase de compilación, todos los posibles errores cometidos por el usuario son detectados y notificados al usuario en forma de mensajes de error. Este proceso de localizar errores e informarlos a los usuarios se denomina proceso de gestión de errores .  Funciones de un controlador de errores. Detección Informes Recuperación Clasificación de errores … Continue reading «Detección de errores y recuperación en el compilador»

Clasificación de gramáticas libres de contexto

L as gramáticas libres de contexto ( CFG ) se pueden clasificar en función de las siguientes dos propiedades: 1) Basado en el número de strings que genera. Si CFG genera un número finito de strings, entonces CFG es no recursivo (o se dice que la gramática es no recursiva) Si CFG puede generar un … Continue reading «Clasificación de gramáticas libres de contexto»

¿Qué es la recuperación de errores?

Recuperación de errores: este es un proceso que toma medidas contra el error para obtener las reducciones de efectos negativos tanto como sea posible, también conocida como la capacidad del compilador en la que toma medidas y reanuda el análisis después de tomar una acción sobre el error sintáctico si es necesario. Cuando hablamos de … Continue reading «¿Qué es la recuperación de errores?»