Fundamentos de Compiladores y Procesamiento de Lenguajes de Programación

Clasificado en Informática

Escrito el en español con un tamaño de 3,65 KB

Introducción a los Compiladores e Intérpretes

  • Compilador: Es un programa que recibe código fuente y genera como salida un conjunto de instrucciones escritas en el lenguaje binario.
  • Diferencia entre compilador e intérprete:
    • Compilador: Analiza el programa fuente y lo traduce a otro equivalente escrito en lenguaje máquina.
    • Intérprete: Analiza el programa fuente y lo ejecuta directamente sin generar ningún otro código.
  • Ventajas de compilador e intérprete:
    • Intérprete: Facilita la búsqueda de errores.
    • Compilador: Entrega programas más rápidos y eficientes.
  • Compilador source-to-source: Es un tipo de compilador que toma el código fuente de un lenguaje y entrega código en otro lenguaje.

Procesos de Traducción y Ensamblado

Tareas de un Ensamblador

Un ensamblador necesita realizar, entre otras, las siguientes tareas:

  • Convertir los códigos a su código equivalente.
  • Convertir operandos simbólicos en las direcciones correspondientes.
  • Construir las instrucciones finales.

Fases del Proceso de Compilación (Tabla del Analizador)

El flujo de procesamiento de un programa sigue esta secuencia:

  1. Programa fuente con directivas.
  2. Preprocesador.
  3. Programa fuente.
  4. Analizador léxico.
  5. Analizador sintáctico.
  6. Analizador semántico.
  7. Generador de código.
  8. Optimización.

Durante este proceso, se interactúa de forma transversal con:

  • Lado izquierdo: Tabla de símbolos.
  • Lado derecho: Manejador de errores.

Análisis de Código y Componentes Léxicos

  • Código fuente: Es un conjunto de instrucciones de líneas de texto que representan las órdenes que debe seguir la computadora.
  • Analizador léxico: Lee el código fuente, carácter a carácter, y construye a partir de este unas entidades primarias llamadas tokens e identifica a todos los que se encuentran.
  • Componentes léxicos: Conjunto de cadenas de entrada que produce como salida el mismo componente léxico.
  • Token: Símbolo abstracto que representa a un tipo de unidad léxica.
  • Patrón: Descripción de la forma que pueden tomar los lexemas de un token.
  • Lexema: Secuencia de caracteres en el programa fuente que coincide con el patrón para un token y que el analizador léxico identifica como parte de ese token.
  • No determinista: Significa que, en un estado, se puede dar el caso de tener más de una transición para el mismo símbolo de entrada.

Análisis Sintáctico, Semántico y Herramientas

  • Análisis semántico: Utiliza el árbol sintáctico para comprobar restricciones de tipo de dato y otras limitaciones semánticas.
  • Análisis sintáctico: Su función es comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática y generar el árbol sintáctico.
  • Gramática: Son especificaciones sintácticas precisas de un lenguaje.
  • Yacc: Es una herramienta diseñada para generar analizadores sintácticos de manera automática.

Entradas relacionadas: